I would love to read more about mainstream functional language being used in scientific domains like CERN, ESA, NASA or SpaceX.
I would love to read more about mainstream functional language being used in scientific domains like CERN, ESA, NASA or SpaceX.
Then again, that might just be a wrong impression I got from reading, among other things, "Lisping at JPL" (http://www.flownet.com/gat/jpl-lisp.html)
I took a compiler class that was taught by the inventor (Dr. Daniel Cooke) of another functional language, SequenceL (see http://en.wikipedia.org/wiki/SequenceL). Cooke had funding from NASA to develop SequenceL because evidently NASA was/is very interested in program correctness (it's hard to guarantee correctness of a C++ program) and a simplified programming model.
The way Cooke explained it in class, SequenceL was born out of a desire for a simpler programming language (he believed that modern programming languages are too complex - so many require extra tooling to be productive) and a desire to make the implementation of a program as close as possible to the definition of the problem. He reasoned that if you could make an executable specification (i.e. the definition of the problem was executable), then all the mistakes that implementers make while implementing a program based on the problem specification/requirements would go away. In other words, since the definition of the problem would be the implementation, zero implementation mistakes would be made.
Interestingly enough, the first SequenceL interpreter and compiler was written in Haskell.
That's because the people making such decisions are not the ones qualified to do so (see the Lisping at JPL article you linked to). Their logic is probably along the lines of "if it's good enough for industry, ..." -- that's not an ellipsis, it is literally as far as the thought probably went.
Source: I worked at NASA for 4 years.
Note well, though, that the coding standards strictly limit the C++ features you can use. It's not done the way your average bunch of C++ code cowboys sling out an application.
F-35 is a similar example (worse because the contractor was probably at fault here: using C++ made the software system go way over budget on a cost-plus contract, and will likely result in larger maintenance contracts down the road. That's a win-win as far as the contractor is concerned...)
http://spectrum.ieee.org/riskfactor/aerospace/aviation/softw...
That is, many of the "safer" languages try to get by with disallowing explosive and dangerous constructs. With some of the more advanced tooling that is available and good discipline, one can still do some amazing things with them.
As far as I'm aware, Fortran and Algol are not widely used. But feel free to correct me.
What exactly do you know about Ada?
I have a friend who worked on autopilot obstacle avoidance for airplanes and I believe they did indeed use C++. It does seem a little primitive / bug-prone compared to some more high-level langs.