The Apollo missions may have heralded one of the first real attempts at creating a large piece of software to control a physical object. In the case of the Apollo missions this meant navigation. Modern software engineers would be dumb-founded by the lack of formal process. But one has to take into account that this was the 1960’s and the field of software engineering had not yet established itself. Indeed many still considered unstructured programming to be the norm. The Apollo XI mission consisted of 145,000 lines of code written for the Apollo Guidance Computer (AGC). It was written by MIT’s Instrumentation Laboratory. The programs were written in a language called MAC (MIT Algebraic Compiler), then translated by hand into assembler, typed onto punch cards.
The most interesting thing? The only type of reliable memory was rope-memory – constructed by looping wires through a core and around a core to represent the 1’s and 0’s of programs. Each program had to be hand-woven, and took several months to create. The entire memory capacity? about 64Kb – that’s kilobytes. The computer itself ran at 0.043 MHz.
The code was likely not the most efficient in the world, but took flight on the Apollo 8 mission in 1968. It successfully helped navigate the spacecraft around the dark side of the moon (where it couldn’t be controlled by radio waves). Its main aim though was the lunar landing of Apollo XI. In fact the piece of code that performed the landing? It was never tested in space, and it was one of the most complex pieces of software written for the Apollo missions.