38

What is the coding language used for the software used on the ISS? Is it NASA's own coding language, or is it something like C, or C#, maybe Haskell?

Wrigglenite
  • 119
  • 7
RoylatGnail
  • 667
  • 1
  • 5
  • 15
  • 9
    Don't forget one of my least favorite languages, Ada. – Organic Marble Jun 03 '19 at 02:35
  • 2
    Related: https://space.stackexchange.com/q/14605/6944 – Organic Marble Jun 03 '19 at 10:42
  • 1
    Related: https://space.stackexchange.com/q/13539/6944 – Organic Marble Jun 03 '19 at 11:32
  • @JBentley It certainly seems so! My comments were just my own opinion and advisory and/or cautionary. I didn't vtc because I wasn't sure. Happily this question took of while I was away, so all's well that ends well. I've deleted the original comment since it's no longer helpful, and RB fixed the spelling of Haskell ;-) – uhoh Jun 03 '19 at 14:16
  • 9
    "The software" - makes it sound like there's a single monolithic program running everything. This won't be the case. There will be hundreds of subsystems, each with several levels of hardware and software automation, each of which will have been built with on a number of tools, technologies, and platforms. – J... Jun 03 '19 at 15:44
  • As I have written before it is almost certainly more interesting to ask "with what process" rather than "in what language" you achieve very high levels of reliability, and the story of the Mars Climate Orbiter is a tale of process not being applied. – dmckee --- ex-moderator kitten Jun 04 '19 at 15:49
  • @dmckee - The processes used for developing the ISS flight software were very rigorous. The processes used to maintain it are even more rigorous. – David Hammen Jun 04 '19 at 22:23
  • 2
    @David I know. Well, at second hand. At one point I worked on a particle physics project where we were going to weld some embedded boards into a big steel can, and we have a series of seminars given by NASA reps on how you try to achieve reliability when you can't stick a paperclip in the reset hole. As a self-aware programmer the whole business is very scary because I know I'm not automatically that good. – dmckee --- ex-moderator kitten Jun 04 '19 at 22:31

2 Answers2

61

Almost all of the safety critical software that runs on the US side of the Space Station is written in Ada. I wrote "almost all" rather than "all" because there are probably some low level device drivers written in assembly. I can't find out in which language / languages the code that runs on the Russian side was written. I wouldn't be surprised if that also is largely Ada.

Non-safety critical software (e.g., anything running on a laptop) is written in a mix of languages.

David Hammen
  • 74,662
  • 5
  • 185
  • 283
  • 24
  • I know that Ada was a standard that was used a bunch about 20 years ago, but are new parts to the station written still using Ada? – PearsonArtPhoto Jun 03 '19 at 09:35
  • 8
    @PearsonArtPhoto - If it's safety critical, yes. The safety critical software runs on the so-called Multiplexer-Demultiplexer (MDM) computers and critical display devices. Non-safety critical software runs on laptops. – David Hammen Jun 03 '19 at 12:13
  • 9
    What are your sources? – Bruno Pérel Jun 03 '19 at 15:20
  • 4
    @Bruno most likely inside information. (This person appears to work there) – Shadow Wizard Love Zelda Jun 03 '19 at 20:36
  • @DavidHammen, what in the world is Ada? – Daniel Jun 04 '19 at 21:56
  • @Daniel - It's a (now niche) language invented by committee in the 1970s and 1980s. The key intent was to provide builtin mechanisms for safety, for realtime programming, and for embedded systems. – David Hammen Jun 04 '19 at 22:08
  • @DavidHammen, you just opened my life to a whole world I never knew existed. Thank you for sharing this. If a curious mind wanted to learn this language, how would he or she go about it? – Daniel Jun 04 '19 at 23:09
  • @Daniel, the Ada programming wikibook and the links therein is a good place to start. – David Hammen Jun 05 '19 at 01:48
  • Fortran in Space, lol. Ada is the language the Apache helicopter fuel program is written in. Most government code uses Ada. It was like Scala before Scala and some more. – Andrew Scott Evans Jun 05 '19 at 03:32
  • @AndrewScottEvans - Most new government code does not use Ada. Ada is a language from some previous millennium, as is Fortran. – David Hammen Jun 05 '19 at 03:42
  • @David Hammen so is the first Apache and ISS. Doesn't make it not true. Hence was and not is. Also, if you don't get the Fortran joke, you have no idea how prevalent it still is in old hardware. It is literally everywhere. You can still get 100k jobs programming it to keep those systems running. – Andrew Scott Evans Jun 05 '19 at 03:53
  • Ada is still very prominent in (military) aviation and spaceflight even in many fairly modern systems. Especially in safety crittical applications. (I worked in software in the field) – Nefrin Jun 05 '19 at 07:18
  • 1
    @Nefrin - That is true to some extent, and apparently more so in Europe than in the US. That the US Department of Defense dropped the Ada mandate 20 years ago led to many project managers having new projects be coded in anything but Ada. – David Hammen Jun 05 '19 at 12:20
  • 1
    Ada is still a great choice for anything safety critical - it's far easier to meet the safety requirements with it than with a language like C/C++ or python etc. – Baldrickk Jun 05 '19 at 14:56
  • 1
    Citation needed. Or at least an explanation of how you know or someone could verify this. – jpmc26 Jun 05 '19 at 17:07
  • @AndrewScottEvans Surely it's not literally everywhere? – Matthew Christopher Bartsh May 06 '21 at 20:56
  • @DavidHammen Ada is in the traditiona of ALGOL languages yes. Otherwise your statement is ... of low information content. It's not important from "what millenium" a software is, it is important that you know exactly what the compiler does with the text you feed it. – David Tonhofer Mar 15 '24 at 22:05
  • @DavidHammen "That the US Department of Defense dropped the Ada mandate 20 years ago led to many project managers having new projects be coded in anything but Ada." There is no pill against stupidity, especially in the domain of IT. Fixating on the language alone is useless, you need the whole process around it. More text than Stackexchange allows in: The Ada paradoxes, 2009-09-25, J.P. Rosen (I do not agree with all of his points btw). – David Tonhofer Mar 15 '24 at 22:14
  • @Baldrickk "It's far easier to meet the safety requirements with it than with a language like C/C++ or python etc". Indeed so. Python is not even on the list of anything that needs safety, and C only if it has been properly whittled down (maybe to something more compatible with MISRA C guidelines). As for C++ maybe for software where malfunctions lead to "annoyances" only. – David Tonhofer Mar 15 '24 at 22:19
  • @BrunoPérel, and others, the source is myself. Leading the work on the software development environment for Ada mandate for the Space Station software was what I now consider a rather negative mark on my career. (I am not a fan of Ada.) While NASA long ago let the Ada mandate go (and while I thankfully got out of that thankless task), the safety critical ISS software continues to be in Ada. It's a bad idea to rewrite existing software (this has resulted in a plethora of software disasters), and it's also a bad idea to mix and match languages in safety critical software. – David Hammen Mar 22 '24 at 02:48
15

There are a lot of programs involved in running the ISS. The exact details are difficult to discern, a lot of NASA's software is available via this site, with some restrictions, but here is what I can find.

  • Astrobee- Runs the "Robotic Operating System"
  • Geolocation via a Python Library
  • Some elements use LabView

I'm sure there are many other languages, including C, C++, and C#, among others, but it would be very difficult to get a complete list.

PearsonArtPhoto
  • 121,132
  • 22
  • 347
  • 614
  • 12
    software.nasa.gov is where NASA catalogs it's released software. Much of the software for the ISS is not releasable. – David Hammen Jun 03 '19 at 04:23