5 ms·
I find it disturbing that this article has been written in 2012. While I was reading it I really thought that it was at least 10 years old. Computer science re
by p4bl0 14y ago
I find it disturbing that this article has been written in 2012. While I was reading it I really thought that it was at least 10 years old.
Computer science researchers are doing actual mathematics, and they are clearly more in what the article calls "Lisp school" than the "Fortran school". Research in functional programming is mostly mathematics. Lambda calculi (which was originally not developed to be a programming language at all), types, logic, category theory… Most of the tools used in programming languages research are mathematical tools, and they always have been.
The article is great and I mostly agree with its conclusion, but it seems to miss a lot about what is actually going on in computer science. I understand that it mainly talks about programmers and not computer scientists, but it's less and less true that programmers are not interested in what is happening in computer science research. Lisp invented a lot of the stuff that are now in almost every languages (conditionals, garbage collector, first class function, everything is an expression, recursion…) and it took many years to arrive here. But nowadays I see a lot of interests from the programmer community for what is happening in the programming languages research around Haskell, Scala, OCaml, and even stuff like Coq, Isabelle… ! In order to understand even a little what is actually going on with these research project one have to study (even if indirectly) mathematics.
Now that I have written this comment, I'm thinking that may be I have a skewed/distorded vision and that I'm not really talking about the same people as the article does. I don't know.
- tel 14y agoI feel somewhat similarly to you about the wonderful influx of math via the functional languages these days. I think this article misses the boat on this one when the author considers that lisp hackers avoid math by seeking abstraction---when really there's a lot of math there too.
- BruceIV 14y agoYes, there's lots of great math in programming languages research (it's my field, and I quite enjoy it), but I think the point was that it's only being used to solve "our" problems, not the domain problems that people fund CS to solve.
- tel 14y agoHi Bruce, I'm reaching out to CS researchers interested in language design for my company. Would you like to talk about building languages for saving healthcare? If so, shoot me an email!
- lmm 14y agoAt university in 2005 I studied Mathematics and Computer Science in my first year, hoping for a path into theoretical computer science (e.g. complexity theory). I couldn't find one; mathematics had its discrete side, and made use of programs in many areas, but was uninterested in the theory of computation; computer science was mostly java training (I chose mathematics). So I'm pleased if such research is going on, because back then I went deliberately looking for it and couldn't find it.
- irahul 14y ago> I couldn't find one; mathematics had its discrete side, and made use of programs in many areas, but was uninterested in the theory of computation; computer science was mostly java training (I chose mathematics). I don't understand why schools do that. There is so much to know and learn in computer science course, yet somehow learning j2ee takes precedence above everything else.
- breckenedge 14y agoI suspect that has to do with businesses telling the university what they need out of a CS graduate. Certainly happened when I was going to school. Interestingly, the guys doing the fascinating math and research were in Electrical Engineering, CS was for programmers.
- quonn 14y agoIt's certainly not like that in Germany. There is usually one Java course in the first semester. The rest is math and cs theory.
- p4bl0 14y agoIt's the same in France. But the language is not necessarily Java, it may also be C, OCaml, Scheme, Python… depending on your university.
- benbataille 14y ago
- xaa 14y agoIronically, though, FP is perhaps the worst programming paradigm for actually performing numerical computations.
- jrajav 14y agoMathematica borrows heavily from FP and is well known for its computational performance. And yes, a lot of its guts are imperative, but most of the internal libraries that encapsulate the actual mathematical concepts are written in Mathematica itself.
- jbooth 14y agoThose guts that 'actually perform numerical calculations' as referenced by the above post are not only imperative, they're in Fortran, the language of Real Programmers. Many packages have successfully used FP as a layer over those calculations, but that doesn't invalidate the original point you're replying to. Calling functions to add numbers is in fact that worst possible paradigm for performing the actual numerics.
- sixbrx 14y agoMath is a lot more than numerical computations, however. If you're modeling abstractions like vector spaces (as real mathematicians often will want to do), then functional languages are an excellent choice.
- lightcatcher 14y agoMath is a very broad field. The point of this article is that applied math is generally not done in functional programming, and is not typically part of computer science research (more often happens as dedicated applied math research). Types, logic, and category theory are the sort of things the author thinks that functional programming people concern themselves with, and he is raising the point that these mathematical concepts only help people create better languages and write safer code, not do "useful" things like weather/weapon simulations, solve optimization problems, or image/video processing.
- discreteevent 14y agoI agree - "Mathematics, in the end, does not help you understand computer programming. It is not about finding metaphors, or understanding “fundamentals” that will never be applied. Rather, mathematics is a tool for understanding phenomena in the world." - I couldn't agree more with this. I come from an Electrical Engineering background originally. We did a lot of applied mathematics (in the sense of the article). One year we had a lecturer from the mathematics department who didn't really have a clue about the kind of mathematics an engineer needs. He spent a lot of time proving the most basic/fundamental things, nearly down to the level of 1+1=2. My attitude at the time was "OK that's interesting but so what? I don't need it to get things done in the real world". Its the same thing with the lambda calculus or type theory for me. "OK I get the idea - so what". Its not really of any use to me. Its probably of very little use to anyone except programming language designers and there are very few of them. Its kind of disheartening to me then to see such a focus on these things, article after article. To me it seems that the field is very inward looking in this sense. For me code is just a tool for modeling/solving problems in the outside world. It is the outside world that is interesting. I think the emphasis in the article is the right one. If more people focused on applied mathematics rather than category theory then we probably would get more innovation. Eric Evans said something similar in Domain Driven Design "Instead, the technical talent goes to work on elaborate frame-works, trying to solve domain problems with technology. Learning about and modeling the domain is left to others. Complexity in the heart of software has to be tackled head-on. To do otherwise is to risk irrelevance." One problem though is that I do like lisp and its lineage (smalltalk etc). Had to take fortran years ago. Never really liked it.