2

I was doing some research on the technology behind the Apollo missions and was quite intrigued by how they made the code given the technical limitations of the time. Do any of you know the ways in which people built off the Apollo code to make modern day advancements in technology?

Logimite
  • 21
  • 2

1 Answers1

3

Fortran (formerly FORTRAN in the Apollo days) has become a niche language. (A very niche language; some say it is a programming language that is pining for the fjords.) Fortran still lives on to some extent in BLAS (Basic Linear Algebra Subprograms), LAPACK (Linear Algebra Package), and related libraries. However, these algorithms have been reimplemented in other more modern languages. NumPy, for example, contains no Fortran code. Fortran also lives on in some projects. Underneath the hood, JPL's SPICE is Fortran. (CSPICE is mostly C code that is autogenerated from the underlying Fortran by a program called f2c.)

The Apollo vehicles themselves were programmed in a special purpose assembly language (not FORTRAN). The read only memory in which the machine code generated from that assembly code was stored was hand-woven (yes, hand-woven!) rope memory. Assembly is still used to some extent, mostly in device drivers. Like Fortran, assembly has become a very niche language. It is not, however, pining for the fjords.

The methodologies used to create the software used in the Apollo program were primarily the waterfall model. The waterfall model has its roots in the late 1950s and was formalized in the early 1970s with the Apollo development process as a key example. Waterfall oftentimes does not work, leading to huge cost and time overruns. This has led to newer software development methodologies such as prototyping, incremental development, Agile, and test driven development.

The statement by Max Planck that "science advances one funeral at a time" very much also applies to computer science and software engineering. That Fortran is still used in some places, as is waterfall, are signs that not enough old farts have retired.

David Hammen
  • 74,662
  • 5
  • 185
  • 283
  • 1
    Fortan's still in active development, with the most recent standard being Fortran 2018. I don't understand why we've (and I include myself in this) decided as a culture that it's obsolete compared to some other languages we accept without question, even though their history is also one of old farts. – Erin Anne Dec 23 '22 at 12:59
  • @ErinAnne Fortran has been very slow to adopt modern programming concepts. Every update to Fortran since the 1980s has been a decade or two behind software science. Another problem (and this also plagued Ada) is that because it is a niche language, the static and dynamic analysis tools that are now widely used on non-niche languages are lacking or simply do not exist for Fortran. – David Hammen Dec 23 '22 at 13:40
  • 1
    @ErinAnne The only other languages that are as old as Fortran are COBOL and Lisp. Lisp motivated a lot of modern software development concepts such as functional programming. Lisp still lives on. Even though COBOL has been responsible for a lot of problems such as Y2K, it lives on. FORTRAN has also been subject to a lot of criticism, one of them highlighted in the paper goto statement considered harmful. The extensive use of goto in Fortran code is not limited to Fortran. The C-based Linux code is chock full of gotos. – David Hammen Dec 23 '22 at 14:05
  • My work as a software engineer on the shuttle and B-52 simulators was mostly Fortran. We weren't supposed to use gotos but it wasn't well policed, and there were some in the legacy code. We had a "code of the week" posted in my section's aisle; wish I still had some of those. Many of them featured gotos IIRC. The shuttle simulator had an enormous software infrastructure that made it a lot easier to use Fortran; the B-52 simulator didn't, and I got a taste of what it was really like there. – Organic Marble Dec 23 '22 at 20:07
  • Do you know of any legacies that the Apollo source code has left behind? Like algorithms and stuff still used today? – Logimite Dec 24 '22 at 00:43
  • @Fred assembly languages can be / often are specific to the operating system for the machine they are used on. In the shuttle simulator we had assembly language routines that interfaced flight computer memory addresses to the Fortran programs; but it was a Univac assembly language. – Organic Marble Dec 24 '22 at 01:36
  • 1
    @Logimite Picking two out of many, the Kalman filter was pretty much invented for and refined for the Apollo program. That lives on. The Clohessy-Wiltshire equations were used to describe docking in the Apollo era. That too lives on. There are many other concepts from the Apollo era that live on. – David Hammen Dec 24 '22 at 11:45
  • @DavidHammen Thank you so much – Logimite Dec 27 '22 at 04:14
  • @DavidHammen Where would I find some of the other examples? I'd like to find as much as possible. – Logimite Dec 27 '22 at 04:31