I'm sure there are many programming specializations which require specializated math, eg, trigonometry for 3D. But I'm also sure there are many more specializations that don't.
There's a lot of math involved with stuff like encryption and compression, but most programming tasks that require encryption or compression are best done using an existing library, not writing a new one. In which case you don't need to understand the math inside of them.
The only place I've felt handicapped by a lack of math knowledge is trying to read stuff like Knuth. I can't. This was a minor problem for me "career wise" at a point when I was supposed to custom scramble some data, and after rejecting all my ideas about how to do this, my superior told me, "I don't have time to explain this to you. Go look up something in Knuth." What a crank, lol.
However, I can read plain language descriptions of Knuth algorithms and then implement them correctly. As it turned out, Knuth's algorithms are no longer used in encryption; my superior was so flustered after learning this he decided to drop the whole requirement. Of course, if I'd had better math, maybe I could have presented something which impressed him in the first or second place, but I'm not completely convinced of that either.
Last edited by MK27; 09-25-2011 at 07:30 AM.
Many algorithms are described in heavily mathematic language, especially on Wikipedia. It may be a good idea to be familiar with it, but certainly not a requirement. I will bet that 99% of programmers simply go look for sites which explain things in easy terms instead of trying to be smart by using mathematics to explain it.
I just remembered this. It is not an argument for not learning math, but it is:
1) About how thinking logically does not depend on a knowledge of complex mathematical concepts.
2) About how it might often be better to avoid applying complex math operations, because those operations are usually expensive.
Eventually, I showed that to a friend who does have a lot of formal math -- he worked for NASA doing programming in a high energy physics lab. He said he didn't see anything wrong with what I'd done. And it works great in the 3D breakout game.
Now, if I had been stronger with trig at the time, I would just have done that in a conventional trig way, which would have involved a lot of cos() etc. That code doesn't even use the math library. It is all simple arithmetic, and I'd bet money it is considerably more efficient than a version done with trig (but the code is ugly, lol).
By extrapolation, I think it is not that unusual to see people who's strong suit is math over apply it in situations where it is not necessary. Again, not a reason not to learn, since you don't have to abuse it, but evidence of the fact that being really good at finding situations in which to apply complex math formulas will not necessarily make you the best kind of general purpose programmer (which might be part of what hamstrung my superior from the last post, whom I thankfully no longer have to work under).
Last edited by MK27; 09-25-2011 at 08:52 AM.