Hacker News new | past | comments | ask | show | jobs | submit login

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.




Math 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.


I 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.


Okay thank you, I didn't really got that from the article, it makes a lot more sense now. As I see it now the author is saying using maths as an example that what the world needs is not programmers, but rather mathematicians, physicists, biologists, … who can make use of programming in addition to their field's knowledge to solve problems. This is true and I agree, but I'll add that to make programming advance as a tool for everyone to use, we also need computer scientists who can make use of programming in addition to their field's knowledge to solve problems, and that's what I was talking about in my previous comment.


At 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.


> 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.


Using Java as a language to teach about data structures and algorithms is one thing, centering the curriculum on a bunch of J2EE crap is entirely another.

You can make a case for using Java to teach about data structures, and if your alternative is C++, that case is pretty solid. If your alternative is C or Python, both sides can be argued.

Teaching J2EE at uni isn't CS education, it's poorly-aimed vocational education.


It's certainly not like that in Germany. There is usually one Java course in the first semester. The rest is math and cs theory.


It's the same in France. But the language is not necessarily Java, it may also be C, OCaml, Scheme, Python… depending on your university.


To be fair, France is insanely biased towards maths. The typical curriculum if you want a correct career in CS outside of research is to go through an engineering school and the amount of maths (and physics) you need to enter and then to graduate is mostly equivalent to a BSc. I did an engineering degree in France and an MSc in the UK, I can compare. Globally, a French student leaving high school has done slightly more maths than a UK/US first year university maths major (calculus and basic linear algebra are taught in high school). A typical CS major in France, independently of the cursus, will most likely have done the same amount of maths than someone with a maths MSc in the UK (I am talking of a 5 years curriculum which is standard for a CS degree in France). If you take a country still using the old French curriculum like Marocco, the difference is even worse. Part of the high school maths program of Marocco are only taught in advance algebra course in the UK (stuff like cyclic groups).

Everytime I read this kind of article, I can't prevent myself from thinking it's mostly a UK/US problem.


Okay. I suspected that but I didn't know how much that is the case. Thanks.


first year maths at a UK university normally includes a lot more than just "calculus and basic linear algebra"


I 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.


I 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.


Yes, 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.


Hi 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!


Ironically, though, FP is perhaps the worst programming paradigm for actually performing numerical computations.


Mathematica 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.


Those 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.


Math 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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: