Slashdot Mirror


Math, Programming, and Language Learning

An anonymous reader writes: There's often debate amongst modern programmers about how much math a professional developer should know, and to what extent programming is math. Learning to program is often viewed as being on a spectrum between learning math and learning spoken/written languages. But in a new article, Jeremy Kun argues that the spectrum should be formulated another way: Human language -> Mathematics -> Programming. "Having studied all three subjects, I'd argue that mathematics falls between language and programming on the hierarchy of rigor. ... [T]he hierarchy of abstraction is the exact reverse, with programming being the most concrete and language being the most abstract. Perhaps this is why people consider mathematics a bridge between human language and programming. Because it allows you to express more formal ideas in a more concrete language, without making you worry about such specific hardware details like whether your integers are capped at 32 bits or 64. Indeed, if you think that the core of programming is expressing abstract ideas in a concrete language, then this makes a lot of sense. This is precisely why learning mathematics is 'better' at helping you learn the kind of abstract thinking you want for programming than language. Because mathematics is closer to programming on the hierarchy. It helps even more that mathematics and programming readily share topics."

241 comments

  1. I disagree by Anonymous Coward · · Score: 1

    As a computer programmer who speaks six languages, I disagree, because I'm terrible at math.

    1. Re:I disagree by Kkloe · · Score: 1

      same here,beside the basics of math I had to struggle to take my degree because I had redo 2 of 3 math courses 3 times, the only course I would say to be good is discrete math

    2. Re:I disagree by Anonymous Coward · · Score: 0

      Programming = matrix reasoning. I have a grade 8 math level but can pickup a language in hours.

    3. Re:I disagree by jbolden · · Score: 4, Interesting

      As a guy with two masters in math who knows 15 languages... I also disagree. There are some languages that are mathematical (like Haskell) but most programming has more in common with cooking (sequencing the application of resources) than math.

    4. Re:I disagree by Nethemas+the+Great · · Score: 4, Insightful

      Proficiency in mathematics for the most part has little to do with being able to learn a programming language. This much I agree with. However, proficiency in mathematics does provide a strong indicator as to what you will be capable of doing with those languages. You may not be performing Calculus or manipulating matrices in the software that you write but the skills that provide an aptitude for performing such math are very much relatable to software development. Such skills include, abstraction, visualization, and logic to name a few.

      --
      Two of my imaginary friends reproduced once ... with negative results.
    5. Re:I disagree by jythie · · Score: 1

      Which gets to the core of the problem when trying to decide how "like math" programming is. Which "programming"? Languages vary a great deal, but even more importantly the type of task one is trying to complete varies even wilder.

      Even if one is going to follow the idea that it is not math itself one should learn and more the abstract reasoning one picks up while learning match, even that is questionable since the amount of abstract thought that is useful varies from task to task and environment to environment.

    6. Re:I disagree by Mister+Liberty · · Score: 1, Troll

      From the ambiguity within your comment (what language, natural or programming?; Is the fact that you can pickup this that or the other in 8 hours
      an attribute of this that or the other or of your very self?) I conclude that your programs must end spectecularly.

    7. Re:I disagree by Anonymous Coward · · Score: 0

      If you have a grade 8 math level, then you're probably comparing yourself to people in grade 8. Most people in grade 8 simply memorize facts and spew them back on a poorly-designed test without understanding anything, because that's what the school system is about. This means you're very likely claiming that you're absolutely abysmal when it comes to understanding math.

      Vanish, cretin.

    8. Re:I disagree by Anonymous Coward · · Score: 0

      but do you need to learn logical reasoning in order to program?

    9. Re:I disagree by Anonymous Coward · · Score: 0

      "most programming has more in common with cooking (sequencing the application of resources) than math."

      Math IS sequencing. So is using recipes. That is how math works.

    10. Re:I disagree by Anonymous Coward · · Score: 0

      How good a programmer do you consider yourself?

    11. Re:I disagree by Coryoth · · Score: 3, Insightful

      Math IS sequencing. So is using recipes. That is how math works.

      Math is a language. Just because you can frame things in that language doesn't mean that that language is necessary. Recipes are often in English. English is sequencing (words are a serial stream after all). That doesn't mean English is necessary for programming (there seem to many competent non-english speaking programmers as far as I can tell).

      Disclaimer: I am a professional research mathematician; I do understand math just fine.

    12. Re: I disagree by Anonymous Coward · · Score: 0

      Nice redefinition of Programming.

    13. Re: I disagree by Anonymous Coward · · Score: 0

      Programming to you is similar to matrix reasoning. You have an 8th grade math education but can pickup a language. We still don't know if that is a programming language, or another type of language. I assume you learn it to the average abilities of an eighth grader.

    14. Re: I disagree by Anonymous Coward · · Score: 0

      With out math you get 75 if statement in a row instead of a formula. Buffers that have more if statements then mathematically wrap. Floats when ints will do. Loss of prescion in poor order of operations. But a double may fix that.
      Over and underflows.

      You can program with poor math skills. But you can program better with math.

    15. Re:I disagree by Alioth · · Score: 2

      You might not be terrible at math. I thought I was terrible at math (I'm also a software developer). I also thought I was only good at discrete mathematics (which was a course I took during my university degree, heavily related to programming and CS). Furthermore I thought I was terrible at learning human languages, after having had 7 years of compulsory French at school and not being able to form a coherent sentence in French.

      It turned out I was wrong on two counts:

      A while back I started learning Spanish. The way I was being taught now was in a fun and easy way. I was also self motivated. In six months after starting, I could actually use some of it and knew more Spanish than I did French from 7 years of French lessons. 14 months after starting I was giving a technical talk in Spain (with an admittedly terrible accent and many grammar errors). Later today I'm off to Spain to help organise RetroEuskal with a bunch of Spanish friends. I started learning Spanish in my mid-30s, not as a kid. I learned it far faster than I would have as a child.

      More recently I realised I needed better mathematics skills to be able to do more complex things in my electronics hobby, so I took an algebra course on Coursera. At school I had pretty much flat out failed algebra. In fact I was put into the lower maths set with all the thick kids (where you could only score a C at most in the GCSE, the exam we take at age 16) because both myself and my teachers were convinced that I was bad at the subject. But doing algebra in a course that was interactive, fun and gave instant results - I passed that with a distinction. I then did a pre-calculus course, and passed that with a distinction. I then did Jim Fowler's (Ohio State University) calculus 1 course on Coursera and passed that with a distinction too.

      So it turns out that I was wrong about myself. In reality I was not bad at maths nor human languages. Now I admit I will probably never be a mathematician or linguist, but I can now do two things I never thought I ever would be able to. The reason I never succeeded at these things at school was because they were taught in a very boring and overly complex manner, and I was also pathologically lazy and didn't pay enough attention. The reason I succeeded now is due to having more motivation to do it and being exposed to teaching methods that inspire, and that aren't just hours of boredom.

      Furthermore, while I don't usually use calculus or algebra in my day job, I have found that learning these things has improved the way I approach a problem.

    16. Re:I disagree by HuguesT · · Score: 1

      Your reply is very interesting and outlines the fact that one should not stop learning after school, but instead revisit past and new subjects with a different eye and different tools. Also motivation is the prime mover here.

    17. Re:I disagree by fyngyrz · · Score: 1

      Yep. One of the things you discovered is that your school was one of the (many, many) schools that are horrible at teaching things, and in particular, math. Welcome to the real world. :)

      So... how's your luck been in convincing employers (if you go that way) that your Coursera work is worthy of qualifying you for jobs?

      --
      I've fallen off your lawn, and I can't get up.
    18. Re:I disagree by Anonymous Coward · · Score: 0

      No... Only a small subset of Engish is sequencing...

      All languages are about symbolic processing, mathematics as well - But Natural languages are not precise, and even the rules of English are not precise, nor are the rules for evolving natural languages, they are not even logical.

      Math is all about being precise, logical.. Communicating exactly one concept at a time. Natural languages do neither. Besides the simple transfer of information, it also transfers the emotions of the user, it carries subterfuge, even outright lies.

    19. Re:I disagree by Anonymous Coward · · Score: 0

      Put another way, TFA's author imposes a hierarchy where there is none.

      Clumsily put, math is an abstraction (a large collection of related abstractions, that with the various fields and all) relating to numbers, itself a rather abstract concept. Programming encompasses similar abstractions to "bridge" the gap between your ideas and instructions for a computer to execute. In that sense, math is "more pure" since it's less connected to the real world, but in another sense it has a different goal than programming (unless programming math), and so there isn't actually much meaning to inventing an operator less-than between the two.

      Moreso because there are quite a few programming languages of varying levels of abstraction away from the machine. Still, math is useful to programming for the areas where it touches on programming, both as mathematical programs and for meta-topics like complexity theory in algorithmic design. Even for providing rigorous underpinning for the language, like relational algebra does for SQL. But that doesn't mean there is a sensible straight-line ordering between human languages (mind the plural), programming languages, and mathematics. IOW, I also disagree.

      This from a jobless bum who knows a few languages, recently polished up a little calculus for kicks, but has no formal certificates in anything beyond a high school diploma.

    20. Re:I disagree by ThePhilips · · Score: 1

      discrete math

      Algebra?

      Then it is fine. I would expect programmers to struggle with classical math geared toward physics. That's perfectly logical: it is easier for people who come from physics because they understand the applications. And vice versa: physicists have huge problems with discrete math, where you can't round or generalize everything to hell.

      Otherwise, it was repeated many times before. The math in itself is not as useful as studying math is. Math doesn't relate to software development directly - but mathematical methods and approaches translate often one to one.

      Studying math is fitness for the brains and method to the fitness.

      P.S. But it doesn't mean that people who are good at math are good at programming too. Theoretical math != applied math. I have seen profs who could invent a new proof for theorem on a whim (forgotten notes), but struggled to implement something as trivial as a quick sort.

      --
      All hope abandon ye who enter here.
    21. Re:I disagree by Beck_Neard · · Score: 1

      Being skilled in a subject is mostly how much you practice at it. I'm sure that if you put as much time into math as you did programming, your opinion wouldn't be the same. I'm a mathematician-turned programmer and I agree with the article.

      One thing, though, is that programmers have a lot of tools to help them out. High-level languages like python, interactive development environments, debuggers, and of course being able to run the program and see how it behaves. All of these tools serve to hugely augment one's natural brain capacity (over, say, having to code everything in assembly). But mathematicians have no such tools yet. To be a mathematician, you have to juggle around numerous concepts in your head simultaneously and make sure they all work with each other. Studies have shown that one of the best predictors of mathematical ability is working memory, and it's not surprising why.

      By the way, why don't mathematicians adopt tools that let them easily and automatically check that their work is correct? I think it's entirely a cultural issue, not a technological one. Computational tools for mathematics (like Coq and Agda) are still stuck in the 'assembly' period. They're hard to use, because there has never been a strong demand for them from the wider math community and so they never developed as well as computer languages did. And when the math community got involved in computer science, they tended to target more abstract stuff like proof systems and category theory, instead of just sticking to the basics and coming up with a proof checker that's as easy to use as python is (and there's absolutely no reason why such a thing couldn't be made). So I'd say mathematics is a good 5 decades behind computer science. But it has to catch up eventually.

      --
      A fool and his hard drive are soon parted.
    22. Re:I disagree by Spugglefink · · Score: 1

      I've had similar experiences in life. Things that were boring in school are easily mastered once you have a real use for them. Knowledge is a tool. What good is a tool if you don't use it to accomplish work?

      Give me a problem, and I will figure out what skills I need to get you a solution, and acquire just those skills. That's just how I get things done as an adult.

    23. Re:I disagree by Coryoth · · Score: 1

      Math is all about being precise, logical.. Communicating exactly one concept at a time. Natural languages do neither.

      Except math is almost never actually done that way in practice. Euclid was wonderful, but almost all modern math does not work that strictly (and Euclid really should have been more careful with the parallel postulate -- there's "more than one thing at a time" involved there). Yes, proofs are careful and detailed, but so is, say, technical writing in English. Except for a few cases (check out metamath.org, or Homotopy Type Theory) almost no-one actually pedantically lays out all the formal steps introducing "only one concept at a time".

    24. Re:I disagree by Alioth · · Score: 1

      Well, my current employer is happy for me to use work time to do Coursera courses related to my job.

    25. Re:I disagree by Xest · · Score: 1

      Most of the posts here talk about calculus and efficiency but it's only a small part of how math links into programming.

      You don't need to know math to program, but math is what separates great programmers from the mediocre. Math has been essential for the formulation of new ideas. If all you're doing is creating run of the mill CRUD applications then you don't need math at all, if however you work in an R&D department solving hard problems then math is absolutely essential.

      I have a degree in maths and a degree in computing, as someone who learnt to program long before I did either of my degrees, I frankly found my degree in math to contribute far far more to my capabilities than rigorous study of computer science did. Having a good math foundation is the difference between being able to listen to a problem a client wants solving and saying "No, we can't really solve that" which is what most developers would do in the face of a tough problem and recognising that the clients problem is an optimisation problem, a classification problem, or some other type of problem and knowing what sub-areas of maths apply to solving or approximating an acceptable solution.

      So you can develop without math fine, but without math there'll be whole classes of problem that you have no idea how to solve and will just write off as not possible. You might argue that you could just find a library or framework, but without even being able to classify the problem you wont even know what you're looking for let alone know how to use it properly so even that's not going to work out for you.

  2. Your Results Will Vary by machineghost · · Score: 4, Insightful

    The problem with all the articles like this is that they're either written by people who did take math or didn't, and in either case both believe their side is right. The article is clearly written by someone who took a lot of math so, surprise, he thinks math is good for programmers. But I took nothing past Calculus (and have never professionally used even Trigonometry), and I'm a successful programmer, so I think math is unecessary.

    Until someone actually does a study on this, it's all gonna come down to "the way I did it was better" ... and that's just noise.

    1. Re:Your Results Will Vary by fredprado · · Score: 5, Interesting

      It highly depends on what you do. If you work mostly with the common database applications, basic math is enough for you and it is unlikely that you will ever need anything above Calculus or even Calculus.

      On the other hand, if you work with RF you will most likely need a lot of math. If you work with high level optimization algorithms you will need Abstract Algebra. If you work with Geolocation you will need a fair amount of high level Geometry, specially Non Euclidean ones.

      So in the end the answer is: Higher Math is not necessary in all fields of programming but it is certainly very necessary in many.

    2. Re:Your Results Will Vary by Greyfox · · Score: 2

      I took nothing past Calculus either and up until two or three years ago never even used trigonometry in my professional programming. The last few years I've been writing satellite simulations, which has forced me to knock the rust off some of my old math skills. Most programmers can get away with very little math a lot of the time. A lot of very interesting programming involves a fair bit of math. That programming is generally being done by some guy with a Ph.D. in another field, and he's usually doing it in Fortran.

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    3. Re:Your Results Will Vary by bananaquackmoo · · Score: 1

      Hint : you took calculus. Most people can't even get that far. Congratulations. You can math.

    4. Re:Your Results Will Vary by GiganticLyingMouth · · Score: 3, Informative

      I think part of the problem is that "programming" is itself so diverse. If you were to be a graphics programmer, you would certainly need your linear algebra, geometry, etc. If you worked with scientific computing, you'd need even more math (e.g. differential equations, statistics, etc). If you worked as a DSP programmer, you'd need to know calculus (and then some). In contrast, web development doesn't really require any of these. However, they all involve "programming", and the people writing the software can all be called "programmers", even if one's writing a website (no math) and another is doing a fluid dynamics simulation (lots of math).

    5. Re:Your Results Will Vary by gbjbaanb · · Score: 1

      I guess it depends, I have used math twice n my professional career - once to use trigonometry to show the distance between 2 points (Pythagoras) and once with a complex equation that was reduced to a simpler one.

      Now, if I was a cryptograpic engineer, I think I might use math more often :)

      But, as I tend to be more of a LoB engineer, math is not something used very often at all. If at all. I refer to the aforementioned pythagorean equation for the distance between 2 points using a triangle.... the business people I was working with considered me a genius for knowing that kind of thing even though it was something remembered from my O level days (yes, I'm old, maybe they don't teach it any more)

    6. Re:Your Results Will Vary by Deadstick · · Score: 1

      it's all gonna come down to "the way I did it was better"

      You could very well be a skier...

    7. Re:Your Results Will Vary by techno-vampire · · Score: 3, Interesting

      Studying computer science requires a fair amount of math to understand why some algorithms are more efficient than others rather than just accepting that they are. And, it can be a great help in working out the storage and IO requirements of a program. How much math you need to be a working programmer depends, as you point out, on what branch of programming you specialize in. Personally, I've always considered programming to be more a branch of logic than one of math.

      --
      Good, inexpensive web hosting
    8. Re:Your Results Will Vary by angel'o'sphere · · Score: 1

      My first idea was to say: "I second that" but then I remembered that I'm not a native english speaker and that I indeed did some math (Trigonometry) heavy programming.

      However: my university focused in the computer science education math in the first two years (University of Karlsruhe, german, now called KIT). Hence the most drop outs happened in that period.

      My school math education was very good, geometry and Trigonometry was never a problem, after all it is simple math defined by Euclid and Thales 3 thousand years ago.

      Nevertheless I nearly either failed or lost interest in my CS studies because of the mandatory math classes. (I'm not bad at math, but I do not like studying it for no purpose or into arcane depths)

      I'm a professional software developer since 40years, predating my university studies 10years with programming games and financial applications on Apple ][ s

      The math 'they' demanded from me I never needed the last 20 years, and they are still not able to teach:
      o programming
      o some simple UML modelling
      o anything about architecture
      o even software engineering is on a very low level

      Sorry, the idea that math helps in programming is completely idiotic.

      The problem of programming is mapping human problems to computer solutions.

      The key to that is requirements engineering, finding an architecture and conducting the actual doing (programming).

      In the real hard core programming there is no math at all involved. Well, at some point it comes, so having an open eye helps, scalability e.g is a thing, but it is tackled with architecture, not with math. Math only helps to foresee and address it, not to solve it.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    9. Re: Your Results Will Vary by ewanm89 · · Score: 1

      Formal logic is a branch of mathematics. It's part of a branch that is called decision and discrete mathematics. Programmers specialise in the application of that branch, just as staticians specialise in statistics and probability.

    10. Re:Your Results Will Vary by mov_eax_eax · · Score: 1

      i disagree, you should have your fair share of discrete mathematics, you know finite state machines, de morgan laws when you are changing your if's, regular expressions,

      For LOB applications often you are making specific domain languages so you should know your grammars, also understand complexity in computer science terms is VERY useful.

      So you are using a lot of math every day, in every compilation, solving this bug, or whatever, just a subset of math but math nonetheless.

    11. Re:Your Results Will Vary by s.petry · · Score: 2

      The reason math helps a whole lot in programming is that it teaches essential critical thinking skills. Some people are good at critical thinking skills without taking math. The _majority_ ,however, require some type of education to help mold their methods of thinking. Many, even with a whole lot of training do poorly with critical thinking skills.

      Claiming that you have never used math in programming simply demonstrates that you are not programming for scientific purposes (writing a GUI for a CAD program is not the same as writing the underlying math structures). That's fine, and most surely is not intended as an insult. As with above, you are not everyone, and math has many benefits.

      I say this as a person who has a degree in Math, and took everything possible in College for math (hated statistical math, but diff-eq was great). I don't sit and run differential equations all day, but do very well helping Engineers and Scientists that _do_ run heavy mathematical models. Hell, when I was in college the only way to learn computers was by being in a math program.

      yeah yeah, get off my lawn!

      --

      -The wise argue that there are few absolutes, the fool argues that there are no probabilities.

    12. Re: Your Results Will Vary by techno-vampire · · Score: 1

      Formal logic is a branch of mathematics.

      Yes, I know, but very few people except mathematicians think of it that way. Most people consider it to be an entirely different study so I phrased it that way to emphasize that much of computer programming has nothing to do with what the average person thinks of as math.

      --
      Good, inexpensive web hosting
    13. Re: Your Results Will Vary by acroyear · · Score: 5, Interesting

      In the end, I've always concluded the same, every year this topic comes up (it is just about annual here). I don't want you to know calculus because you'll actually use calculus on the job (though I have an O(N) vs O(log(N)) question on my interviews that you'd better be able to answer).

      I want you to know/pass calculus because by the time you've worked that hard at that level of proofs, you've mastered *variable control*. In each level of math, you don't get out of the class having mastered it. You get out of the class having mastered the year that came before it. When you can pass calculus, you have *mastered* functions and analytic geometry (I hire for UI work). Passing those two the year before showed you mastered variable manipulation and proofs in Algebra 2 before it.

      So no, you don't *need* calculus on the job, but you need everything below it, and the best proof that you've *mastered* them (not just taken them, but mastered them) is that you've passed a calculus class.

      --
      "But remember, most lynch mobs aren't this nice." (H.Simpson)
      -- Joe
    14. Re: Your Results Will Vary by ewanm89 · · Score: 1

      Just because one does not vote it as mathematics didn't mean it's not mathematics. Only education can fix this, and this education is currently sorely lacking.

    15. Re:Your Results Will Vary by Nethemas+the+Great · · Score: 3, Insightful

      I find that most people trying to argue against math generally are doing so by asserting that if a certain math is not put to practice in the software that a person is developing that that math is unnecessary. It also seems to be commonly asserted that persons with a strong mathematical background are just being pretentious.

      I believe that the anti-math crowd is missing the point. For a software developer it isn't the skill of solving calculus problems, but the skills required to solve calculus problems. What I mean by this is that in order to work to a solution for a given mathematical problem you are exercising many other skills. Skills such as logic, abstraction, visualization, etc. are very much employed in software development. You go to the gym not because you have aspirations of mastering a bench press, but because you aspire for a stronger, healthier body. Mathematics are an example of exercise equipment for a software developer.

      --
      Two of my imaginary friends reproduced once ... with negative results.
    16. Re:Your Results Will Vary by machineghost · · Score: 1

      Well, but the computer science major at my college required six other math classes (including two calculus classes beyond the first that I completed). For many programmers (obviously not all) that math is a complete waste of time.

    17. Re:Your Results Will Vary by Mister+Liberty · · Score: 1

      The reason math helps a whole lot in programming is that it teaches essential critical thinking skills. Some people are good at critical thinking skills without taking math.

      So you're saying it's not the math that's essential, but the Critical Thinking is. That's a different thing.

    18. Re:Your Results Will Vary by HiThere · · Score: 1

      My feeling is that anything beyond algebra is unnecessary for programmers (in general) EXCEPT logic. I think every programmer should have two or three semesters, or even years, of logic. Programming languages just don't cover quite the same area, and usually skimp badly on logic. (I will agree, however, that theoretically the logic could be taught within the context of programming, except for a tiny bit that should deal with reasoning in unbounded contexts, i.e., infinitesimals, infinities, omega-completeness, etc. and that could be covered within a single quarter. It's just that programming classes don't bother to teach logic, because they assume that you got it elsewhere.)

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    19. Re: Your Results Will Vary by Raenex · · Score: 0

      I want you to know/pass calculus because by the time you've worked that hard at that level of proofs, you've mastered *variable control*.

      This is silly. You don't need incidental math to learn skills essential to programming. College education wastes countless hours teaching academic stuff that a great majority of programmers will not use on the job, while neglecting critical skills that could be immediately useful in a large .

      If you want to teach "variable control", whatever you mean by that, then teach that in respect to programming, not high-level math that will only be used by a tiny percentage.

    20. Re: Your Results Will Vary by Coryoth · · Score: 2

      Calculus is perhaps not the best measure however. Depending on where you go in the programming field calculus is likely less useful than some decent depth of knowledge in graph theory, abstract algebra, category theory, or combinatorics and optimization. I imagine a number of people would chime in with statistics, but to do statistics right you need calculus (which is an example of one of the directions where calculus can be useful for programming).

      Of course the reality is that you don't need any of those subjects. Those subjects can, however, be very useful to you as a programmer. So yes you can certainly be a programmer, and even a very successful and productive one without any knowledge of calculus, or graph theory say. On the other hand, there may well be times when graph theory, or calculus, or statistics could prove very useful. what it comes down to is whether you are inclined to think that way -- and if so it can be a benefit; if not it won't be the way you think about the problem anyway.

    21. Re: Your Results Will Vary by acroyear · · Score: 1

      "while neglecting critical skills that could be immediately useful in a large ."

      Lack of college seems to have neglected that critical skill of finishing a sentence.

      Or was that too easy?

      p.s. :)

      --
      "But remember, most lynch mobs aren't this nice." (H.Simpson)
      -- Joe
    22. Re:Your Results Will Vary by Coryoth · · Score: 1

      I think part of the problem is that "programming" is itself so diverse.

      The other part of the problem is that math is so diverse. There's calculus and engineering math with all kinds of techniques for solving this or that PDE; there's set theoretic foundations; there's graph theory and design theory and combinatorics and a slew of other discrete math topics; there's topology and metric spaces and various abstractions for continuity; there's linear algebra and all the finer points of matrices and matrix decompositions and tensors and on into Hilbert spaces and other infinite dimensional things; there's category theory and stacks and topos theory and other esoterica of abstraction. On and on, and all very different and I can't even pretend to have anything but cursory knowledge of most of them ... and I have a Ph.D. in math and work for a research institute trying to stay abreast of a decent range of topics. The people who actually study these topics in depth are all called "mathematicians", but if you're an algebraic geometer then sure, you're probably familiar with category theory and homological algebra; if you do design theory and graph theory then those seem like the most useful subject available.

    23. Re: Your Results Will Vary by Coryoth · · Score: 1

      College education wastes countless hours teaching academic stuff that a great majority of programmers will not use on the job, while neglecting critical skills that could be immediately useful in a large .[sic]

      Of course there was a time when college education was supposed to be education and not just vocational training.

    24. Re: Your Results Will Vary by Raenex · · Score: 1

      Or was that too easy?

    25. Re: Your Results Will Vary by Raenex · · Score: 1

      Yes, I've heard the "well rounded" person argument. I can even accommodate it, to a certain extent, but it would stop at being exposed to ideas versus having to become competent at doing calculus problems in order to pass a course. I personally am not interested in doing calculus and haven't made use of it in over 20 years of programming.

    26. Re:Your Results Will Vary by Anonymous Coward · · Score: 0

      That still doesn't make it "no math".

      Even making change doesn't require the user to understand why things are done... But it is still arithmetic.

    27. Re:Your Results Will Vary by Anonymous Coward · · Score: 0

      It depends on what you are programming where math is helpful and help develop many different algorithms.

    28. Re:Your Results Will Vary by Anonymous Coward · · Score: 0

      Critical thinking is how math works... when you are doing it right.

      Sloppy programmers are also sloppy at arithmetic.

    29. Re:Your Results Will Vary by beelsebob · · Score: 1

      The problem is, you've actually used maths every day in your career, you just haven't realised it. When you are programming, you are by definition doing maths - programming is a branch of discrete applied maths.

      Actually knowing the theory of discrete applied maths obviously makes you better at doing discrete applied maths.

    30. Re: Your Results Will Vary by the+phantom · · Score: 2

      It isn't even about creating well-rounded people, and never really was---the point of a college education was to become an academic. You went to college because your end-goal was research. Of course, at that point in history the alternative was likely monastic life because your older brother was going to get the farm... That being said, it wasn't really until the middle of the 20th century that college was seen as a way of advancing a career outside of academia. Whether or not you believe that the role of universities *should* be vocational training, the curriculum and organization of institutions of higher education---particularly research universities---is still geared toward that Enlightenment ideal of academia.

    31. Re: Your Results Will Vary by the+phantom · · Score: 1

      Of course the reality is that you don't need any of those subjects. Those subjects can, however, be very useful to you as a programmer. So yes you can certainly be a programmer, and even a very successful and productive one without any knowledge of calculus, or graph theory say. On the other hand, there may well be times when graph theory, or calculus, or statistics could prove very useful. what it comes down to is whether you are inclined to think that way -- and if so it can be a benefit; if not it won't be the way you think about the problem anyway.

      Which is almost exactly the point that the author of the linked article makes:

      Not every programmer deals with these [mathematical] questions regularly (which is why I don’t think math is necessary to be a programmer), but if you want to be a great programmer you had better bet you’ll need it.

    32. Re: Your Results Will Vary by jeIIomizer · · Score: 1

      Whether or not you believe that the role of universities *should* be vocational training, the curriculum and organization of institutions of higher education---particularly research universities---is still geared toward that Enlightenment ideal of academia.

      Colleges are basically turning into poor imitations of vocational schools. The same is true for some universities. You get the worst of both worlds.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    33. Re: Your Results Will Vary by the+phantom · · Score: 1

      Colleges are basically turning into poor imitations of vocational schools. The same is true for some universities. You get the worst of both worlds.

      Indeed. I just didn't want to go too far off-topic on that particular hobby horse of mine.

    34. Re: Your Results Will Vary by Coryoth · · Score: 1

      Not every programmer deals with these [mathematical] questions regularly (which is why I donâ(TM)t think math is necessary to be a programmer), but if you want to be a great programmer you had better bet youâ(TM)ll need it.

      I don't think you need math even to be a great programmer. I do think a lot of great programmers are people who think in mathematical terms and thus benefit from mathematics. But I also believe you can be a great programmer and not be the sort of person who thinks in those terms. I expect the latter is harder, but then I'm a mathematician so I'm more than read to accept that I have some bias in this topic.

    35. Re:Your Results Will Vary by Anonymous Coward · · Score: 0

      You can't do programming without math. You need to understand addition, multiplication, division, equality, negative numbers etc. before you can do anything.
      You can't understand functions without alegra, you can't understand conditional flow control without logic.

      You can do math without programming though.

      The more complex the programming you are doing the more of the math that underlies what you doing is needed.

    36. Re:Your Results Will Vary by Dutch+Gun · · Score: 2

      I took nothing past Calculus either and up until two or three years ago never even used trigonometry in my professional programming. The last few years I've been writing satellite simulations, which has forced me to knock the rust off some of my old math skills. Most programmers can get away with very little math a lot of the time. A lot of very interesting programming involves a fair bit of math. That programming is generally being done by some guy with a Ph.D. in another field, and he's usually doing it in Fortran.

      You're touching on what I consider to be the ultimate fallacy of this question. If someone asks the question "how much math does a programmer need to know?", I'd answer with "a programmer of what?"

      My profession happens to be videogame programming. In my own experience, higher-level calculus is largely unused, but geometry, linear algebra, and matrix math are the bedrock of 2D and 3D simulations. Even then, the level of competence required depends largely on your specialty. A graphics programmer requires more mathematical savvy than an AI or general gameplay programmer, for example.

      Programming, unless you're a theoretical computer scientist, is typically about solving practical, real world problems rather than problems specific to the domain of computer science. The problem domain the programmer is trying to solve is what determines the mathematical requirements, not the programming itself. In fact, you can go a bit farther than this and simply call mathematics part of the general "domain knowledge" which may or may not be required for a particular programming task. It's no different than when knowledge of accounting and bookkeeping is required when programming financial software, or a knowledge of music theory when writing music composition software.

      So, the question only becomes meaningful when you attach it to a specific programming job or industry.

      --
      Irony: Agile development has too much intertia to be abandoned now.
    37. Re: Your Results Will Vary by Raenex · · Score: 1

      If being well-rounded "never really was" the point of college education, why are college students force to take an array of courses outside their field of interest?

    38. Re: Your Results Will Vary by TechyImmigrant · · Score: 2

      My diet is what made me well rounded.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    39. Re:Your Results Will Vary by Anonymous Coward · · Score: 0

      My profession happens to be videogame programming. In my own experience, higher-level calculus is largely unused, but geometry, linear algebra, and matrix math are the bedrock of 2D and 3D simulations. Even then, the level of competence required depends largely on your specialty. A graphics programmer requires more mathematical savvy than an AI or general gameplay programmer, for example.

      Two friends of mine are video game programmers, for different companies, so whenever I've been to a get together of some sort that had both of them there, they would inevitably spend time discussing difficult problems they've worked on recently and potentially cool solutions. For various AI and gameplay situations, they would discuss having trouble making some sort of iterating optimizer to maximize something they are trying to base a decision on. The first time this came up, I tried to give some suggestions on basic iterative solvers and minimizing algorithms instead of rolling their own (stuff I've seen before from a computational physics background). But then I learned to ask to give what the original problem was from the start, because it turned out what they were trying to optimize took less than a minute to analytically solve with Lagrange multipliers, giving a simple and fast solution, no generic iterating algorithms needed. .

      This probably doesn't come up very often for video game programmers, especially considering there is often enough flexibility in video game design to redefine problems in terms of what you are capable of (e.g. the gameplay might not need to reflect real physics, or AI doesn't need to be exact, etc.). The awkward part to me though, is not that they couldn't do the calculus to quickly solve the problem, but that they couldn't recognize it as a type of problem that has a potentially straightforward solution. Even if you can't solve a problem from the top of your head, recognizing it allows one to seek out help or to learn appropriate methods. I sometimes wonder what portion of programmers saying "I never needed X" say so because they don't remember it well and couldn't recognize a good chance to use it in the rare case it comes up.

      When you're programming in a specific field, like accounting programming, at least you've narrowed things down and tend to have some labels on tasks that make it easier to find info on. When you're just manipulating numbers to get some larger, generic task done though, you might not have that.

    40. Re:Your Results Will Vary by Anonymous Coward · · Score: 0

      Mannaging data sets is logic with some meta data, but that's not the entire world of programming, just a subset of it like the math stuff. I love HLSL for how crazy you can get with the math and how easy it is to work with vectors and matrices. Have a highly optimized atmosphere renderer that is based on actual physics and a noise function for probability based influences. Something similar for water that looks photo realistic and does a full scene of water in under 2ms. Those are very math intensive things but they are run by things which aren't math intensive at all. Sometimes it's good to combine both data and math to create crazy fast data structures like a quad tree that takes advantage of the properties of hilbert curves. Not always needed though.

    41. Re:Your Results Will Vary by K.+S.+Kyosuke · · Score: 1

      I love HLSL for how crazy you can get with the math and how easy it is to work with vectors and matrices.

      That's probably not the kind of math that is the topic here - you're talking about math as the application domain of the program being written, but most often, the "programming is math" claims refer to the fact that any program itself is an artifact amenable to mathematical study, regardless of the application domain it covers. One typical question these days is, for example, "what invariants exist in the execution trace of a concurrent program that lead to the same result?" Or, how you can reorder (and perhaps perform in parallel) the execution of a concurrent program? Witness how it is completely irrelevant *what* the program actually computes.

      --
      Ezekiel 23:20
    42. Re:Your Results Will Vary by K.+S.+Kyosuke · · Score: 2

      Actually, that's more of an application of math than math itself. People so often confuse the two! Being able to integrate and being able to postulate very general hypotheses relevant to your problem and to prove them are two entirely different things, however.

      --
      Ezekiel 23:20
    43. Re:Your Results Will Vary by K.+S.+Kyosuke · · Score: 1

      So you're saying it's not the math that's essential, but the Critical Thinking is. That's a different thing.

      Some people would argue that knowing the former is pretty much the only way to arrive at being proficient in the latter.

      --
      Ezekiel 23:20
    44. Re:Your Results Will Vary by sirlark · · Score: 1

      Higher Math is not necessary in all fields of programming but it is certainly very necessary in many.

      ... which means that higher maths is really domain specific, and not necessary for programming. Otherwise I could say the accounting or biochemistry were necessary to learn to program, if that's the field I started out in learning to program

    45. Re:Your Results Will Vary by jones_supa · · Score: 1

      Wouldn't even studies in philosophy work?

    46. Re: Your Results Will Vary by Anonymous Coward · · Score: 0

      don't want you to know calculus because you'll actually use calculus on the job (though I have an O(N) vs O(log(N)) question on my interviews that you'd better be able to answer).

      What does O(N) versus O(log(N)) have to do with the work of the typical corporate programmer? Not a damn thing. I know the difference but I have may needed that information once or twice although not for the reasons you might think.

    47. Re: Your Results Will Vary by Anonymous Coward · · Score: 0

      College education wastes countless hours teaching academic stuff that a great majority of programmers will not use on the job, while neglecting critical skills that could be immediately useful in a large .[sic]

      Of course there was a time when college education was supposed to be education and not just vocational training.

      The biggest joke in post-secondary education is that you are getting an education. Employers wants trained monkeys with degrees in computer science to work as help desk technicians and systems administrator provided you have the requisite laundry list of product knowledge and experience as well of course. No employer trains on the job except maybe the military.

    48. Re:Your Results Will Vary by jones_supa · · Score: 1

      You go to the gym not because you have aspirations of mastering a bench press, but because you aspire for a stronger, healthier body. Mathematics are an example of exercise equipment for a software developer.

      As an important sidenote, I want to underline that literally going to gym is also important to a software developer. :) Your mind will greatly benefit from the energized body.

    49. Re:Your Results Will Vary by gbjbaanb · · Score: 1

      that's a poor argument. After all, physics is just applied maths, and chemistry is just applied physics, and biology is just applied chemistry.... and just by sitting here typing I'm using maths!

      Maths as a discrete thing is different to computer science even though they do share the same branch of education.

      That said, nowadays, is cutting and pasting code from Google, and pressing . and letting intellisense tell me what to pick next, really maths. Is it really programming! :-)

    50. Re:Your Results Will Vary by Anonymous Coward · · Score: 0

      As a logician, I disagree. Unless we speak about specialized programming languages and certain modern type theories, most logical systems are very different from programming languages and there is only some overlap in programming language design (type systems and formal semantics), but not in practice. Research in logic is basically application of methods from discrete mathematics, so there is overlap with CS, of course, but again, this has almost nothing to do with the reality of programming.

    51. Re: Your Results Will Vary by Anonymous Coward · · Score: 0

      The goal of college is NOT to train you like a puppy to do real work.

        The goal of college is to teach you stuff, to elevate your spirit, to make your curious about the world and to teach you how to learn more, forever. Learning is a process very different from training. it is about getting deep understanding of general phenomena and it is something you can then build on for decades.

        You want to be trained ? go to a craft school or whatever you call them in your country. That is great, you will learn usefull techniques and skills that will make you productive from day one (ok maybe not day one..). But don't say that college teach too abstract concepts.. it doesn't ! if anything it is too applied. PLUS YOU GET TO CHOOSE YOUR SUBJECTS so stop bitching!

        I see this everyday at work. I went to what would be the equivalent of college, and I didn't train at all in programming. Most of my collegues only trained in programming.

        2 years into the job I have greater mastery of pretty much any aspect of the project we are working on, and my skill-set is improving exponentially, while they almost never learn anything beyond what they know because they lack the methods to learn. They lack the basic, broad concepts to put into perspective what they do and to capitalize on the knowledge they can acquire.

        And also their conversation is pretty poor..

    52. Re: Your Results Will Vary by Anonymous Coward · · Score: 0

      Because you are a 20 years old know-nothing you arrogant bratand maybe there is more than one thing in the entire wolrd that could be of interest for you ?

        Anyway if you lack the basic curiosity of taking classes "outside you (singular) field of interest" you shouldn't be in college. (an insanely obscene amout of ) Money is wasted on you.

        Go get trained like a good java monkey and go to work. It is cheaper and nobody will EVER "force" you to get incredibly expensive classes for you own personnal intellectual flourishment again. I promise.

    53. Re:Your Results Will Vary by Anonymous Coward · · Score: 0

      25 years ago, I wrote a supervisory system for a science instrument connected by a serial link. It was trash: lost connection all the time when the link got noisy despite my attempts at error-correcting code. 20 years later, helping my wife with her signals-processing course, I came across the maths for error-correcting code and found out how I should have written it. Face-palm. So you need the maths background to know where you need to know the maths...

    54. Re: Your Results Will Vary by Raenex · · Score: 1

      The goal of college is NOT to train you like a puppy to do real work.

      That's nice and all, but the vast majority of people go to college to get a well-paying job afterwards. That's what the point of the "major" is for.

      You want to be trained ? go to a craft school or whatever you call them in your country.

      College is a checkbox to get into higher paying jobs, so your suggestion of going to a "craft" school doesn't help.

      PLUS YOU GET TO CHOOSE YOUR SUBJECTS so stop bitching!

      Err, no, you don't when your major is something like computer science and they force you into heavy calculus courses. That's the topic under discussion. Try to pay attention.

      2 years into the job I have greater mastery of pretty much any aspect of the project we are working on, and my skill-set is improving exponentially, while they almost never learn anything beyond what they know because they lack the methods to learn.

      Yeah, that's a lot of bullshit. It's impossible to become a programmer without learning. What your one-sided anecdote says is that many workers do just enough to get by, not that they couldn't improve their skills if they applied themselves.

    55. Re: Your Results Will Vary by Raenex · · Score: 1

      Because you are a 20 years old know-nothing you arrogant bratand maybe there is more than one thing in the entire wolrd that could be of interest for you ?

      Maybe if you weren't an arrogant asshole posting as anonymous coward you wouldn't make such statements. I've been to college and have long-since graduated. Most people go to college because it's a checkbox for higher-paying jobs and a chance to party on their parent's dime and government loans.

    56. Re:Your Results Will Vary by tomxor · · Score: 1

      In contrast, web development doesn't really require any of these. However, they all involve "programming", and the people writing the software can all be called "programmers", even if one's writing a website (no math) and another is doing a fluid dynamics simulation (lots of math).

      I don't entirely disagree... but :P i am a web developer, who also happens to like lots of vector math, writing physics engines and in particular: writing SPH fluid dynamics simulations and other n-body simulations.

      I would agree that some of my understanding of slightly above basic math is not necessary in most of the more common web development work in my job, but i do find it helps me be a better programmer in general... so perhaps the point is that math can make you a better programmer. Id also argue that it makes you better at engineering software rather than just "programming" it, but perhaps that has more to do with the experience of programming complex tasks that also require complex math.

    57. Re:Your Results Will Vary by XxtraLarGe · · Score: 1

      But I took nothing past Calculus (and have never professionally used even Trigonometry), and I'm a successful programmer, so I think math is unnecessary.

      What sort of programming do you do? You can write code without doing any trig or calc, but I don't think you can do anything REALLY interesting without *some* math.

      --
      Taking guns away from the 99% gives the 1% 100% of the power.
    58. Re:Your Results Will Vary by MisterToad · · Score: 1

      I agree. We all have our filters and think reality is what we see through them. One of my undergraduate degrees is in Philosophy including Symbolic Logic. The first time I saw 360 Assembler language I thought, "What's new?". I was coding in a few days and proficiently in a few weeks. So I could easily argue that the study of Bertrand Russell's "Principia Mathematica " is necessary to become a programmer. A twisted ironic view of this is that Russell proved that mathematics is based upon programming - - - - well not really. He proved that mathematics is logical. And as we know today, programming is logical. We probably also have noticed that the relationships between Logic, Math., and Programming is non-simple.

      --
      Dick
    59. Re:Your Results Will Vary by Anonymous Coward · · Score: 0

      if my team didn't know math, our app would probably create/destroy 900k+ logically-application scoped objects per hour, instead of storing one object for the lifetime of the VM, because you need math to know that 900k>1. Oh wait...

      even in UI land, higher level concepts can apply, although many times they aren't. a competent javascript application (application, here, not a loose collection of helper functions) has to be properly graphed, or it becomes nightmarish to maintain.

      you can tell which programmers have stronger math skills just by looking at their code - it's better in every way. then there's the rest.

    60. Re: Your Results Will Vary by Half-pint+HAL · · Score: 1

      I did Computer Science at Edinburgh University as my first degree, and it was very academic and non-vocational. Employers often criticised our syllabus as being irrelevant, but if I'd spent my university years learning Java, I wouldn't be doing what I am today. (Private enterprise development work on a hopefully-revolutionary natural language processing application.) University should teach you as much as possible to open your potential. The US system may be broken, but that is not a direct consequence of having an academic focus, more on politics and economics.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    61. Re: Your Results Will Vary by Half-pint+HAL · · Score: 1

      Internal politics...?

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    62. Re:Your Results Will Vary by beelsebob · · Score: 1

      that's a poor argument. After all, physics is just applied maths

      Notably though, you won't see anyone trying to claim that you don't need to be good at maths to be good at physics though ;). Mostly because physics is a more mature field, and they all recognise by now that it is applied maths, and requires you to get the maths right.

    63. Re: Your Results Will Vary by strikethree · · Score: 1

      (though I have an O(N) vs O(log(N)) question on my interviews that you'd better be able to answer).

      (I hire for UI work)

      WTF? Really? Why would I need to understand algorithmic complexity when designing a user interface? A user interface is about allowing an end user the ability to manipulate and control the code in a program: giving the user choice, freedom, and empowering them to make a decision.

      Algorithmic complexity is something that is either already decided behind the UI or is decided by the user through the UI.

      In other words, if you are hiring for UI coding, why are you asking questions about big O notation unless you plan to use the coder/programmer for reasons other than UI?

      --
      "Someone needs to talk to the tree of liberty about its ghoulish drinking problem." by ohnocitizen
    64. Re:Your Results Will Vary by Anonymous Coward · · Score: 0

      So in the end the answer is: Higher Math is not necessary for programming but it is certainly very necessary in computer science.

      FTFY.
      Imho writing programs and creating mathematical algorithms are two different things.
      Some people will argue they're not, but I've never seen a pure mathematical aproach to creating a GUI or designing a good API.
      It requires a different sort of creativity and intuition.

    65. Re: Your Results Will Vary by Anonymous Coward · · Score: 0

      That's like saying painting is just an application of Color Theory, so the painter is applying physics. Or that a car mechanic direcly applies physics when he repairs your car.
      When a programmer creates a user-friendly GUI, it has little to do with formal logic, and more with intuition and creativity. Just because the software can be treated formally, doesn't mean the programmer was directly applying math.

    66. Re:Your Results Will Vary by Anonymous Coward · · Score: 0

      You say you're a successful programmer, but you don't care about the theory of programming (which is math). Let's assume you're not just a script kiddie but you really design and write programs. Then how do you assess the runtime of an algorithm before you implement it? How do you know the output of your program will be precise enough?

    67. Re:Your Results Will Vary by Dutch+Gun · · Score: 1

      You've got a very good point. If you don't have a mathematical background in a particular field, you might not even know that there was a potential solution to a problem you were working on.

      In a more general case, I consider this to be a something of a minor problem in the videogaming industry. In general, I haven't seen a lot of cross-pollination between videogame programmers and other industry professionals. This is partially because this job has some fairly specialized skillset requirements, and partly because the pay is lower and the hours worse for the privilege of working on a videogame rather than business software. I've noticed the general trends and techniques tend to be a bit behind the times. A conservative approach is not necessarily a bad thing, because programming a high-definition real-time virtual simulation on commodity hardware is an incredibly demanding task and sometimes requires performance-oriented priorities. Still, sometimes it can make things more difficult than they need to be when more modern techniques and methodologies can be appropriately applied.

      BTW, it's a shame that some people won't see your comment simply because you're posting as an AC. No account, or did you use mod point in this thread already?

      --
      Irony: Agile development has too much intertia to be abandoned now.
    68. Re: Your Results Will Vary by the+phantom · · Score: 1

      The point was to create academics, not well-rounded people. The fact that being well-rounded leads to success in academia is a pleasant side-effect.

    69. Re:Your Results Will Vary by s.petry · · Score: 1

      You chose to selectively read instead of consuming the whole message. If you are going to be programming for scientific purposes, math is essential for doing that type of programming.

      --

      -The wise argue that there are few absolutes, the fool argues that there are no probabilities.

    70. Re:Your Results Will Vary by tepples · · Score: 1

      I was under the impression that philosophy majors had to take a formal logic class early on.

    71. Re: Your Results Will Vary by acroyear · · Score: 1

      When a user interface is in, say, HTML5/DOM, one needs to know a lot about controlling how often the browser reloads the page or a portion of it, how much CSS is "too much" before the page rendering is slower than tolerable, how to control a loop to minimize server calls and DOM redraws, and much more. Similarly, a lot of UI is search optimization, deciding how much power of the search goes into the server/db and how much in the UI, then how to find and highlight the search results - all of these are complex processes that can be painfully slow or dramatically fast, but only if you know what bottlenecks to expect.

      Anybody can draw a UI on a piece of paper and bullcrap the thing up in jquery-ui or xcode. Making a UI that is functional amidst constantly changing requirements involving ever increasing quantities of data is much harder. Writing components or maintaining frameworks and understanding the decisions the framework designers made (so that you don't violate them, often with painful results in stability or performance, when using them or adding to them) is a huge part of REAL UI work. I have yet to meet a toolkit I didn't need to fix or amend to, in 20 years of UI work. I have yet, in any of those libraries/frameworks, to NOT have Big-O decisions to make when doing so in pieces involving components meant to handle large amounts of data like grids and graphs.

      No, it doesn't happen every day. But it happens at least every project.

      If you don't speak basic optimization rules/practices like O(N) vs O(log(N)) (and yes, that HAS come up more than once in my work in the last 5 years, nevermind the last 20 when I was doing more J2EE or MoM/Agents work), then I can't trust that you have any discipline to anything else. There's no point in even talking anymore if you can't speak what I consider to be a basic common CS vocabulary.

      Yes, much of this is trust: the piece of paper that is a degree is something of a document of trust that you have had certain disciplines and experiences, things that I can't actually get directly from your work prior since I'm not actually allowed to ask to see your code in an interview or before-hand - that usually belongs to your former company.

      We don't ask for higher maths because we expect you to use them; your 'experience' during your degree work is almost meaningless in-and-of itself. We ask for higher maths, and for the other aspects of a degree, because the degree is evidence of experience, motivation, and most importantly discipline.

      And for many of the "I don't need maths blah blah blah a trade school is fine blah blah blah" posts on this thread (and this same thread every time this topic comes up, which is probably twice a year for the last 18 years I've been on /.), discipline is something I actually see sorely lacking in the comments.

      --
      "But remember, most lynch mobs aren't this nice." (H.Simpson)
      -- Joe
    72. Re: Your Results Will Vary by Raenex · · Score: 1

      That doesn't make any sense. You can be an academic in your field of interest without taking an array of courses that have nothing to do with it.

    73. Re: Your Results Will Vary by the+phantom · · Score: 1

      Not 400 years ago when the modern university system got started.

    74. Re:Your Results Will Vary by fredprado · · Score: 1

      When an Accounting or Biochemistry related subject needs programming is because it needs Mathematics. Programming IS Mathematics. Basic programming is basic Logic, basic Arithmetic and basic Algebra, which are all fields of Mathematics. You don't need formal training to do it, you may use it intuitively, but that is what you do. And the more complex what you are trying to model with your program is the more Math you will need.

    75. Re: Your Results Will Vary by Raenex · · Score: 1

      Let's walk this back. You said:

      It isn't even about creating well-rounded people, and never really was [..] the curriculum and organization of institutions of higher education---particularly research universities---is still geared toward that Enlightenment ideal of academia.

      The bold is what I responded to, in particular the word never. Goals have changed in 400 years.

    76. Re:Your Results Will Vary by Anonymous Coward · · Score: 0

      Well that's the thing, isn't it. You're doing math, you just don't identify it as math. Identifying it as math and learning about that math isn't going to harm your success as a programmer, so it's highly likely to increase it. The fact you didn't take math past calculus doesn't mean math is unncessary, it means formal math training is unncessary, and you can pick the math up as you go along ... for whatever subset of programming you are successful in. I guarantee you won't be successful in other subjects without formal math training, however, so as your career progresses you'll either drop out or learn more math, it's inevitable.

    77. Re:Your Results Will Vary by Anonymous Coward · · Score: 0

      You go to the gym not because you have aspirations of mastering a bench press, but because you aspire for a stronger, healthier body. Mathematics are an example of exercise equipment for a software developer.

      I assume you were taking the "Yay, maths!" position, yet you effectively countered it. Personally, I have benefited greatly from learning the abstract thinking and problem solving required for tackling mathematics. But maths are not the only means to acquire those skills, in the same way that going to the gym is not the only path to a "stronger, healthier body."

    78. Re:Your Results Will Vary by Anonymous Coward · · Score: 0

      Many schools cover this with the hodge-podge of mathematics classes known as "Discrete Math". Logic figures prominently, as does trees and graphs, sets, (and etc).

    79. Re:Your Results Will Vary by Anonymous Coward · · Score: 0

      " if you work with RF "

      i.e., "real engineering"

    80. Re: Your Results Will Vary by the+phantom · · Score: 1

      Yes, goals have changed, but I maintain that the goal of the higher education system has never been to create well-rounded people. In the early days, it was about training academics. Even today, many faculty and administrators at universities will claim that this is the goal of a university education. As I noted above, the university curriculum is still structured around the 400+ year old ideal of scholarship. In large part, students are required to take classes outside of their majors because that is the way it has always been done and because this system has produced pretty good results for a fairly long time.

      Moreover, if you want to argue that there has been some period in time that people went to universities in order to become well-rounded people, I would invite you to describe that period. My understanding of the history of such institutions is that they emphasized training academics until the mid-20th century. In the post-War period during the coldest parts of the Cold War, a great deal of funding was put towards training engineers and physicists to design weapons and such, and as time passed people in industry began to realize that trained academics made pretty good employees, which is how we get to the modern idea that higher education should be a kind of vocational training. Do you dispute this history, or do you feel that I am missing something? When was the goal of higher education ever to produce well-rounded people?

    81. Re: Your Results Will Vary by Raenex · · Score: 1

      When was the goal of higher education ever to produce well-rounded people?

      When being an academic meant you specialized in one field, both in research and teaching. When people stopped going to college to become academics. The only reason it makes sense now to require diverse study is for the well-rounded argument, and it's the argument given whenever I've raised this subject (except with you).

    82. Re: Your Results Will Vary by the+phantom · · Score: 1

      Who, specifically, is making that argument? I don't think I have ever seen anyone argue that the primary goal of a college education was to create well-rounded people. Not even Coryoth, the person to whom you originally replied, made that argument. I often see it as a justification for requiring non-major classes, but I have never seen anyone claim that this is the primary goal. See, for instance, the The Chronicle of Higher Education's compilation of answers to the question. Most of the respondents argue that higher education is about learning critical thinking skills, building a foundation of knowledge for future work, and providing students with the necessary information to choose a career-path that is of interest to them.

      My original point still stands: universities were first established to foster research. Students went to college to become academics and to make contributions to human knowledge. Over time, the emphasis has shifted towards more vocational or professional training though much of the curriculum remains the same (possibly due to institutional inertia). At no time was the primary goal of a college education to become a "well-rounded" person.

      To be clear, I am not arguing that there is no merit to the observation that a liberal education produces well-rounded people, and I am not arguing that this is a bad (or good) thing. I am merely attempting to point out that the primary goal of higher education is not simply to produce such people, nor has it ever been.

    83. Re: Your Results Will Vary by Raenex · · Score: 1

      I often see it as a justification for requiring non-major classes, but I have never seen anyone claim that this is the primary goal.

      I never said it was the primary goal. What I've been arguing is what I emphasized above. People today go to college expecting to get a higher-paying job, and that's been why I've been questioning the value of being forced to take courses that will most likely not be used in that endeavor. That was the start and context of the argument when you jumped in.

    84. Re: Your Results Will Vary by the+phantom · · Score: 1

      I am honestly very confused about what your point is. In response to another poster, Coryoth rebutted that the college was supposed to be about education, not vocational training. You incorrectly assumed that s/he was arguing that college was about creating well-rounded people. I responded that creating well-rounded people was not the point and that requiring students to take classes outside of their major was perhaps a historical anachronism (among other reasons, which are highlighted in, for instance, the article I linked above). You are the only person in the entire thread to have brought up the "well-rounded person" trope, and that was only to dismiss it. The only reason I replied was to point out that the well-rounded person argument isn't one that anyone with a clue seriously makes.

    85. Re: Your Results Will Vary by Raenex · · Score: 1

      I am honestly very confused about what your point is. In response to another poster,

      That poster would be me. Maybe if you read my original post the context would be clear.

      Coryoth rebutted that the college was supposed to be about education, not vocational training. You incorrectly assumed that s/he was arguing that college was about creating well-rounded people.

      That's the modern reason, where "education" is often synonymous with "well-rounded". I assumed his point was the modern defense, because the vast majority don't go to college anymore just for an "education" with the expectation to remain in Academia. They go there with an expectation of earning a higher-paying job. It's a checkbox on the resume.

      The only reason I replied was to point out that the well-rounded person argument isn't one that anyone with a clue seriously makes.

      Why? You yourself just said, "requiring students to take classes outside of their major was perhaps a historical anachronism". It's kept around on the "well-rounded" argument, which is essentially what is expressed by many of the people in the article you quoted.

  3. Equating language to math is insulting by Anonymous Coward · · Score: 0

    Yes, you can express language in terms of formal logic in order to describe rules of morphology, syntax and grammar.

    No, learning language is in no way equivalent to learning math or programming. Language is a method of communication, not a coded series of steps arranged to achieve a desired result.

    1. Re:Equating language to math is insulting by ahaweb · · Score: 1

      You did not code your argument in a series of logical steps to arrive at the desired result of demonstrating your conclusion that something here is "insulting". Perhaps that is because you believe such a thing is not to be done with a method of communication!

    2. Re: Equating language to math is insulting by ewanm89 · · Score: 1

      Are you going to argue that recursion and iteration is not mathematics? Yes you may not understand everything in the branch of mathematics that you are applying, but one is still applying it, that doesn't make it sent less mathematics.

    3. Re:Equating language to math is insulting by K.+S.+Kyosuke · · Score: 1

      Language is a method of communication, not a coded series of steps arranged to achieve a desired result.

      The latter requires a way for those steps to communicate with each other. Unsurprisingly, a language is just what is required for that!

      --
      Ezekiel 23:20
    4. Re: Equating language to math is insulting by fyngyrz · · Score: 1

      For most programmers, recursion seems to be a tool to completely -- but unpredictably -- blow out the stack. Cynical, I know, but that's been my experience.

      Although I gotta tell ya, one of my favorite recursive things is a particular area fill routine for rectangular pixels. Simple and beautiful. Just elegant as all get out. Once I understood how it does what it does, it was like someone washed my mental windshield with Windex. That was a great day. :)

      --
      I've fallen off your lawn, and I can't get up.
  4. I completely agree by gweihir · · Score: 1

    While the ideas of mathematics are (usually) precise, the language is fuzzy, informal and requires a lot of context. Everyone who ever has compared a fully formal proof and one done in the typical style mathematicians use can immediately see that. On the programming side, there is no room for fuzzyness. Or rather, whenever it is found, it typically is a bug and often a security vulnerability.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    1. Re:I completely agree by Anonymous Coward · · Score: 0

      the language is fuzzy, informal and requires a lot of context.

      Programming and mathematics have the issue of context in common: the interpretation of both are much more unambiguous and context free than most natural languages. Were the languages of mathematics more context dependent, there couldn't be as much international scientific collaboration and progress.

        Another similarity between the two is the effort of complete modelling: mathematics models objects with specific properties and their relationships and properties of those relationships as completely and consistently as possible, so does programming where the objects are data and processes specifically. The objects and processes are in turn models of information and behaviour of the world to be described by the mathematician or programmer.

      Expressions of natural language have often the same goal (a novel), but may also leave purposeful ambiguities (humor) and contain constructions which have purposes and meanings outside of the language semantics (poetry).

    2. Re:I completely agree by K.+S.+Kyosuke · · Score: 1

      This is what Dijkstra has been arguing since the the 1960s or 1970s or so. Of course, given that Dijkstra has been dismissed and shunned by both mathematicians and programmers all the time, both mathematicians and programmers are doomed to perpetually rediscover the same thing and then proclaim it as a major discovery of their own. :D

      --
      Ezekiel 23:20
    3. Re:I completely agree by gweihir · · Score: 1

      We got good exposure to Djikstra at university (CS course). His problem is that he was ahead of his time. His other problems that even CS folks struggle to understand what he said (not because it is to terribly difficult, but because many CS folks are so terribly dumb). The think is that the formation of a new field of academic and engineering study and practice takes a long time. CS is not there yet. May take another half century or longer.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  5. Mathematics is about concepts not language per se by Anonymous Coward · · Score: 0

    Mathematics is about concepts not only the formalism in which you can serialize mathematical ideas. Both programming and natural languages can be described mathematically.

  6. Bizzarre, Capt Obvious much ? by Crashmarik · · Score: 1

    Where are these stories coming from ? What's next water is wet ?

    You may have a legitimate debate over which is more precise math or particular programming languages but has anyone ever argued a human language is more specific ? I'd love to see people program without understanding the propositional calculus. No strike that I may have actually seen that and it wasn't pretty. Comedy aside, anyone who has ever tried to write a parser understands just how non concrete natural languages are. Something like 90% of your effort is devoted to disambiguation of natural languages.

    Does this guy actually have evidence of anyone seriously making the point he is refuting ? I mean it's trivial take a look at poetry and mathematics and programming languages can't even start to deal with the abstract concepts involved.

    1. Re:Bizzarre, Capt Obvious much ? by Anonymous Coward · · Score: 0

      Where are these stories coming from ? What's next water is wet ?

      You may have a legitimate debate over which is more precise math or particular programming languages but has anyone ever argued a human language is more specific ? I'd love to see people program without understanding the propositional calculus. No strike that I may have actually seen that and it wasn't pretty. Comedy aside, anyone who has ever tried to write a parser understands just how non concrete natural languages are. Something like 90% of your effort is devoted to disambiguation of natural languages.

      Does this guy actually have evidence of anyone seriously making the point he is refuting ? I mean it's trivial take a look at poetry and mathematics and programming languages can't even start to deal with the abstract concepts involved.

      Ahem. Captain misdirected vitriol much? The emphasis was clearly on the relative ordering of programming vs. math, with natural language largely included as a point of reference. Way to seize upon the least interesting/provocative aspect of the piece and attack it like a cat going at a roll of toilet paper. No doubt it felt satisfying, but nothing of value was achieved.

    2. Re:Bizzarre, Capt Obvious much ? by Crashmarik · · Score: 1

      Ahem. Captain misdirected vitriol much? The emphasis was clearly on the relative ordering of programming vs. math, with natural language largely included as a point of reference. Way to seize upon the least interesting/provocative aspect of the piece and attack it like a cat going at a roll of toilet paper. No doubt it felt satisfying, but nothing of value was achieved.

      I see why you went AC for this reply. I'd suggest actually reading the blog post, it's worse than the flaws I pointed out and it's little more than pointless navel gazing. It's a shame so much crap like it has been making it as slashdot stories lately. I have to guess somebody is using multiple dummy accounts to promote stories through the firehose.

    3. Re:Bizzarre, Capt Obvious much ? by the+phantom · · Score: 1

      Does this guy actually have evidence of anyone seriously making the point he is refuting ?

      Kun is responding fairly explicitly to Sarah Mei's post Programming Is Not Math, as evidenced by the link in the third paragraph of his post, as well as the copious quotes that he reproduces and replies to. Having also taken the time to read Mei's post, it would appear that (a) Kun is not misrepresenting her point of view, and (b) she is sincere in her opinion. So yes, I would say that Kun has evidence that at least one person is seriously making the point that he is refuting.

  7. You might not need it, depending. by oborseth · · Score: 1

    I hated math and was not that good at it but I did love solving complex problems and puzzles. I've enjoyed a very lucrative 15 year career in computer programming.

    1. Re:You might not need it, depending. by Anonymous Coward · · Score: 0

      That just means you had some poor teachers.... or just a personality conflict with them (or both, actually).

      solving complex problems and puzzles is what math is.

  8. I second that. by bussdriver · · Score: 1

    Parent and article seem spot on; although, I prefer english and programming to math.

  9. Never had to use any college math on the job by mrflash818 · · Score: 1

    Knowing the concepts may have helped for some work I have done, but, I have never used any advanced math for paid programming.

    Five years as a J2EE developer: zero use of any advanced math for work projects.

    Numerical methods (using Fortran) was just in school.
    Calculus, linear algebra, and such: just in school.

    Big-O notation, to pick algorithms and STL objects, sure, but probably doesn't count as 'math' for this article.

    Since only a fraction of Computer Science graduates will work at a science shop (JPL, etc), I think some of the math requirements are a bit unfair. Perhaps I am just a low-range "Forrest Gump" programmer, but my personal experience was the actual math was burdensome to do to work towards a Computer Science degree.

    --
    Uh, Linux geek since 1999.
    1. Re:Never had to use any college math on the job by presidenteloco · · Score: 1

      "Numerical methods (using Fortran) was just in school."

      So you routinely write a = b / c * d instead of a = b * d / c because you're ignoring precision issues do you?

      --

      Where are we going and why are we in a handbasket?
    2. Re:Never had to use any college math on the job by Crashmarik · · Score: 2

      I suppose set theory, and propositional calculus/boolean algebra don't count as math either ?

    3. Re: Never had to use any college math on the job by Anonymous Coward · · Score: 0

      I always use paranteses and usually scale up, unless risking overflows. 30+ yrs of programming experience are providing often flawless code, or quick fixes. Of course others disagre and make mistakes i wouldnt (& vica versa). Its about unfortunate side effects and over complexity. Its not wise to be proud of necessity of so much experience.

    4. Re:Never had to use any college math on the job by tepples · · Score: 1

      Precision issues are rarely that simple. In some cases, b * d would overflow; you need to first compare d with 0 and then compare b with INT_MAX / d. In other cases, floating-point rounding makes neither clearly more precise, and the easier to maintain solution is better.

  10. Forget math, programming is like organic chemsitry by alphazulu0 · · Score: 2

    As long as we're making gross generalizations...

    A big part of organic chemistry in college is "synthesis" problems where you are presented with a molecule and you're supposed to outline the steps (chemical reactions) required to turn it into a different molecule. I find that this closely mirrors programming where we're manipulating data instead of chemicals. We all have access to the same tools and there's more than one pathway that will work, but we're trying to find the most elegant / efficient solution to get from A to B.

    Most of the students in my OChem class were premeds and many of them struggled with the synthesis problems. A lot of the premed curriculum involves memorizing and regurgitating huge amounts of information, with less emphasis on problem-solving. I always thought the ones that were good at the synthesis problems should switch gears and become programmers.

    az0

  11. Nah ... It's Programming ... by CaptainDork · · Score: 2

    ... and that's it.

    If you're programming litigation, you'll have to pick up some legal knowledge. If it's banking, then finance. If it's science, you'll have to be exposed.

    But ... you don't have to be an expert at anything but programming. The experts do all that stuff. They can spec, but they can't code.

    --
    It little behooves the best of us to comment on the rest of us.
  12. Lack of rigour in math teaching made math suck by presidenteloco · · Score: 1

    It was all the shortcuts, left out "intuitively obvious" steps, and sloppy use of variable names and symbols that drove me up the wall trying to learn advanced math from (imho crappy) math profs.

    Let me tell you about the lecture with no less than three different Epsilons (a rounded one, a less rounded one, and something in between) used in the exposition of the proofs. That and my slight myopia kind of did me in in that class (or would have if I hadn't cribbed notes from my neighbour.)

    Or, when, as a math prof, giving an example of applied math used for something like physics, why don't we just pick completely random variable names, instead, of, say, using m for mass consistently, v for velocity, etc.

    I understand some kind of need to force people to think only of the form and not imbue terms with more semantics that aren't necessarily there in a particular mathematical formal system, but holy cow, could you be more obscure? Why yes I could. I will use 's' for mass on this page, and r' for mass on this next page, just to see if you are paying attention. !!!

    --

    Where are we going and why are we in a handbasket?
    1. Re:Lack of rigour in math teaching made math suck by Anonymous Coward · · Score: 0

      Indeed. A for loop is infinitely more intuitive than a big sigma symbol and so approachable that 8 year old kids can make games in BASIC. All of mathematics needs to be reformulated into a grammar that's understandable by machines. Why? Because then ordinary humans will also have a chance at understanding it sans literally retarding lecturers -- Who won't even talk to a 9 year old that's starting to develop his 3D software rasterizer...

      You see, if we reformulate math as programming then we won't need the professors. It's a war against the entrenched elitists vs the common man over access to information.

      FUCK.

  13. first up let's get one thing straight. by ewanm89 · · Score: 3, Insightful

    Programming is mathematics, it is the application of decision and discrete mathematics. Not all mathematics is infinitesimal calculus (there are different kinds of calculus), algebra or geometry.

    1. Re:first up let's get one thing straight. by Anonymous Coward · · Score: 0

      You poor fool. It's not just the application of decision and discrete mathematics. Aren't you aware that Turing proved these machines can solve any problem that is solvable?

    2. Re:first up let's get one thing straight. by steelfood · · Score: 2

      Math is big. It encompasses everything from continuous (calculus) to discrete (logic). It abstracts even from there into levels only mathematicians would understand.

      People who don't know math think it's just calculus or just algebra or just linear algebra or just abstract algebra or some other high level mathematical discipline. They forget that working with integers is math. Set theory is math. Graph theory is math. Boolean logic is math.

      Math is more than all those things combined. it is, at its core, the perfect application of rules unto objects. The rules can be arbitrary. Rules themselves can become objects by moving to a different level of abstraction. But it doesn't matter. It's all still math. As long as there's a rule and an object, it's math.

      Anyone who has any relationship to a computer that doesn't understand this is not suitable for working with (but not necessarily on) computers. That is to say, it's like asking a car salesman to devise the final layout of the parts of a new car model. You might just end up with the brakes in the glove compartment.

      --
      "If a nation expects to be ignorant and free in a state of civilization, it expects what never was and never will be."
    3. Re:first up let's get one thing straight. by gronofer · · Score: 1

      Agreed. Any program can be broken down into a sequence of mathematical operations. It's generally not the type of mathematics that would be of any interest to a mathematician, but it still falls within the domain.

  14. Obligatory Quote by Gauss by thrich81 · · Score: 2

    TFA tries to make the case (poorly) that Math involves ambiguities and Programming does not.
    The greatest of all mathematicians, Carl Friedrich Gauss, stated, "I mean the word proof not in the sense of the lawyers, who set two half proofs equal to a whole one, but in the sense of a mathematician, where half proof = 0, and it is demanded for proof that every doubt becomes impossible."
    Not much room for ambiguity in that.

    1. Re:Obligatory Quote by Gauss by Anonymous Coward · · Score: 0

      The greatest of all mathematicians was Gauss? LOL. Indian mathematicians like Ramanujan made him look like a preschooler. You should read more history.

    2. Re:Obligatory Quote by Gauss by Anonymous Coward · · Score: 0

      A quote from Gauss (who hardly did mathematics "rigorously" as it's considered today; none of his contemporaries did either) is no proof. The author appears to work actively in mathematics, so his opinion of whether there is ambiguity in contemporary mathematics is likely more accurate than your extrapolation from a centuries-old quote.

    3. Re:Obligatory Quote by Gauss by phantomfive · · Score: 1

      TFA tries to make the case (poorly) that Math involves ambiguities and Programming does not.

      I've been trying to think of how this could be, and the only thing I can think of is the syntax of math is less formal than the syntax of programming. In programming, each command is clearly defined, whereas in English there's some ambiguity about the meaning of the word 'is.'

      I don't think this has any real practical effect on math.

      --
      "First they came for the slanderers and i said nothing."
    4. Re: Obligatory Quote by Gauss by Anonymous Coward · · Score: 0

      Describe formaly how to integrate any equation. Now tell me that maths has no ambiguity.

    5. Re:Obligatory Quote by Gauss by Anonymous Coward · · Score: 0

      Ramanujan tinkered with numbers; Gauss worked on the foundations of mathematics.

    6. Re:Obligatory Quote by Gauss by Beck_Neard · · Score: 1

      Any sort of ambiguity means there must be a method of resolving the ambiguity. This is true no matter if you're talking about human language, math, or programming. In language and math, the method of resolving ambiguity is context. That is, the person you're communicating the concepts with presumably knows enough about what you're talking about to be able to resolve the ambiguity.

      Note that both math formulas and programs are pieces of communication, nothing more. Programs are a way of communicating intent to a computer. Mathematical notation is a way of communicating intent to another human being.

      --
      A fool and his hard drive are soon parted.
    7. Re:Obligatory Quote by Gauss by phantomfive · · Score: 1

      That is, the person you're communicating the concepts with presumably knows enough about what you're talking about to be able to resolve the ambiguity.

      Yes, humans are much, much better at resolving ambiguities. Compared to computers.

      --
      "First they came for the slanderers and i said nothing."
    8. Re:Obligatory Quote by Gauss by Anonymous Coward · · Score: 0

      Have you ever tried to formalize a proof so that a computer can understand it? There is so much left out when humans talk math, and not all of what is implied or "trivial" or "obvious" is really common knowledge among mathematicians. So much is glossed over. Of course mathematicians always pretend they could go into arbitrary levels of detail at each step, but when they actually try to do it the house of cards comes tumbling down.

    9. Re:Obligatory Quote by Gauss by Anonymous Coward · · Score: 0

      But a computer isn't a human. Computers don't understand handwaving and "you know what I mean" -- yet (while mathematicians are very fond of it). OTOH it's not so clear-cut in that computer programming is also communication between people, so it's always a hybrid of person-person and person-machine communication.

    10. Re:Obligatory Quote by Gauss by Beck_Neard · · Score: 1

      > Computers don't understand handwaving and "you know what I mean" -- yet (while mathematicians are very fond of it)

      Yup.

      > OTOH it's not so clear-cut in that computer programming is also communication between people

      No. If all you wanted to do was tell someone how to, say, divide two numbers, you wouldn't tell them through a computer program. You'd tell them through English. Computer programs are always (except in very rare circumstances) ways of communicating with computers. That they can be written in a way to also be useful for other humans is secondary; you can also write French in a way that English-speaking people would find easier to understand.

      Of course, there's pseudo-code, which IS actually intended for human communication, and it's an interesting case study since it 'borrows' from computer languages but has the same kind of ambiguities and nuances as human language. It's also interesting in that lots of high-level languages have been efforts to create 'executable pseudocode' i.e. pseudocode that removes imprecision in intent.

      --
      A fool and his hard drive are soon parted.
    11. Re:Obligatory Quote by Gauss by Anonymous Coward · · Score: 0

      The greatest of all mathematicians, Carl Friedrich Gauss, stated, "I mean the word proof not in the sense of the lawyers, who set two half proofs equal to a whole one, but in the sense of a mathematician, where half proof = 0, and it is demanded for proof that every doubt becomes impossible."
      Not much room for ambiguity in that.

      Every word in that sentence is ambiguous, because natural language is ambiguous (which is why we have lots of problems writing and verifying specifications for software and hardware systems).

      Some of the non-word elements of the sentence, such as the equals sign and 0, have well defined meanings (probably a lot of complex than you realize, unless you've done abstract mathematics in depth), but since those meanings ultimately come down to some expression of words in natural language, they too are ambiguous.

      What does equality mean when the type of one of the elements is "half proof" and the other is "0"? What is the meaning of assigning doubt to impossible?

  15. proofs-as-programs by Anonymous Coward · · Score: 0

    I thought someone proved that programming and doing mathematical proofs were equivalent?
    http://en.wikipedia.org/wiki/Curry%E2%80%93Howard_correspondence

    1. Re: proofs-as-programs by Anonymous Coward · · Score: 0

      Not all mathematical proofs are that rigourous. Many include hand-waving and appeals to intuition. It is a huge task to formalise and codify all the proofs in mathematics.

  16. Thinking of algorithms... by mi · · Score: 1

    Before you can start formulating them — in any language, even in a spoken one — you need to think through the decision-trees and handling of exceptions and errors.

    A "Hello world" program — in any programming language (except, maybe, the assembly) — is vastly simpler than a list of errands you may get from your spouse on a weekend. Heck, a single errand of shopping may be more complex:

    • Buy two pounds of X, if it is fresh, otherwise buy only 1 pound and another pound of Y.
    • Honey, what if they are all out of Y — should I get two pounds of X regardless of freshness or not buy it at all?
    • Reboot...
    --
    In Soviet Washington the swamp drains you.
    1. Re:Thinking of algorithms... by Mister+Liberty · · Score: 1

      Programming has no fuzzy, no irony, no humor. The day it has, we'll have AI, and at the same day
      we'll discard all AI research because it'll lead to .... fuzzy, irony, humor.

    2. Re:Thinking of algorithms... by mi · · Score: 1

      Programming has no fuzzy, no irony, no humor.

      That is only true, when you are programming (today's) machines

      When you are giving instructions to (programming) a human — or anything/anyone else with intelligence (artificial or otherwise) — humor may become available as a construct both for the instructions of the programmer and messages from programmed.

      My argument was and remains: algorithms are the most important part of programming. Before you need to put in writing (or even verbalize it), you need to consider all (or most) of the possibilities. Block schemes are language agnostic...

      --
      In Soviet Washington the swamp drains you.
    3. Re:Thinking of algorithms... by Anonymous Coward · · Score: 1

      I believe the joke is:

      Programmer is about to make a trip to the store, so he asks his wife if she needs anything.
      Wife: Buy a gallon of milk, and if they have eggs buy a dozen.
      Programmer goes to the store and comes home with 12 gallons of milk.
      Wife: WTF?
      Programmer: They had eggs! :D

  17. Why Math matters by tommeke100 · · Score: 2

    No you don't need math to write an iPhone App or an interactive website.
    You do need math to understand why looking up some keys in a HashMap is much faster than iterating over a vector.
    You do need math to understand why some encryption algorithms are better than others
    It just gives you the tools to better comprehend what's going on under the hood, so you have more information to make the right choices in how to implement something.

    1. Re:Why Math matters by Prototerm · · Score: 1

      Bur how often do you need to understand those things to implement a typical computer program that helps a user get something done? Oftentimes, you simply need to know one is better than another and get on with it. Of course, you'd need that understanding to, for example, work on the TrueCrypt sourcecode. But generally? I don't think so/

      --
      "My country, right or wrong; if right, to be kept right; and if wrong, to be set right." --Senator Carl Schurz (1872)
    2. Re:Why Math matters by Anonymous Coward · · Score: 0

      You do need math to understand why looking up some keys in a HashMap is much faster than iterating over a vector.

      Hi Tom, are you a clojure programmer?

    3. Re:Why Math matters by Anonymous Coward · · Score: 0

      you don't need physics play catch. you can use anything (gravity in this case) as a tool in a sufficiently limited domain without the need to understand it.

      there is a link between the amount of precision you intend to engineer into a system and the amount of precision of understanding you must have of its constituents.

      That is to say: you don't have to understand much when your entire program is a prefab widget.

    4. Re:Why Math matters by tepples · · Score: 1

      Bur how often do you need to understand those things to implement a typical computer program that helps a user get something done?

      You need to know the difference in performance between a HashMap and an ArrayList (java) or a dict and a list (python) to help the user get something done 1. correctly and 2. without the program becoming unresponsive. Neither one is better in all cases: HashMap/dict has faster lookup but reorders elements and is incapable of prefix search.

  18. The day that doing CSS isn't called programming by Mister+Liberty · · Score: 1

    I'll start thinking about this in a serious way.

  19. Lots and Lots by 4pins · · Score: 1

    While I freely admit that most of my programming has been in other areas. In every project I do it seems the day comes when boss says, what we need here is a visual. Where: when I click on it here..., when I drag it their..., when I spin it... What you have to understand (and many here do) is that you screen/window/view is laid out in a coordinate system. So you cannot escape it! You quickly need: geometry, trigonometry, vectors, and if your doing any 3D calculus.

    Good luck!

    --
    I will not mourn that which I never had to lose. - Unknown
  20. Some loser needs to learn the pecking order by Anonymous Coward · · Score: 0

    It goes

    1, Mathematician
    2, Scientist
    3, Engineer (and thus programmers)
    4, Art-Liberal degree
    5, No degree at all or community college

    1. Re:Some loser needs to learn the pecking order by Anonymous Coward · · Score: 0

      Scratch that, make it:

      1, Mathematician
      2, Scientist
      3, Engineers (not programmers) that knows basic calculus and basic linear algebra
      3.5 Software Engineers
      4, Art-Liberal degree
      5, No degree at all or community college

    2. Re:Some loser needs to learn the pecking order by Jeeeb · · Score: 3, Insightful

      In the real world the picking order is more like:

      1. Rich parents / Male who is excellent at a popular sport
      2. Prestigious law degree
      3. Prestigious MBA
      4. Good salesman and good at golf
      5. Economics/Law majors/MBAs who got into strategic/management connsulting
      6. (The rest)

  21. The more math the better by EmperorOfCanada · · Score: 3, Interesting

    I went for years keeping my math and my programming separate. Often programming involves little more math than x++. But then I really buckled down and learned a pile of math which I now pile into my programming. Interestingly enough when I try to show my algorithms to other programmers they say, "I forgot all that math 1 day after exams." But these algorithms often are cutting thousands of lines of code away and result in answers that are instant instead of a more iterative approach that could take minutes or much longer.

    The math that I am referring to is all pretty basic year 1 or 2 stuff. Basic Discrete, basic calculus, etc.

    1. Re:The more math the better by Anonymous Coward · · Score: 0

      Example please.

    2. Re:The more math the better by jones_supa · · Score: 1

      Is this game/simulation programming?

    3. Re:The more math the better by EmperorOfCanada · · Score: 1

      Financial. Although another project that I am in charge of is a game which uses much of the math I have recently updated, but nowhere near as much. In that case it is linear algebra and the corresponding matrix related math. Although much of that is taken care of by fairly comprehensive libraries; although it is nice to know what is happening when I have the libraries do their (no doubt optimized) math on things like vectors and whatnot.

  22. I majored in applied math by Snotnose · · Score: 2

    some 20 years ago (yikes, did the math and it's closer to 30). I wanted to do signal processing and such, but I realized MIT grad students were doing all the fun stuff. I now write embedded software, and the only time I use math is when I either go off on a tangent, or sine off on an apology for doing so.

    1. Re:I majored in applied math by Anonymous Coward · · Score: 0

      some 20 years ago (yikes, did the math and it's closer to 30). I wanted to do signal processing and such, but I realized MIT grad students were doing all the fun stuff. I now write embedded software, and the only time I use math is when I either go off on a tangent, or sine off on an apology for doing so.

      Do you ever need a cosiner?

  23. Maths != Trig or Calc or whatever by Anonymous Coward · · Score: 0

    What maths is is a mindset where practical problem solving skills can be learned. This can happen at a "basic" maths level and at a higher level. It's not about memorising your formulae, despite what school might've taught you, it's about understanding and applying the formulae in a logical manner.

  24. No, no, no! by Anonymous Coward · · Score: 0

    Clearly the submitter and the blurb have it wrong. It should be: human-language => programming => mathematics. Why? Well its obvious. The United Statian government allows patents on programs, and doesn't allow patents on mathematics. Clearly it can't be human-language => mathematics => programming, otherwise all of the patents on computer software would be worse than having patents on mathematics (which is illegal). Now it can be argued that (all) computer software can be reduced down to mathematics, so then it reads: human-language => mathematics == programming, but again, this flies in the face of US patent law. (Although the premise for the last assertion has been proven mathematically). Unfortunately a mathematical proof does not hold up in a court of law (at least not in the United States).

  25. I programmed Asteroids in Assembly when I was 12 by MindPrison · · Score: 2

    ...on my Commodore 64, since we didn't have any games when it came out.

    Interestingly enough, I sucked at "school math" and flunked math entirely. Imagine the expression on my math teacher when he saw me coding in assembly at the new computer-park back in the 80s, when he barely could understand basic.

    Since, I've made numerous demos in the DemoScene with Amiga, and later on coding robotics AI with MCUs (as a hobby, nonetheless).

    So no, you can absolutely learn to code quite decent software and hardware without deep math skills, but it helps if you want to do real advanced stuff like coding your own Render-Engine (but then again, how many are they?) My advice - learn whatever you need to achieve what you want.

    --
    What this world is coming to - is for you and me to decide.
  26. Math vs. Formal Logic by Anonymous Coward · · Score: 0

    I was an engineering major in college. I have become a software engineer in my career. My course in formal logic was the most useful training I had for a software engineering career. Math? Yes, useful - especially when I was writing risk analysis software for the options trading industry in Chicago (Black-Scholes etc), but without the formal logic I would have never been able to do what I have accomplished over the years.

  27. uhh by buddyglass · · Score: 1

    IMO programming is almost nothing like natural language.

    1. Re: uhh by Anonymous Coward · · Score: 0

      Depends. Imperative programming is very similar to giving road descriptions, recipees and command orders.

    2. Re: uhh by buddyglass · · Score: 1

      Sure. But I don't "speak" Java. It's a mechanism for encoding instructions. To the extent English can also be used to encode instructions I suppose they're similar in that way, but natural languages interact with the brain in a completely different way.

  28. Symbolic logic... by eyepeepackets · · Score: 1

    would be better than math if one is looking for a bridge from language to programming. Absent symbolic logic, math -- especially algebra -- is a good introduction to the concept of computer programming because of its logic component (application of the algebraic hierarchy is a simple logic system.)

    For kids, Lewis Carroll's symbolic logic is both fun and useful.

    --
    Everything in the Universe sucks: It's the law!
    1. Re:Symbolic logic... by Anonymous Coward · · Score: 0

      Learning logic and critical thought directly instead of assuming assimilation through math courses would do the world wonders. Imagine what the next generation could be like if we threw in a class on formal logic and critical thinking skills into elementary school curricula.

  29. conflating code DOING math with code BEING math by flipk · · Score: 1

    A lot of commenters here seem to be (incorrectly) conflating code which DOES math with code BEING math. Yes there's a lot of products that need high math (i.e. simulations) but there's also a lot of products that are successful when they do extremely complex data movement and organization but very little mathematical transformations.

    If programming was so close to math, wouldn't people who are really good at math write the best code? Maybe that's a straw man statement, but in my experience, the people who are really REALLY good at math (e.g. the radio frequency signals processing guys) happen to write the worst code I've ever seen. I've spent much of my career taking prototypes written by DSP engineers and making them go 10 to 100 times faster and use a tenth as much memory. That's not belittling their skills! They did something absolutely amazing that I cannot do, coming up with the steps and crazy weird math required to process signals. (And often, even though I make their code go way faster, I still don't really understand the math behind it when I'm done.) Their code just happens to not take proper advantage of the hardware or other resources. They do the equations so it *functions*, but they don't know how to make it *fast*.

    The real skill comes from being able to picture the structure of the data in your mind as complex interconnecting shapes and mentally animate the movement and transformation of data in as few steps as possible without redundancy or useless or redundant transformations; and in many cases, being able to picture multiple workers doing their work in parallel is a plus. I'm not saying every great programmer uses their visual cortex, just that they can keep track of a lot of moving pieces in their mind.

    This isn't math. This is more like a visual/spatial skill, like a mechanical engineer designing a complex machine with a lot of moving parts that have to fit together perfectly and move through each other's space in perfect timing. I think it's a different part of the brain from either math OR language.

    I have to agree with Kun that complexity analysis (big-O) is absolutely mandatory, though. Saying complexity analysis is "pretty much meaningless" is the dumbest part of Mei's article. Kun also makes good points about recent innovations in DSP, machine learning, etc come from math--but only the *theory* part. You still need people good at the mechanics of programming to *implement* that theory in a productizeable way.

    --
    --PK (Tech Junkie / Junk Techie)
    1. Re:conflating code DOING math with code BEING math by Anonymous Coward · · Score: 0

      It is still math... code doing math is the same as math doing math.

      Even if you do it via intuition.

  30. depends. VBA is very different from systems arch by raymorris · · Score: 5, Interesting

    A "programmer" can be someone who spends two days putting together a complex Excel macro (poorly), or someone who designs an information systems architecture for a significant enterprise. These are VERY different activities.

    On top of that, I'll say that approximately 85% of people doing programming aren't really competent. Compare how often software crashes vs how often cars fail in such a way that they crash themselves. So you have to specify, are you talking about MOST programming, or competent programming? Most programming isn't done competently.

    Well-designed and larger software projects require a thorough understanding of a large set of rules, both knowing what the rules are, and understanding WHY the rules are as they are, and when to apply which rules in order to move forward. In that sense, it's very much like math. Also like math, one wrong decision can lead you down a path of futility, from whence reversing course is time-consuming.

  31. Formal languages by JimSadler · · Score: 1

    Mathematics, chemistry and physics use formal languages. Terms and consequences are concise but rather difficult to deal with. Informal languages such as we speak daily are sloppy but efficient and rather easy to understand by comparison. It is that slop that makes informal languages so useful. Imagine E= MC squared if you have no clue what E, M or C mean at all. It might take decades to ascertain what the equation means..

  32. Re:Mathematics is about concepts not language per by Anonymous Coward · · Score: 0

    Actually natural languages cannot be described mathematically.

    A SUBSET of a natural language can be described mathematically... but being a subset means there are a lot of expressions in the natural language that cannot be described.

    The problem is that natural languages have unique translators... one for every individual, with no two translators identical.

  33. YMMV by xdor · · Score: 2

    Until you hit something that does require higher math.

    Find the optimal coverage schedule for employees next week given their varied availability

    As simple as this sounds, unless you're willing to wait for the computer to churn thru every possibility: you are going to need some higher math know how to program that answer.

    1. Re: YMMV by Anonymous Coward · · Score: 0

      I only need to know how to visualize the data to pass the decision making process back to me.

      I don't need the best theoretical solution, I need to get the four big wigs to this meeting so every other person who is only busy in theory will be there.

      I could do it in excel, html5, js, tk, or Java. No higher math required.

    2. Re:YMMV by Rockoon · · Score: 1

      I'm pretty sure that for that specific problem you have to search through very large numbers of possibilities if you want a guarantee of optimality. A quick google search tells me that near-optimal is generally the goal of these algorithms, and in those cases they still require some searching (frequently stochastic.)

      --
      "His name was James Damore."
  34. Programming != Math by Prototerm · · Score: 1

    Programming isn't, strictly speaking, math. Not like calculus or algebra is math. It's something else entirely.

    I have a rather annoying learning disability, and have suffered from it since I was in first grade: I have a great difficulty memorizing things. Now, even with that rather annoying problem, I managed to be near the top of the class in both grade school and high school. What happened is I learned early on how to analyze the patterns behind the subjects I was expected to memorize and when test-time came was able to reconstruct most of the required information based on those patterns. Perfect example of this is spelling. I figured out what phoenetic combinations ruled English, and used them to pass tests. Armed with those rules, I only had to remember one or two odd words per week. In history, I found myself being able to understand and explain historical trends and influences. Names and Dates, on the other hand, gave me (literally) a headache. Simple math was easy (just a small number of consistent rules, after all). Sort of. Word problems in math, on the other hand, were difficult at best.

    After I graduated college, I bought myself a Commodore 64 (they were just on the market) and dove right into both Basic and Assembly language. Both were easy for me to analyze and comprehend. Logic may be a branch of mathematics, but to me it's more obvious than anything in the math textbooks. Calculus is (for me) as obtuse and illogical as it gets. "If a water tank with a height of 15 feet and a circumference of 20 feet is 2/3 full of water, with a 1/8 inch hole a foot above the bottom, how long will it take the water level to drop to the hole?" Just plug the hole, whydoncha? Jeez!

    Interestingly enough, I also have problems with computer word problems. Just give me the code (any code -- C, C++, C#, pascal, basic, assembler, SQL) and a little time, and I'll tell you what's causing the bug you're seeing. Now, after all these years, I'm the one everyone comes to when faced with an intractable computer problem that no one else seems able to solve. And I still don't like math.

    --
    "My country, right or wrong; if right, to be kept right; and if wrong, to be set right." --Senator Carl Schurz (1872)
    1. Re:Programming != Math by serviscope_minor · · Score: 1


      What happened is I learned early on how to analyze the patterns behind the subjects I was expected to memorize and when test-time came was able to reconstruct most of the required information based on those patterns.

      Sounds from that like you're a natural mathematician.

      The more maths you learn, the more intricate the patterns become and apparently utterly unrelated areas become connected as an entertaining natural consequence of their existence.

      Calculus is (for me) as obtuse and illogical as it gets. "If a water tank with a height of 15 feet and a circumference of 20 feet is 2/3 full of water, with a 1/8 inch hole a foot above the bottom, how long will it take the water level to drop to the hole?" Just plug the hole, whydoncha? Jeez!

      That's not calculus so much as mindless application of calculus to annoying and pointless word problems. As such, it is utterly hateful. Not to say that calculus can't be used to solve interesting and important problems, or revel interesting patterns about shapes, but those word problems are neither useful nor interesting.

      And I still don't like math.

      My guess is that actually, you might well do, but what you have been exposed to is not so much maths as thehoriffic and perverse mutliation of maths which passes for maths throughout most of education.

      If you haven't read it, read "Lockharts's Lament" and see if it strikes any kind of chord.

      I was always pretty decent at maths at secondary school (it's not apaprently as bad in the UK when I did it as in the UK). I sucekd before then because I didn't have the patience for heaps of arithmetic. At school, at least if you saw the patterns then the problems became somewhat easier to solve. I then did engineering, for which one learns lots of maths. I started to dimly appreciate it somewhere in my third year. I then carried on with education after that and then went to work. My work has always involved quite a bit of maths.

      However, it's only relatively recently that I've really started to actually appreciate it for itself.

      --
      SJW n. One who posts facts.
  35. Programming != Mathematics by Anonymous Coward · · Score: 0

    This is a debate between people without an education or picked up knowledge in mathematics vs. those who do. People who don't, like me, are perfectly happy finding well-paid senior-level positions which do not require in-depth experience of optimized algorithms in C or similar. People who have found an interest in math and who work in specific sections of the industry where the knowledge in math is a necessity may lean towards thinking about "programming" as only being related to the *same work* they perform. Just because a particular job requires a specific skillset does not mean the entire industry requires the same set of skills.

    Where does the notion that being a programmer or developer is akin to becoming a structural engineer? Building a bridge properly requires a very specific set of skills; programming does not. And no, I'm not talking about the person who spends a few months copy/pasting php snippets with google's help - we're talking about people who have spent years developing their craft, *after* formal schooling has ended.

    I started between ages 10-12 on geocities, finally figured out what the hell CGI programming was (I'm nostalgic for those mailto: form actions), and have since progressed to being a senior developer. I would put myself in the 80-90th percentile of backend web developers and 50-70th percentile on frontend. I have only met 3 other web developers in 10 years who actually put in the effort to understand the technology they are working with the same way I do. It's frustrating to deal with software engineering graduates with 5+ years of experience on a daily basis, who don't know the difference between a 301 and 302 http redirect, why their CDN isn't caching (set cache headers...), dealing with complaints about the difficulty of understanding ternary syntax, or explaining why they can't instantiate an abstract class.

    If you want to segregate developers, don't do it on the basis of mathematical and algorithmic logic. Do it based on people who have a thirst to learn (and who actually accomplish this) vs. those who only got into the industry for the money. You can tell the difference between the guy who spends at least some of his free time picking up new skills vs. the one who shows up 9-5 then completely drops everything developer-related until 9am the next day.

  36. It is leftover from IS being too vague by sgt+scrub · · Score: 1

    Math is mandatory for engineers. In the early years people getting a degree in any way related to computers, hardware, software, programming, playing games while smoking weeds... were all engineers. Now that there is mass separation in the field the importance of math on any particular field is not as obvious. Us that design network gear and program network interfaces need math. Lots and Lots of it.

    --
    Having to work for a living is the root of all evil.
    1. Re:It is leftover from IS being too vague by Anonymous Coward · · Score: 0

      Your statements of "math is mandatory for engineers" and "us that design network gear and program network interfaces need math" show a certain amount of disconnect in your thought process. Not all engineers are working on low-level networking. Just because you've learned certain skills does not mean everyone else in the field needs the same skills.

  37. programmers full of themselves by Anonymous Coward · · Score: 0

    Someone with marginal understanding can get acceptable results with sloppy programming. Language and Mathematics requires more rigor. Of course programmers think they're good at those things, too.

  38. Re:I programmed Asteroids in Assembly when I was 1 by Anonymous Coward · · Score: 0

    You used math, sorry to break it to you. You didn't use whatever was being taught in school, but you used discrete math, finite state machienes, and other such things. The sum of math is not algebra, calculus, and differential equations. You were just able to figure out a lot of that yourself without a math class. If you take specific math classes in those areas you can do even better (easier to understand and more robust code)

    I used to think only suer genius people could make compiler parsers, but after learning finite state machienes, I learned it is simple easy just tedious.

  39. A Proof by Anonymous Coward · · Score: 0

    If you can program an algorithm as a proof you minimize maintenance and maximize funtionality. Of course elegant proofs usually make shorter algorithms, eg less code which means less maintenance.

  40. Re:depends. VBA is very different from systems arc by TapeCutter · · Score: 3, Interesting

    TFA is really about the human mind. We understand patterns as different forms of language, music is the most basic and universal, it lights up all areas of the brain, then you have spoken language built on top of musical patterns, then along comes symbolism in the form of writing and icons, math is our most recent and most precise form of natural language.

    The take home message is, expose your kids to maths without boring them to death.

    --
    And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
  41. They're different? by Livius · · Score: 1

    Well, of course maths, programming, and natural languages are different, but all of them involve a symbolic language that models something and expresses that model. Kun seems to be focusing just on the differing degrees of precision these symbolic languages employ.

    People tend to think of natural language as only a medium of communication, but it is also the way the human mind models whatever it perceives or imagines, and despite the fact we do that mostly instinctively, it is by far the hardest thing about language.

    Programming is not math, it is language - a programming language is a language which defines, describes, and expresses an algorithm. Useful programs are frequently express something mathematical, but that is a function of the application, not programming itself.

    Maths is just a whole lot of symbolic language. Learning maths is language learning, but it is also learning to describe things with precision and clarity and algorithmically. Some natural language learning is like that (e.g. advanced Latin grammar) and some is not (e.g. introductory conversational courses).

  42. Re: Forget math, programming is like organic chems by Anonymous Coward · · Score: 0

    I liked the organic chemistry thought process. And genetics too. When genetics died, I started programming.

  43. Programming != Computer Science by Anonymous Coward · · Score: 0

    I feel this discussion is actually talking about computer science. Computer science *is* math; specifically it's a branch of math that's all about algorithms, big O notations, logic, etc. etc. etc.

    Programming is about taking mutually exclusive requirements from two different sources and finding a solution that solves both of them to an extent that keeps you from getting fired. It's about looking beyond what they ask for and figuring out what they really need. It's occasionally useful to know the performance differences between different sorting algorithms and stuff like that, but that's not what it's really about.

  44. or Communications: SMCR model by globaljustin · · Score: 1

    The problem with all the articles like this is that they're either written by people who did take math or didn't

    right...and that biases them...same for the coders as you say...

    what no one considers is what the Communications people have to say...

    see...Communications Theory (as taught today...i'd know...used to teach it as adjunct in grad school) starts with Claude Shannon and his SMCR model: http://en.wikipedia.org/wiki/S...

    sure, there is tons of 'soft science' but there is something relevant here: SYMBOLS

    it really goes like this:

    symbols:logic:math/programming/writtenlanguage

    math/code/written language are all on the same "hierarchy" level...then branch according to ****USAGE FUNCTION**** (I hate that TFA uses that ontology!!!!)

    all math, all code...it's ALL SYMBOLS...and, from a cybernetic perspective, they can all be grouped together when trying to answer questions that TFA poses

    --
    Thank you Dave Raggett
  45. more of why it starts w/ symbols by globaljustin · · Score: 1

    it starts with symbols...then goes to 'logic'...then math/code/language

    here's one way we can know this is true (besides using the SMCR model)...

    it mirrors human development

    humans use symbols before we know what they mean...before we can use **logic** to manipulate symbols in real time to get what we want (aka talking/writing)

    we first mimic the symbols around us like a parrot...we just repeat what we hear

    then we **associate** symbols with things...

    that association allows for us to use logic...logic tells us what symbols result in what actions around us

    ***THEN*** we choose from all symbol systems available to us the best for the situation...

    that's your answer to TFA

    --
    Thank you Dave Raggett
  46. No math compiler by HuguesT · · Score: 1

    Computer programming can be seen as more rigorous than mathematics because if the written program is not correct, the executable will not run; whereas a mathematical proof may contain elements that are not completely described but part of mathematical lore. However we do not possess a compiler for mathematics. Conversely language may be more abstract than mathematics because language, in addition to mathematics, may express information that is not mathematics, e.g. poetry, imagerie, etc. However mathematical abstraction is also very rigorous, which is not the case of poetry or other literary constructs.

    Mathematics is unique in requiring both a high level of abstraction and rigour at the same time, yet this must be performed without any artificial help like a debugger or compilers. In addition, creative mathematics require a high level of intuition and the capacity to concentrate on a specific problem for long periods of time (months, sometimes). Altogether, mathematics requires specific talents that are fairly rare and not necessarily found in programmers or writers.

    Fortunately we are not all alike.

  47. That's not a toad, it's a frog. Or a butterfly? by fyngyrz · · Score: 1

    I'm going to go with this:

    The vast majority of programming is fairly simple manipulation of states and symbols, which are themselves a small subset of numbers. yes and no are 1 and 0, etc.

    The way those manipulations work together quickly becomes very complex.

    You can do a boatload of things with just that knowledge. Entire video games. Many types of process control and dedicated controllers. Most reasonable scripting jobs, most "webby" stuff, database stuff, etc.

    But then adding some knowledge of math, in the purely technical sense, gives us more symbols to manipulate, and more ways to manipulate them, and this, like any major skills enhancement, definitely makes you a better programmer. Some mid-level math concepts -- very simple in nature, actually -- amplify what you can do so much it's just amazing.

    I suspect -- I can't actually tell you because my math is only mediocre to fairly good, nor have I ever knowingly come in contact such a person -- that *really* advanced math skills combined with *really* advanced programming skills (which I can lay claim to) would combine to create a true monster programmer.

    But...

    I think there's something about the essentially concrete nature of programming, and the incredibly abstract nature of higher math, that makes these dual-facet powerhouses the rarest of the rare. In my experience -- admittedly, just one person's career -- serious math heads tend to be pretty lousy programmers. Lots of bugs, poor structure, little to no sensitivity to shortcuts and loading. Then really great programmers seem to be only sorta capable with math (although what they can do with what they have tends to be quite surprising.) Just an IMHO based on my experience. Something I've found interesting enough to contemplate many times. Having said that, I sure would like to meet Mr. or Ms. combination-o-both. :)

    --
    I've fallen off your lawn, and I can't get up.
    1. Re:That's not a toad, it's a frog. Or a butterfly? by RabidReindeer · · Score: 1

      Mathematics is a very wide field. There are specific branches of it - Boolean Algebra and the Calculus of Propositions (symbolic logic) whose mastery will definitely elevate you above the fumbling herds of hack programmers. Basic Calculus teaches one to think in terms of functions, and few programming languages are devoid of the concept of functions or lambda calculus.

      On the other hand, I manage to completely forget even the very existence of trigonometic identities (to my cost) for over 15 years, and unless I'm called upon to do some heavy scientific computing or write my own math function libraries will probably go the rest of my career without needing them.

  48. Two ways in which math helps by Anonymous Coward · · Score: 0

    DISCLAIMER: I have (nearly) finished theoretical computer science and have worked 3+ years as developer then moved to different industry.

    I think there are two pieces to the story.
    There is a piece of math that helps you express better / more efficient algorithms. In that, you need just plain simple knowledge of the programming language syntax and then you express your math knowledge in this language.

    Second piece is the logic, tress, grammars, semantics, all stuff that you learn from mathematics (meaning: logic, formal languages) that really empowers your understanding how the language works itself.

    Personally, I felt like learning all of this stuff above was nice (and extremely painful), but after I had implemented my first programming language (very simple one) that really brought "enlightenment" into what I was doing.

    On the other hand, majority of software work I've seen rarely goes outside of "create your own framework for GUI" and add CRUD operations which are was plain boring for me. For this, you require neither underlying math nor advanced algorithms, so no math required here, and I would dare to say, knowing it, will frustrate you.
    But if you are one of few lucky developers who create interesting stuff, then this knowledge really, really helps.

  49. I think you'll find... by Keill · · Score: 1

    (That) Such is the nature of the problems we currently have, that mathematics isn't really a separate language, and should not be considered and labelled as one - instead being merely a consistent part of every other language, that now shares a set of (standard) labels. If this wasn't the case - then every language would not have their own labels for numbers etc., which act as the foundation of mathematics, itself.

    (Note: There is a difference between what we perceive (of the universe around us), the information of this, and how we represent such information to allow communication between us. Language is ONLY an application of the latter - any consideration of mathematics being defined as and by the former information and perception, automatically means it has nothing to do with language, directly, at all. Unfortunately, some still like to confuse them.)

    Programming languages are applications of both mathematics and logic, whilst often using additional elements of another language, (to make them easier to read by humans), in order to allow computers to function, by transferring the information they require to do so. (Calling them languages is consistent with what language is/how languages function, and not a problem.)

    --
    'Stupidity is an often fatal disease' - R. A. Heinlein
  50. Re:I programmed Asteroids in Assembly when I was 1 by Anonymous Coward · · Score: 0

    I can relate to that :)

    I think the bulk of software development is a form of engineering. Just like most electronics development is done by engineers. There are scientist who develop the devices and algorithms and engineers who make them work. As an engineer, I use math when needed to solve problems. I'll use formulas presented in application notes or look things up in my notebooks. I don't care about (nor do I have time for) deriving formulas from fundamental properties (which is the *real* math in my book).

  51. Computers are based on math by mrprogrammerman · · Score: 1

    Computers are essentially big calculators. The CPU instruction sets consists essentially of math operations, branch control, and input/output.

  52. It's about logic. K&R: by Anonymous Coward · · Score: 0

    void strcpy(char *s, char *t)
    {
    while (*s++ = *t++)
    ;
    }

    1. Re: It's about logic. K&R: by Anonymous Coward · · Score: 0

      Where is the logic in your example?
      Assumptions are not logic.

  53. Bottom line by Anonymous Coward · · Score: 0

    College isn't apparently for everyone, since all I can seem to read is "bohouhouhou mummmyyy the teachers also said I had to take class XXX even though I don't even like it and they don't give chocolates bouhouhou.."

    Yeah ? well guess what on your degree (because apparently that is the only reason you are here : a piece of paper) it will say Master of Engineering. Not java code monkey. So YES the institution that is delivering that piece of paper is FORCING you (OMG call human right watch !) to open your mind and eye and broaden the scope of your knowledge and understanding. Because society is spending $200k on you and a java code monkey is not worth $200k to train.

      You want to train DONT go to college. How hard is it ? there are hundreds of craft schools everywhere. just go there.

  54. What about encryption?And random? by gayleard · · Score: 1

    Nobody seems to have mentioned cryptology. Surely every programmer (or more general IT type) is going to be asked sooner or later, "Is it safe?", "Can the NSA read my code?", "What are the chances of that random() call giving the same answer twice?". It seems to me if you don't have reasonable math you are just going to regurgitate something you have read somewhere.

  55. I do believe its... by Anonymous Coward · · Score: 0

    Maths.

  56. what kind of math are we talking about? by mppp · · Score: 1

    I find that what many people think of when they think of "math" is really just calculating (solve for this variable, optimize this curve, etc.)---what I like to call end-user math or craft-math. It's more akin to cooking or repairing an engine than it is to writing software. The other kind of math, the real kind, if you will, is proof writing. It's a creative process, both goal-oriented and expository, and subject to principles of elegance and efficiency. All of these features it has in common with software development.

  57. Not this old chestnut again by Anonymous Coward · · Score: 0

    Many people can learn to *write* code; and modern languages--especially dynamic languages--make this easier than ever.

    If you can parse languages with precision, then yes, it's quite doable.

    What gets hairy is when you have to debug; post mortem being the most difficult, in my experience. Then you're squarely within theorems & proofs, and this is what separates the cans from the cannots.

    Other evidence that math is good?

    In the times past, why were there so many people that had to rely on ORM to do their SQL for them? For anyone who's comfortable with discrete math, SQL ought to be easy and the leaky ORM abstraction--as opposed to writing one's own abstraction library--is far more trouble than its worth.

    On the databases in fact, how many horribly designed schemas have you seen in your own experiences? I have seen my share and they've been inexcusably bad and evert so clearly not designed by someone even remotely mathematically-inclined.

  58. I think that they are two overlapping domains. by hamster_nz · · Score: 1

    The best book I have ever read on DSP is "The Scientist and Engineer's Guide to
    Digital Signal Processing" - pdfs are on http://dspguide.com/. All of the sample code is in BASIC - yes, BASIC! I have successfully then gone on and implemented many of the ideas presented in many languages, and even in hardware. This highly useful maths can be presented in the what is arguably the worst of programming languages, and it is still very informative,

    Some important areas of programming have very little maths at all. For example math does not care if you just name all your variables "aaaaaa" through "zzzzzz" - the answer is just the same.

    In short both sides of the argument are wrong. Programming and math sit beside each other, with quite a bit of overlap. When working on problems that are in this overlap, you have a bias towards seeing it as solving maths with a programming tool, or programming with maths as a tool.

  59. I, in turn, disagree by Half-pint+HAL · · Score: 2

    The big thing holding back computing is that computer programmers tend to think only in terms of algorithmics, and not in terms of (mathematical) computation. Computation in mathematics allows all sorts of funky stuff, and the only area where it is commonly applied is in vector manipulation. Applying matrices to matrices to matrices allows us to create infinite combinations of reusable transforms, which can then be applied to all the vertices in a 3D model at a low cost. Applying a series of algorithmic procedures to manipulate the same data would be unworkably slow. Algothmic programming results in lots of unintended interactions, and hard-to-track phantom bugs in the code. Computation is harder to start with, but it scales so much better and results in much more stable projects.

    --
    Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    1. Re: I, in turn, disagree by Anonymous Coward · · Score: 0

      Already solved. Try Unity3D. It will allow you to mathematically abstract most transformations, projections and needs for gaming, serious or not.
      Mind, usage of math is domain-specific, while general purpose languages can be used for much more varied needs.
      It boils down to what you need.

    2. Re:I, in turn, disagree by ThePhilips · · Score: 1

      Man, I haven't even mentioned the numerical computing. It is an exception, because that's where programming serves the math, not the other way around.

      In numerical computing, ironically, there is very little overlap between the math methods used in the development and math methods used for the goal of the development. Programs there often look more like a math formula. Developers simply skip the "computer science" as a whole and use the computers (with help of specialized libraries) as almost pure calculators.

      As an exception, it is simply obscures the subject of the discussion.

      The talk here is about what precisely from the math is used in general software development. (IOW, math serves the programming.) My personal experience, having majored in the applied math 15 years ago, is that by studying math one learns the methods to approach the real world problems. "Learns" is a weak word. The methods are implanted, grafted (or even brandmarked) onto the brain. Normal person's brain go into freeze when faced with thousands pages of specification. Person with math background, already switched into "divide and conquer" mode, and probably has already dismissed the >90% of it as trivial, incremental and derivative. (Some people learn it one their own. But studying math is definitely a nice shortcut to get there faster and earlier.) But the math in itself, either discrete/algebra or analysis or numerical, is very very rarely needed.

      --
      All hope abandon ye who enter here.
    3. Re:I, in turn, disagree by Half-pint+HAL · · Score: 1

      Man, I haven't even mentioned the numerical computing. ...

      As an exception, it is simply obscures the subject of the discussion.

      I didn't mention it either. I'm talking about data transforms in general, and the fact that most people can't see the wide applicability of computational transforms to data manipulation tasks that are not strictly numeric is precisely the problem I'm referring to. I'm currently applying the concepts of transformations to manipulating abstract data types and tree structures, because my first attempt at doing it algorithmically resulted in a codebase that was growing exponentially in size with every new case included.

      In abstracting all my data manipulations as computational transformations, I can combine them in arbitrary ways, just as can be done with matrix transforms, thus eliminating the need to write explicit code for every individual case.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    4. Re: I, in turn, disagree by Half-pint+HAL · · Score: 1

      You still have to understand the concepts of computational transforms, though, and most programmers don't.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
  60. Human Language - Logic - Programming by cmeans · · Score: 1

    Subject line says it all.

  61. Logic is more important than Math. by danknight48 · · Score: 1

    Logic comes 1st with programming, nothing else.
    Math or "Maths" is really a secondary skill which allows you to expand on your logic. You can essentially program with minimal knowledge of maths whilst simply using more if/else statements and logic to make up for it.

    I had a GCSE D in maths (lower than average), but i've always been very logical. I learnt the required maths by using my logic to test and understand what i needed, not the other way round.

    Programming without logic is nothing, programming without maths is something google can help you with very easily, or you will pick up yourself using logic.

  62. Missing the point by Anonymous Coward · · Score: 0

    Maths, physics, chemistry, biology, history,human societies are all DOMAINS.
    Programming is basically learning what you can instruct computers to do, and by experience learn how to always get favourable outcomes (direct experience).
    DOMAINS may assist understanding, and even guarantee results, but is not "programming".

  63. Re: That's not a toad, it's a frog. Or a butterfly by Anonymous Coward · · Score: 0

    I think his name is wolfram. I also think maybe the people who started computational trading of stocks in the 80s.

  64. It's actually the other way around. by DanielOom · · Score: 1

    A more fruitful question to ask is how many classes in informatics subjects a mathematics student should take to warrant a degree in Computer Science (instead of general or applied mathematics).

    Informatics consists mostly of GÃdel's incompleteness theorem and Turings halting problem with a bit of propositional logic and lamda calculus thrown in; the rest of computer science is really electronics. A few experiments in electronics and programming may help students to visualise the theory a bit.

  65. Re: Why would I need to understand algorithms? by DanielOom · · Score: 1

    Not everybody needs to understand computers. Almost nobody needs to 'use' a computer.

    Some arts colleges have courses where you can study 'User eXperience Design'. No computing required - just bring some crayons and paper and study old paintings for inspiration.

  66. "mathematical stuff" by Anonymous Coward · · Score: 0

    that I've recently touced into while doing embedded programming (including, but not limited to):

    * State space representation can be useful to understand the physical system which should be programmed. Understand the physics going on at the system. That can be torque, power, hydraulics, mechanics, energy, heat, however they are related and both what to do and what NOT to do so the system doesn't get ruined.

    * Eulers method (cannot do more advanced method since I only can work with integers fast) to "run" differential equations. For example, this way sine and cosine can be generated only with adding and shifting(works like multiplication), just by solving x = -x''. (On a PC one could obviously use runge kutta.)

    * Kalman filter (if not so time critical, the embedded system can get a better "understanding" of the environment surrounding it by combining several sensor measurements in this way)

    * Linear least squares (for analysing data, finding underlying relation between several channels that are affected by the same physical phenomenon and perform calibration as well). Usually the linear least squares analysis is not done on the embedded system, but the result is embedded in software. In general, use linear algebra for what it is worth on data...

    * Fourier transform to find transfer functions on dynamical systems or analyzing communication channels (for example when designing modems). Also typically not done with an embedded system, but the embedded system could exploit fourer transform knowledge.

    * Designing modems, and performing demodulation efficiently within the typical embedded contraints(integer aritmetics, avoid to many multiplications).

    * Understanding channel coding when implementing error correction on the aforementioned modem.

    * Designing IIR and FIR filters, for the modem above or noisy measurements. Also some mathematical understanding is necessary to get these filters working properly with only 16 bit integer aritmetics and reduce runtime.

    * Principal component analysis for lossy compression of data/better understanding of measured data.

    * Have a full understanding of the PID regulator, which is used wherever something should be regulated in a proper way. The PID regulator must also be implemented with 16 bit integer aritmetics to run fast enough on the embedded system. Tuning the PID regulator to get it stable (with shifts to do the the Kp, Ti and Td since we don't have time to do multiplications) is important.

    * Tailor lossy or lossless compression/decompression algorithms for known signals (based on statistics about the signal), so we only store the important attributes. This must also obviously minimize CPU runtime.

    There is also a lot of other mathematical subjects which can be exploited to simplify the programming on the embedded system(or PC)/reduce cpu time and battery usage/reduce amount of work to do or amount of C code necessary to write/getting the system more robust and so on... but this is the few things that popped up now..

  67. No subject by Chewbacon · · Score: 1

    Probably the most eye opening math class I took that really made my coding skills take off was called Applied Math in high school. The focus was just what the title says: application of knowledge learned. It really taught me how to think outside the box when it came to solving problems with math. Solutions I've written for games left me asking myself where the hell I learned the solution to the problem: applied math.

    --
    Chewbacon
    The Bible is like Wikipedia: written by a bunch of people and verifiable by questionable sources.
  68. Relativity but.. by Anonymous Coward · · Score: 0

    I can say that if I didn't have the proper 'math' mind set that when I was faced with storing a 16-digit number in 4 bytes I might not have found a solution. It is quite simple if you think a bit. :)

  69. Language = Math by meburke · · Score: 1

    I am surprised that more people are not better at Math, since language is almost entirely Math. Think of the words we use that denote math terms: Quantity (more, less, many, one, few, all, none, etc.), space (large, small, besides, etc.), relationships (on, in, with, by, all, included, etc.), ..and the list goes on.

    I strongly recommend a book called, "What Linguists Always Wanted to Know About Logic..* (*But were Ashamed to Ask!)" by McCawley.

    http://www.amazon.com/Everythi...

    Incidentally, this book has one of the BEST descriptions of Lambda Calculus I've seen so far.

    I can easily see the disconnect between language and programming; it s pretty much the same as the disconnect between language and good thinking. Language contains many distortions, deletions and generalizations the people who know the language process unconsciously (sometime to their detriment) to complete their understanding of the communication. Computers cannot, at this time, do a good job of imputing the missing components to fully complete the instruction.

    Good programmers are simply better at complete and precise thinking.

    --
    "The mind works quicker than you think!"
  70. Math is computation by Anonymous Coward · · Score: 0

    Depending on what you want a program to do, math is pretty much required, by you or the computer itself.

    One great use for math directly in a program, though, is a scheduling program for the enterprise (ERP). Interestingly this field of math is actually called "programming" and involves finding the optimal intersections of involved hyperplanes vis a vis some wonderfully elegant algorithms.

    This is just one example. Another may be a HFT quant program running Black and Scholes in real time.

    Programming is just knowing how to instruct a computer to do something. Math gives you, IMHO, the most interesting fodder to have a computer perform.

  71. Depends on the level of thinking by GuB-42 · · Score: 1

    Maths can be very concrete (simple arithmetic) or very abstract (number theory, which is also called arithmetic).
    Programming can be very concrete (assembly) or very abstract (pure functional)
    Human language can be very concrete (dog training) or very abstract (philosophy)

    Maths can be very lax (estimation) or very rigorous (formal proof)
    Programming can be very lax (visual programming) or very rigorous (certified code)
    Human language van be very lax (slang) or very rigorous (poetry)