Moonshot programming

This iconic image shows Margaret Hamilton standing next to a printout of the flight software that she and her team wrote to control the Apollo Guidance Computer. I recently discovered that the code has been made available via a scan of the printouts, later re-typed as code, and uploaded to GitHub. The code is written in assembly, which consists of individual instructions to load, calculate, and act on data values. Today we use compilers so we can write code in higher-level languages that are easily understandable by humans, but at the time compilers were still pretty new, and the available memory was so limited that they wanted humans to do the optimization at the individual instruction level. Wow!

Here’s an example excerpt from the code. Even if you don’t know AGC assembly (I don’t), it’s possible to follow along due to the excellent comments.

I’m in awe of how this massive software engineering project would have proceeded (How did they test it? And without modern version control… did they use periodic printouts in case they found a mistake and wanted to roll back?) What an inspiring project!

Browsing the open issues on the project, they seem dedicated to increasing the quality of the content by carefully proofreading it against the original scans of the code printouts. What a labor of love :) But what a wonderful piece of programming history!

Post a Comment

I knew this already. I learned something new!