Abstract Maths is like having a Organic Chemist working on understanding the transformation of food at the molecular level. A Software Programmer is like a cook who knows how to mix and prepare food in order to make a delicious dish out of it.
@btilly: it seems as though that would be a correct assertion.
@jacques_chester: I did not know that, does he have a piece on programming languages he found disconcerting? Did he prefer Church over Turing?
I don't think programming languages can really go beyond being strictly mathematical though..
My point is that Dijkstra was kinda big on programming-as-strict-mathematics; a loosey-goosey super flexible language like Ruby would not have met with his favour, IMO.
http://en.wikiquote.org/wiki/Edsger_W._Dijkstra
But especially "On the Cruelty of Really Teaching Computer Science".
http://en.wikipedia.org/wiki/The_Cruelty_of_Really_Teaching_...
I think it is a false debate to say that one discipline is poorer or more valuable than the other. We need both Mathematicians to advance the theories and Programmers to apply their learnings into the real world. Everyone has its place.
I'd be more worried about this attitude if I thought you had much comprehension of the overlap of these fields. To take your own example, many machine learning algorithms begin with N-dimensional spaces (you know, the kind programmers can't comprehend) and go from there—support vector machines are the obvious example ("a support vector machine constructs a hyperplane or set of hyperplanes in a high- or infinite-dimensional space"). But that's just the beginning; the Curry-Howard isomorphism shows that proofs and programs are the same thing. That theorem provers exist at all seems to undermine your original point. The category-extras package for Haskell, which is a set of abstract algebraic entities that, to my knowledge, are used exclusively for mathematical experimentation and not of any practical application at all.
On the other side of the coin, the only practical applications of number theory have been in cryptography, and the big name there (RSA) is simply modular arithmetic combined with things we expect to be true about large primes. This level of math produces practically applicable results roughly every thirty to fifty years. It's wonderful when it happens, but the idea that mathematicians are consistently churning out theories of practical import is laughable. We do have people doing that, and we call them applied mathematicians and computer scientists.
Are most programmers sufficiently mathematical? No—Dijkstra bemoaned this at great length. Does this mean that mathematicians are somehow a superset of programmers? Absolutely not.
Let me be clear. I'm arguing with your tone and the implication behind your ham-handed analogies. What you've simply stated (we need both), I agree with.
Programming benefits greatly from a tiny section of mathematics and the more deeply the connection between the fields grows the more we'll see strong justification for universal patterns in programming and strong realization of abstract mathematics.
It's also a bit of a strawman to pick just number theory as the only field of mathematics to examine for practicality. Our world as we know it today would not exist without diffeq and your own example of machine learning really is just applications of optimization, statistics, probability, and abstract geometry.
"We need them both" is an unrefined statement. They are apples and oranges, though a mathematical programmer might be uniquely powerful as might a programming mathematician (Djikstra?).
I chose number theory specifically because that's the subject of the ABC conjecture whose proof spawned this whole debate.
"A Software Programmer is like a cook who has an undergraduate degree in Organic Chemistry." May be a more apt analogy.