3 ms·
Every good programmer should know? At least abstract Algebra. The thing about advanced maths is that it forces you to think about abstractions in ways that not
by rickhanlonii 11y ago
Every good programmer should know? At least abstract Algebra.
The thing about advanced maths is that it forces you to think about abstractions in ways that not even programming forces you to think. You can get pretty far programming without much abstraction, but you can't understand the mathematical fact that any group of order four is either cyclic or isomorphic to the Klein-four group[1] without thinking in a really abstract way. The more you study these abstractions in advanced maths, the better you get at thinking in an abstraction-first way.
A great book that just came out this year explains this really well by taking you from a basic algorithm to an abstract implementation, explaining the maths along the way (from multiplication to abstract algebra and number theory). It's titled From Mathematics to Generic Programming and I recommend it to anyone who wants to understand more of what I mean[2].
--
[1]: http://math.stackexchange.com/questions/165341/any-group-of-order-four-is-either-cyclic-or-isomorphic-to-v http://math.stackexchange.com/questions/165341/any-group-of-...
[2]: http://www.amazon.com/Mathematics-Generic-Programming-Alexander-Stepanov/dp/0321942043 http://www.amazon.com/Mathematics-Generic-Programming-Alexan...
- j2kun 11y agoThere are many ways to learn about abstraction, and abstract algebra is not the only one. I.e., assorted facts about groups are mostly irrelevant, and if you can learn how to think abstractly by studying, say, graph theory, why would you need abstract algebra?
- insoluble 11y agoI completely agree. Logic or philosophy can help one to practice complex abstraction. Even the study of law (as in legal code) or religion involves abstract thinking.