There’s been a recent thread in scala-user e-mail list that touched an interesting topic: How and Why is Scala Used in Aerospace Industry?
A few highlights from the thread:
* Scala and Akka are currently used for spacecraft telemetry data display, storage and analysis for European Space Agency. The software is used for all missions at GSOC (the Columbus Module of the ISS, the SAR earth observation satellites TerraSAR-X/TanDEM-X, and some other missions) and for LEOPs at Eutelsat.
* DLR GSOC ( http://www.dlr.de/rb/en/ ) will be using Scala and Spire for space mission planning. The next generation of the GSOC scheduling engine PLATO (http://www.dlr.de/rb/en/desktopdefault.aspx/tabid-6816/4256_read-6303/) is currently being written in Scala.
* Scala is also used for telemetry analysis at JPL (NASA’s Jet Propulsion Laboratory), and more generally for development of modeling DSLs. We are part of a research lab (Laboratory for Reliable Software), which works in close interaction with missions.
* Rüdiger Klaehn’s words: “I am absolutely convinced that functional programming (meaning not just a language that has closures, but programming using almost exclusively with pure functions) is the correct path to reliable software. The most ubiquitous and accepted platform in space operations at DLR and in general in european space operations is the JVM. Even the next generation European Mission Control system (MCS) is going to be written for the JVM: http://www.egscc.esa.int/system.html. So you need a functional language that runs on the JVM and can seamlessly consume JVM libraries. This leaves Scala and Clojure as serious contenders. Since I favour strongly typed languages, the choice was clear.”
Some reasons given by programmers that chose Scala for aerospace industry software:* The coherent combination of object oriented and functional programming (higher order functions, functions as values, pattern matching).
* Support for collections (sets, lists, maps), and iterators over these – although we have them now in most modern languages.