14 ms·
Programming is not math?
- dictum 12y ago> You see, Mei’s fundamental misconception is that the kind of applications that we haven’t yet automated and modularized constitutes what programming is all about. Please forgive me if I'm making the most heretical question possible, but once we reach the level of software sophistication the author hints at ("how to automate the translation of drawn sketches to good HTML and CSS") wouldn't software also be able to create and analyze mathematical theory ("conjecture, proof, and building theories")?
- saraid216 12y ago> wouldn't software also be able to create and analyze mathematical theory ("conjecture, proof, and building theories")? Already happening.
- pjmorris 12y agoe.g. Douglas Lenat's Automated Mathematician [1]... there are probably newer, better examples. [1] http://en.wikipedia.org/wiki/Automated_Mathematician http://en.wikipedia.org/wiki/Automated_Mathematician
- wordplay 12y agoI'm interested in where this is going. Do you have a citation?
- deleted 12y ago[deleted]
- john_b 12y agohttp://en.wikipedia.org/wiki/Automated_theorem_proving http://en.wikipedia.org/wiki/Automated_theorem_proving
- mamcx 12y agoI think, that despite this be a good rebutal, it show exactly why the first article. When try to justify why programing is math then it focus in the kind of task that benefit a lot for it, then dismiss "the kind of applications that we haven’t yet automate". In real life, even in math-heavy task, the dominate factor is doing that kind of stuff. The problem that people that say "please, programming is not math!" is get rid of the elitistic mindset where if not good at math, then worse at programming, and dismiss the importance of other kind of knwoledge (art, writing, other domains, etc). Math is a part, but is not the whole. This is the message.
- zorpner 12y agoAll of this discussion, quite possibly because so much of the initial conversation happened on twitter, embeds a lot of assumptions into the words used that seems to result in a lot of people talking past each other. There's "programming" that's a single person essentially performing research-level mathematics; there's "programming" that's a thousand people writing to a spec without considering anything about the structure or complexity of their code. Programming is obviously not just math, nor is it no math. If you become defensive when someone says "programming isn't math" or when someone asserts that it is, you're failing to think critically about the both words they're using and about the assumptions you're making. Disclaimer: I have a degree in mathematics, and I'm a programmer. I can't think of the last time I used anything from my college years directly in programming itself, but I attribute a lot about the way I code and think about problems in general to having a mathematical background.
- coder23 12y agoWhat area of programming are you in? There is a lot of math I don't understand because I don't have the background, and I wish I could. Differential equations and fft come to mind.
- deleted 12y ago[deleted]
- srean 12y agoThe discrete version of fast Fourier transform essentially does a matrix vector multiply faster than usual. If you are not familiar with matrix vector multiply, then think lots of multiplications and additions. Now, what fast Fourier transform does is take advantage of the fact xy + xz = x(y+z) that we know form mid school algebra. Note the right hand side has fewer operations to perform. The other thing that FFT uses is symmetry. It recognizes that two things that it needs to compute are really the same in value, so it computes it only once. You can understand FFT without much deep math, it is just clever use of these two properties. Study it, you will really enjoy that cleverness. It is one of those algorithms that still makes me break out into a grin. That said FFT can get more mathematically involved when you want to compute them on vectors whose lengths are not powers of two. Then it gets into primality, Chinese remainder theorem etc. However, for basic understanding and coding it you need none of these. EDIT: I would say dont get lost in the details, those butterfly diagrams etc. Just focus on what is the key idea that it is exploiting. There are essentially just two ideas: ditributivity: xy + xz = x(y+z) and symmetry/associativity. May be a good idea is to sit down and derive a different way to group the multiply and adds, using those properties, to make it go fast. Dont worry if that does not beat the best algorithms out there. You will just get a better feel for the underlying mechanism.
- kasperset 12y agoMathematical background helps in programming. It is not absolutely necessary but personally I do not know any Programmer who was good at Mathematics and failed really badly in programming.
- avmich 12y agoIt was well said "programming is one of the most complex branches of applied mathematics". I didn't check the exact quote :) .
- MilnerRoute 12y agoDoes this have anything to do with the female vs male perspective on programming? Maybe programming can be actually approached with different mindsets -- and it's not a case of either/or....
- zxcdw 12y agoLet me copy part of my comment to another submission: Different people view programming very differently. For example for me programming is mainly a way to understand things. I program things I want to learn about. My understanding of programming helps me understand computers and computing. Then I have a friend who couldn't care less about how exactly things work under the hood, or in theory. All he cares about is making a product, and programming is his tool. I think this is one of the main distinctions. Some are motivated by curiosity and love of tinkering with the machine and see it all as a playfield with toys, while some others are motivated by the opportunities to build things and make money out of it, seeing it all as a tool and material. I am not saying this is the dichotomy or that one even exists, but it illustrates that "programmer" doesn't really say all that much. We're a broad and varying bunch!
- vorg 12y ago> We're a broad and varying bunch You might not want to self-identify too much with those who "couldn't care less about how exactly things work under the hood". When you've spend the best part of a day carefully explaining how NOT (a OR b) is the same as (NOT a) AND (NOT b) to the "programmer" at the next desk who got his job because someone else of the same gender and ethnicity filled in for him at the aptitude test, you'll quickly curse how HR people turn a blind eye to closely checking such stuff so they can meet their hiring quotas. It's not even inconceivable that someone like this has conned their way into running open source software projects, perhaps even project managing a "Top 50" programming language!
- jiggy2011 12y agoHere is an interview with John Carmack where he shares his opinion on the importance of math in game engine programming which is one of the math heavier areas of programming. It's the first question asked so you don't need to skip ahead. http://www.youtube.com/watch?v=hapCuhAs1nA http://www.youtube.com/watch?v=hapCuhAs1nA
- MichaelGG 12y agoInteresting! He says he got by mostly with high school math. That analytical solutions are used more in physics simulations. But that in general if you time slice enough, simple approaches work well enough. When I was 10, I had the opposite reaction. I started writing a game, but having a busy loop just constantly figuring out inputs and updating state seemed so ugly, I gave up, figuring I obviously lacked some knowledge. After all, I couldn't write a space invaders game without "brute forcing" it. Later when I found out that's actually how pros do it, I was really disappointed.
- jiggy2011 12y agoWouldn't the loop sleep between frames?
- MichaelGG 12y agoGW-BASIC in 89 or so. I don't think you could sleep. And I didn't have much of a concept of frame either. I just thought frames were arbitrary decisions in time to look at the exact state of the world and show it. Like, that you had a bunch of equations that told you where objects would be at any given time, and when they'd do something interesting (like collide). So naturally my little loop felt stupid and I figured once I went to high school or university they'd tell me what I was missing (hah!). Had I known that everyone else was just making up approximations, and that a lot of things don't even have analytical solutions would have been nice to know.
- tluyben2 12y agoThose days your CPU would be doing mostly 1 thing, like run your game, so the concept of sleep wasn't needed and actually, usually you didn't have time to sleep even if you could, you would need every cycle to do calculations. To make life a bit easier and by using C/asm, you could offload something like game music by setting an interrupt vector so it would keep playing nicely without you doing all kinds of timing madness. I was using a lot more math back then than now; there are libraries for everything and they hide the math for you. You could find physic approximations (very rough! it only had to look plausible, not realistic) in books and BBSs BUT you could never just use them as you didn't have enough cycles for that, you needed to rewrite them to fit your purpose otherwise your software would be unusably slow.
- jobu 12y ago"One big reason that mathematics is much more like language than programming, is that doing mathematics involves resolving ambiguities. In programming you have a compiler/interpreter that just dictates how an ambiguity resolves. But in mathematics, as in real language, you have to resolve them yourself based on context." Along this line, I recently noticed how similar legal contracts to programming. One partner contract I had to read over looked very much like a huge if/elseif statement, and the definitions section looked a lot like setting up variables. After reading this article it seems the similarities between legaleze and math proofs are pretty strong as well. I wonder if anyone has ever tried to process legal documents or laws with mathematical formulas to try finding loopholes.
- avmich 12y agoLoopholes is when you find something unforeseen by the law. I vaguely remember the opposite problem - having different laws stating different things about the same situation. This might be a problem by laws. As for math, there is inconsistency robustness topic of research.
- jleader 12y agoI remember reading "The British Nationality Act as a logic program" (http://www.researchgate.net/publication/234805335_The_British_Nationality_Act_as_a_logic_program http://www.researchgate.net/publication/234805335_The_Britis...) in CACM a long time ago; the "cited in" list seems to be a good place to look for subsequent efforts.
- alex_duf 12y agoProgramming is like writing a recipe. That includes a little bit of math if you want, but not necessarily.
- halayli 12y agoIt depends what you are programming. It's like saying, writing is not poetry.
- agumonkey 12y agoYeah but no one likes to read spaghetti saga. We like our microprose to fit in a few feet.
- lazyant 12y agoBefore there were Computer Science university schools, programming was taught at Math, Physics and Engineering schools (like the mentioned FORTRAN), it wasn't taught (still isn't) in language schools. There's some relationship between math and programming, and in any case math can be seen as a language as well.
- comrade1 12y agoI think the author is confusing mathematics and logic, as is the referenced blogger.
- pjmorris 12y agoHow would you distinguish mathematics from logic? Some very smart people [1] have thought they were deeply related. [1] http://en.wikipedia.org/wiki/Principia_Mathematica http://en.wikipedia.org/wiki/Principia_Mathematica
- comrade1 12y agoMathematics is a specific application of logic. Programming in general is closer to logic than math. But there is certainly a large set of programming that is mathematics-dependent (see above threads of people doing engineering programming). Edit: application vs extension of logic.
- terminado 12y agoFuck no, programming in not math. I learned that the hard way, when I tried to take college level calculus as a refresher, after years of neglecting my basic algebra, and assumed that my interim programming experience would be sufficient to tide me over. The notation is similar, but mathematics is much more rigid in terms of correct results, and is sprinkled with a completely different body of vocabulary, history, facts and trivia, which may selectively overlap and intersect with computer science, but often times not with perfect analogies or exact synonyms. Not to mention that programming is often accomplished using products distributed by large for-profit companies that have been tailored to maximize convenience for the end-user, which in many cases might be a paying customer, or a large, vocal client community that is deeply intolerant of defects and anti-patterns. Math may be assisted by tools, but the tools are often times fraught with limitations that demand careful and sometimes creative application to a given problem.
- Dewie 12y ago> Fuck no, programming in not math. I learned that the hard way, when I tried to take college level calculus as a refresher, after years of neglecting my basic algebra, and assumed that my interim programming experience would be sufficient to tide me over. Calculus is a discipline that many think is not very applicable to the art and practice of programming itself. "Programming is math" does not mean to imply "programming is any and all kinds of math".
- terminado 12y agoSo, I definitely felt as if I were familiarized with some of the very basic, generalized concepts I would need to pass the mid-terms and final exams, but when push came to shove, the only real parallel that was a direct one-to-one translation was the piecewise-defined function. The rest of the class was still quite the steep climb.
- hcarvalhoalves 12y ago> The notation is similar Not at all. Math notation is ad-hoc and not necessarily consistent. It's just a communication tool. A programming language on the other hand has to be consistent if you want a machine to parse.
- john_b 12y agoI write software that runs on various jet engines. There is a lot of software that goes onto a modern commercial engine, but the general theme of the software I focus on is the modeling of the underlying engine dynamics using sensor data. It's very math- and physics-based. A thorough knowledge of linear algebra, signal processing, regressions, and clustering/neural network algorithms is essential, among other things. It's not the kind of environment where typical startup aphorisms apply ("fail fast, fail often", "don't be afraid to pivot", etc). So every month or so when another "programmers don't need to know math" article comes out, usually written by a web programmer, I have an impulse to represent the other side of the divide, but I usually find so many misconceptions and poor assumptions in the original article that I conclude it's too much work. So I am glad that the author has done the job for me here. What I have observed, again anecdotally, is that web programmers are generally more vocal about programming than systems programmers and scientific programmers. It makes sense in the historical context of the internet, but I don't think that this bias is properly accounted for when people on Twitter/HN/etc discuss "programming" and what it requires. I don't think it should be controversial that programming is founded upon the study formal languages, mathematics in particular. So even if you don't need math to do your programming work on a day to day basis, it's because a lot of very smart people have solved some very difficult math and language problems over the decades so that you have the luxury of ignoring the mathematics your code relies on. This is all ok. But the implicit hostility towards mathematics that a lot of these articles demonstrate really makes me concerned about the influence it will have on the next generation of programmers. Moore's Law has allowed a certain level of indifference to mathematics in the past few decades since you could always throw a newer processor and more memory at a problem, rather than solving it via a better algorithm. But that situation won't last forever.
- srean 12y agoYou make a good point, and it worries me somewhat. It manifests itself not just in discussion about math, but also in discussions about fast runtimes, discussions about algorithms, discussions about data structures. There is a lot of vocal self reinforcement of the ideas that speed matters little, algorithms matters little, data structures matter little. The situation reminds me of an aphorism. I am sure there would equivalents of this story in other cultures. The story behind the aphorism goes like this: A worldly wise frog visits his friend, a frog in a well. The frog of the well wants to know how big the world is, and proceeds to ask questions by jumping over increasing fractions of the diameter of the well, and asking "is it this big ?". About the point where the frog jumps from the sides to the center of the well, the frog proclaims now if you say the world is bigger than this you are just bullshitting me. I see this a lot in CRUD programmers, just because they havent found a way to exploit some algorithms they think these are universally useless. Not only that, influenced by these oft repeated lines, they do not even try to find an use that would make their code more efficient. Some are more radical and propose that these topics should not be taught in CS courses. Redis is proof that CRUD can benefit from all these. Similarly, I have also seen many compute oriented programmers think CRUD is trivial. In which case I would just slide the keyboard towards them and ask them to write something that scales, is performant in terms of speed and latency, is robust and frugal with hardware resources.
- seanflyon 12y agoThis discussion is lacking an agreed upon definition of Mathematics.
- AnimalMuppet 12y agoIt's also lacking an agreed upon definition of programming. It's even lacking an agreed upon definition if "is". (No, I'm not trying to go Bill Clinton on you. In this discussion, what do you mean by "is"? Do you mean "identical to, equals"? Or do you mean "part of, a subset of"? If you mean identical, do you mean identical in all respects, or just in some respects? If so, in which ones?)
- marvy 12y agogood point
- martinvol 12y agoFrom my personal experience they are related, but I can tell for sure they are very different. U think this confusion exist because many famous computer sciences studied math or were also mathematicians. From my personal experience, I passes all my CS courses in college without much effort but I struggled with calculus, statistics and algebra classes. So I think even the mindset you need to understand them are very different.
- jdreaver 12y agoI got a programming job where I rely heavily on my mechanical engineering background. For much of the day, I am programming in Python and C doing user interface work, web programming, and optimizing numerical algorithms. However, I also get to study and use solid mechanics, the finite element method, fluid mechanics, etc. In the engineering world, a lot of entry level jobs require just a pocket calculator and a book full of standards and codes. I would hate to have wasted all that time in school learning advanced math not to be able to use it! There are a lot of ways to apply math in your programming simply through how math makes you think. Studying math revitalizes the programming part of my brain, and allows me to attack problems from new angles. This (highly opinionated) quote [1] from Zed Shaw inspired me to pursue a career that leverages applied math and physics, as well as programming: > Programming as a profession is only moderately interesting. It can be a good job, but you could make about the same money and be happier running a fast food joint. You're much better off using code as your secret weapon in another profession. > People who can code in the world of technology companies are a dime a dozen and get no respect. People who can code in biology, medicine, government, sociology, physics, history, and mathematics are respected and can do amazing things to advance those disciplines. [1] http://learnpythonthehardway.org/book/advice.html http://learnpythonthehardway.org/book/advice.html
- alien3d 12y agoIm also mechanical background.the reason i involve programing because wanted to build something like ( statical process control(spc))..now building own accounting instead.math is a must in accounting system like rule 78,calculate irr ,calculate depreciation..
- Tinned_Tuna 12y agoI agree, programming is not mathematics, however, the author seems to have mixed up the act of calculation and mathematics. Bering a good human calculator is unlikely to result in stellar programs. Having a good grasp of how to arrange and communicate your ideas, as is required in mathematics, will help your programming hugely. Yes, there's a large gap between what is acceptable in mathematics and what's acceptable in programming, and the types of problems you're likely to encounter, but fundamentally, you'll be communicating ideas to other people and to your compiler. Source: Computer Science and Mathematics degree, now working as a researcher.
- orwhat 12y agoAs a web developer with degrees in both math and programming, I sometimes find direct applications of math, such as backing off from updating something on the page exponentially when the user goes AFK, or more commonly, when working with visualizations (see d3.js). For the most part, my peers without much of a math background could solve the same problems in other ways. For more graphics-oriented stuff it gets a little harder but often a library plus a tutorial blog post gets the job done.
- gkop 12y agoThis whole debate is a mess of definitions and taxonomy. If you define math as algebra/geometry/calculus/etc., obviously programming isn't all that tightly associated with math. But programming is mathematical logic, which is a subset of math, so programming is math... right? Well, except logic itself is a subset of philosophy. So programming is philosophy now as much as it is math? And what about this argument that programming is language, it's got some good points, how does that fit into all this? Incidentally, some visible members of the "programming isn't math" camp are discouraging others from emphasizing the connection between math and programming so as not to intimidate young women away from taking an interest in programming. Folks, this position only validates the stereotype that women are not good at or interested in math.
- walshemj 12y agoAnd of course relation databases are an application of set theory.
- calebm 12y agoThe truth lies in the happy median: math is absolutely necessary for some programming applications, and helpful in the others - being able to distill a problem into easy-to-reason-about abstractions is helpful in any domain of programming, but a certain level of abstract thinking can be attained without formal mathematics.
- laureny 12y agoEveryone will have a different take on this based on the kind of software they write. The bottom line is that math is pervasive at all levels of software engineering but it impacts developers in different ways. If you write video games or any other graphic related application, or if you work on jet engines or modelization or industrial engineering, you are obviously immersed in math on a daily basis. If you write servlets on a Java backend, you are probably not required to be as much versed in math, physics or chemistry. Still, no matter how close to mathematics the software you write runs on, the bottom line is that you are using a programming language to do so, and all languages are rooted to various extents into math. Some are very closely connected, and sometimes based on, specific mathematical fields (e.g. Haskell and Category theory) while others are more loosely based on such principles. I find that just like you don't need to know how an engine works in order to drive a car, you don't need to know a lot of math to be a decent developer, but it certainly doesn't hurt to read up on some of the theoretical foundations that underlie all of computer science.
- AnimalMuppet 12y agoProgramming is math, in that (at least at some level), a program is formally equivalent to a math problem. Programming is not math, in that most of the time, when I'm programming, I'm not thinking about it at all like a math problem, even if I do some formal reasoning about some aspects of the program. (Maybe here's where it shows that I'm not a Haskell programmer.) So: Yes? No? Depends on what level you're looking at it on. This becomes one of those discussions that's really pointless because it turns on the definitions of the terms involved, and just winds up wasting peoples' time.
- saint-loup 12y ago>>> I'm not thinking about it at all like a math problem The thing is, not even a mathematicien thinks always about math that way. In mathematics, one needd to distinguish between a phase of exploration, where you work along a fuzzy, intuitive process, and a phase of justification, where one try to prove one's conjectures. The second part is math-as-a-formal-system, the cliché of mathematics. So it's not a problem of definition, it's a matter of accepting mathematics as a complex process, practiced in various ways and different for each mathematician.
- GmeSalazar 12y ago"Large amounts of effort are spent on tedious tasks in industry for no reason other than that we haven’t figured out how to automate them yet. And novel automations of tedious tasks involve interesting mathematics by rule, not exception." Not closely related to the article's subject, but nevertheless a good point, it's one of the reasons I consider academia to be a good place to be. At least for those at the 'top' of the pyramid...
- mtalantikite 12y ago"Propositions as Types" by Wadler is a great introductory history of the interconnectedness between logic systems and programming languages: http://homepages.inf.ed.ac.uk/wadler/papers/propositions-as-types/propositions-as-types.pdf http://homepages.inf.ed.ac.uk/wadler/papers/propositions-as-...
- reader5000 12y agoThe popular understanding of "math" very much is "performing the correct sequence of calculations/manipulations to solve a given problem". This is because US math is taught this way, from addition of fractions to symbolic differentiation of functions in high school. Most people never grok that math is really about building abstractions of various levels of sophistication and saying (proving) useful/interesting things about those abstractions. Programming fits more with the latter notion. Even web programming: we have abstractions like user interface, color theme, database table, scripts, etc. The web programmer has to construct these abstractions and then do useful things with them. I would agree that programming and math are cognitively very similar, and both very similar to using language. However, I also understand why programmers may like programming yet "hate math". It's because their understanding of math is derived from US standard math education, which is essentially about the memorization of symbolic procedures, with very little constructive abstraction happening.
- xname 12y agoObviously, many comments confused with the following two: Programming involves math != Programming is math For example, john_b's comment confuses the use of math in programming with programming per se.
- pgcosta 12y agoThat is the problem: programming should be math. If we view programming as metaphysical, we can never hope to build good software. That will change in the future. I don't believe that 50 years from now we will be still writing code to fly a plane or run a web app, and questioning ourselves: will it run? will it crash? Does the code does what it is supposed to do? Do these two functions do the same thing? Certainly as time goes on, programming will be ever more a well defined formal system, so much that big parts of development will just be auto-coded(by machine). That is why functional languages are so good. They are very close to mathematics, and allow us to build formal systems on top of them, that remove any ambiguity that might exist. And this is(or should be) one of the reasons why functional programming is so 'hip' now: it allows us to reason about program design using the Algebra of programming. Of course right now we are stuck with the methods we have to build software. And that means you can have a programming job without knowing much about math, or even using it day to day. But that will change in the future. (My humble thoughts on it, based on the views I got from a university class called 'program calculation') if you are curious about algebra of programming, although there are many more resources online: http://wiki.di.uminho.pt/twiki/pub/Education/CP/Bibliografia/pdbc-3.pdf http://wiki.di.uminho.pt/twiki/pub/Education/CP/Bibliografia...
- randomdata 12y ago> That is why functional languages are so good. They are very close to mathematics Wouldn't it be better to say that functional languages are close to our commonly used mathematical languages? The abstract underpinnings of mathematics are not expressible naturally. We've had to invent languages to be able to communicate the ideas. And that is pretty much what this debate boils down to: Are the languages that allows you to express abstract ideas (programming languages in this case) math or language?
- ww520 12y agoLearning math is not just learning the knowledge of math. It's the learning of the abilities to reason, to think, to analyze, to simplify, to deduct, and to solve. Math knowledge helps programming but the math abilities are what propel you to the next level.
- dasil003 12y agoThe only way out of this semantic quagmire is to realize that programming is math incarnate. Mathematics in the broadest sense is nothing but logic applied to axioms. You can come up with arbitrary axioms and apply logic to them and that's math! Sure the connotation of math are specific concepts that usually have some real world application, but that's not the only kind of math. Lots of times someone came up with a crazy math idea long before they realized the real world application (eg. complex numbers). Until computers came along, math was entirely a theoretical pursuit. The universe may be described by math, but it's impossible to know whether it is actually defined by math or if we just fit the math to the universe. But programming is different, because for the first time we can take a mathematical idea from inside our heads and express it in a physical computer which executes it according to the logic we've defined. When you look at it this way you realize that it's exceedingly silly to try to separate programming that requires math knowledge from programming that doesn't. I mean no, programming usually does not require the infinitesimal slice of mathematics known as 9th grade algebra, but it does require logical thinking which is the basis of all mathematics.
- dlubarov 12y agoPlaying devil's advocate: playing chess involves logical thinking, would you call it math?
- jack9 12y agoJesus, the amount of laughable WAT?! in this post is staggering. > The only way out of this semantic quagmire is to realize that programming is math incarnate. Since you're just pontificating on your own absolute premise, there's nothing more to add.
- tthomas48 12y agoIt also includes far more writing and communication than it does mathematics, and yet we don't tend to talk about it as a part of Liberal Arts (or specifically Philosophy) much at all. I feel like the biases come from the origin of programming. But to suggest that it is somehow exclusively mathematics because of its origin is puzzling. It is quite clearly mostly words, many of which are arranged into sentences based upon a strict grammar. It's also odd in that the reason the original article was written was to suggest that it wasn't an insurmountable field, and that many more people could probably learn it if they were not intimated. It's odd that the response seems to be "FEEL INTIMIDATED MORTAL!". I feel like we're seeing gatekeepers feeling threatened rather than a particularly logical argument.
- vorg 12y ago> You’re right, programming isn’t math. But when someone says this, chances are it’s a programmer misunderstanding mathematics Or a mathematician misunderstanding what's generally known as "programming" in the real world. The vast majority of programmers write webpages in something like PHP or Rails. 10 years ago it was Excel macros and VB. These are often customer interaction tasks where programming is incidental, but the workers doing these jobs quickly called themselves Software Developers or Javascript Engineers. > Sure, you don’t need to know how to build a car to drive it Just as car building/repair and car driving have evolved into 2 separate tasks, so have math-based programming and non-math programming. The separation occurred because there were many people who wanted to program things but didn't want to learn math. The non-math programmers vastly outnumber the math-based ones.
- SomeCallMeTim 12y ago>The non-math programmers vastly outnumber the math-based ones. At some level I'd love to have a different word for what I do [1] that distinguishes it from web or other kinds of programming. When I talk to someone who has only encountered web developers and I say I'm a programmer, and they say "Yeah so is my uncle! He does HTML!", it feels like they really, really don't understand. Like I've said "I design Tesla electric cars" and they've responded "My uncle assists mechanics in a shop that repairs VWs!" [2] But at some level it's just my ego talking, so it might be best to just take the ego hit as a lesson in humility. ;) [1] I do native C/C++ code on multiple platforms including optimization for real-time performance, as well as high speed server optimization, system security analysis, and cross-platform video game development. Not math-heavy, precisely, but still far more skilled than basic web development. I also create the occasional high-performance web page, so I can compare directly. [2] With no aspersions on assistant mechanics, but it's a VERY different job.
- pessimizer 12y ago>The vast majority of programmers write webpages in something like PHP or Rails. The vast majority of programmers write webpages? I seriously doubt it.
- MaysonL 12y agoFor me, debugging or perhaps more appropriately anti-bugging a program is so much like proving a theorem that the difference is one of terminology and notation rather than essence.
- srean 12y agoThis is such an excellent point, I hope this comment bubbles up higher.
- sirseal 12y agoSoftware engineering requires mathematics. Software development does not. Engineers and developers both bang out code. But the similarities end there. A developer uses a library to make a product. An engineer uses mathematical knowledge, skill, and reasoning to find an efficient representation that elegantly solves a problem. A software engineer extends this idea: using (mostly) discrete mathematics, type & category theory, and computer science at his or her disposal. I have respect for developers -- they are an important part of the entire software ecosystem. I feel it necessary, however, to distinguish those who use mathematics to program and those who do not.
- progman 12y ago> Software engineering requires mathematics. Software development does not. Engineers and developers both bang out code. But the similarities end there. I agree. For instance, in Haskell you cannot just sit down and hack something together like in Python or PHP. You need to think about the whole structure of the program. That's software engineering. Interestingly (for me) I realized that it is possible to write software in Haskell in a mathematical way which I previously considered to be possible only in an imperative way. It required a shift of my thinking about software, and I am still learning that. Software engineering is intriguing because it raises software quality to a new level.
- seanmcdirmid 12y agoActually, in Haskell, you can write some python code to "program to think" first, and then when you know EXACTLY what you are going to do, you can write elegant Haskell code with its "think to program" requirement. Software engineering is a title no more concrete than software developer. In either case, it's useless to talk in platitudes.
- scaramanga 12y agonailed it
- zmmmmm 12y agoI'd feel much more comfortable with the idea that programming is math if my anecdotal experience of programs written by mathematicians didn't show that they have absolutely no clue how to write a good program - I'm talking about aspects of design like modularity, cohesion, separation of concerns, testability, sensible use of abstraction, etc. There's clearly something more to programming than math or there wouldn't be such a high correlation between good mathematicians being such garbage programmers. I suspect the whole debate is a sign that mathematicians simply dismiss these other aspects as unimportant and only count the mathematical parts and then come to the "surprise" conclusion that "wow, programming is all math!".
- GarvielLoken 12y agoThis is a real test which is in favour that programming is not math like biology isn't physics. You don't build programs with one character variables.
- briantakita 12y agoDisclaimer: I prefer to eschew labels and categorizations as they lead to heated & mostly unproductive conversations. These conversations often serve to close minds by creating stereotypes and ossifying one's often incomplete perspective on the subject matter. That being said, this article's main examples are programming applied to domains that rely on mathematics. Domains that don't rely on mathematics tend to have less mathematics. Programming is (mostly) about creating automatable systems or automating processes. Depending on the process, mathematics may or may not be involved. It's easy to imagine a programmers going their entire career without encountering mathematics. I personally like to automate mathematics, however it's not "necessary" to be a programmer. Mathematics will make you more "well rounded" just like a liberal arts education would.
- bitwize 12y ago"Programming is one of the most difficult branches of applied mathematics; the poorer mathematicians had better remain pure mathematicians." --Edsger W. Dijkstra Old arguments are new again because twenty something kids think that they know everything and that the wisdom of programmers from decades past is old, so it doesn't count in today's world of Hadoop cluster Node.js AWS instance startups. This is as true of meta-theorizing about programming as it is about hammering out the details of various software implementations.
- skkbits 12y agoThis is so true. In 2010, I worked on Mainframe. Yes , 2010 and yes on Mainframe. It was project interfacing modern data services with mainframe. I had to learn COBOL and z/OS architecture on how to do it. I graduated in 2007. When I talk with people of my age , they are so surprised that mainframes are still around and I worked on Mainframe. Many people don't know that large percentage of financial , insurance transaction still happen on mainframe. Remember you purchased policy last time or made changes or swiped your credit card ? Guess what , Mainframe was monster involved in processing. Now that was also programming. So yes , regarding argument at hand , I think programming may not "necessarily" involve math ( as taught in school , college --FFT, DFT, DE, Matrix etc. ) always , math is integral ( sometime hidden ) component of programming.
- barce 12y agotl;dr The Churchill-Turing Thesis is true from the OP's subjective experience, too. http://en.wikipedia.org/wiki/Church%E2%80%93Turing_thesis http://en.wikipedia.org/wiki/Church%E2%80%93Turing_thesis
- dllthomas 12y ago"Churchill-Turing" I think that just involved dead Nazis.
- srean 12y agoPlease do not correct it, its funny as it is, and you have the link anyway.
- gone35 12y agoBrilliant. The following proposition shall henceforth be known as the Churchill-Turing thesis: "Every insufficiently random symmetric-key scheme can be successfully cryptanalyzed given a sufficiently long ciphertext." Of course an entirely different matter is whether said scheme can be feasibly cryptanalyzed, but I digress.
- barce 12y agoOh man, I am so laughing and hating myself right now. Brilliant definition!
- MilnerRoute 12y agoI'm okay with the 4 down votes in 4 hours -- just hoping someone could clarify why. My comment asked: "Does this have anything to do with the female vs male perspective on programming? Maybe programming can be actually approached with different mindsets -- and it's not a case of either/or...."
- Irish 12y agoI didn't down vote you but my initial reaction to your comment was can we please have a conversation related to development without dragging sex into it? I would guess that many had the same reaction. Discrimination is an issue in Tech, its not the only issue or an issue which relates to every other issues it is an issue, singular.
- gatlin 12y agoMathematics is the study of quantity and structure. Reasoning about how to mutate some state, defined as a set of values, according to some domain-specific logic, constrained by the execution environment and invariants, is most assuredly mathematics.
- gone35 12y agoIndeed. Whether the likes of Sarah Mei agree or not, the Curry-Howard correspondence holds regardless: producing a computer program that meets some specification is theorem proving at a fundamental level...
- simondedalus 12y agoi want to say that math just is logic (which, blown up into set theory, is the major way we understand language outside of full on anthropology and incidental history/statistics)... but my early allegiance to frege would be showing. alas, we are doomed to never find the logical foundation of mathematics--godel hits us on one side, wittgenstein on the other! at least frege was a better writer than either of those two. anyway, i love the author's point (2). i would never argue that we don't need to bother wondering about the import of death or how we feel about things, but (2) not being widely known comes largely from A) people not studying philosophy, since B) they don't realize that philosophy isn't (always) about finding (capital M, almost-supernatural) Meaning, but rather is just being rigorous in your thought and language (as well as curious). math and programming aren't magic; they admit of rigorous thought just like anything else. you needn't be a savant, and you needn't go and vilify any particular normal human capacity or object of investigation to be allowed to not be a savant. sadly, i write like wittgenstein, not frege. hope this rambling response struck you as topical enough.
- ChikkaChiChi 12y agoThere is nothing programming can not be. No you don't need to be a mathematician to learn the basic syntax, but you could be a mathematician and still learn the basic syntax. You could also be a mathematician and use programs to build wonderful and new exciting things. Programming has no limitations other than our imaginations. I don't get why we humans have to be so definitive before things stop scaring us.
- wofo 12y ago"And most cooking is reheating frozen food, not farm-to-table fine cuisine, so should a culinary student study McDonald’s?" Awesome