Apollo and the Evolution of Computer Science
The Apollo Program computers and the first 'non-human' code
Did you ever wonder how computer science really began, and what the age of computing looked like when the Apollo program first launched? It's mind boggling if you look at where we are today with our smart phones and tablets -- the entire computing process is virtually invisible to most. Fifty years ago, when computer science was in its infancy, computers filled entire rooms. If you were tasked with creating the first portable computer for spaceflight, like the Apollo space engineers you started with nothing but hardware—no operating system, no applications to string together—just a metal box with a lot of dials and switches and buttons and little neon light bulbs. How would you get it to do anything? You’d have to figure out a way to get information into the memory inside.
Almost 20 years before the Apollo missions began, MIT built a vacuum-tube digital electronic computer that operated on real-time inputs, called Whirlwind. The US Navy had asked MIT to develop a computer that could simulate air flight for use in the Cold War. Simulating flight meant the computer would need to not just process a bunch of single calculations – but to process this information continually from a constantly changing series of inputs. This super system was also the first to use magnetic core memory and was the model for almost all computing the 1960's. The team at MIT also developed some of the first base code for computer digital inputs, called assembly language which translated the code into the one's and zero's the computer hardware needed. Each line of code punched into a card represented a single instruction in the machine's repertoire. These first steps in software development enhanced the programming speed by freeing up programmers from repetitive and tedious calculations. This new computer language named 'George', was developed by Hal Laning. Laning developed a compiler (named George) to translate the equations into however many lines of assembly language were required.
The baby steps of developing the Apollo Guidance Computer were incredibly low tech and cumbersome compared to today. At first engineers had to set switches to represent bits—a single one or zero per switch—and pressing the right button. As the system evolved and the program commands expanded to more than just a few words, you’d learn the next level, using a large typewriter-like machine to punch holes in cards, then carry a deck of those cards to the “shuffler” (actually a card reader) which would copy the information in the cards into the computer over a cable of many wires running under the floor. One of the coders at the MIT Instrumentation Lab, Lance Drane remembers “the worst thing that could ever happen was to a drop a box of cards because sorting those back into the order of your program was tedious beyond belief. So the whole notion that you had multiple copies of your program electronically and you kept all this and you can cross-check yourself just didn't exist back in those days.”
And the technology continued to evolve bit by bit. Next came magnetic tape on reels that would process even more data and print it out on foot-thick reams of dot matrix paper. And that’s what the age of computing looked like when the Apollo project began in the early 1960s. As the Apollo engineers prepared for lunar landing, the technology evolved and integrated circuits replaced bulky vacuum tubes. The size of the computer came down from a large room to just one cubic foot.
Computing was still slow and the tedious assembly-level code was particularly susceptible to errors (“bugs”), and when an error occurred it was up to the engineers that wrote the original language to hack in and figure out what went wrong. Software code is never universally perfect, but the true strength of a code and its engineers is how quickly an error can be found and remedied.
The limits of this technology was a major hurdle when NASA sent the first man to the moon. But now computers are so fast that when a fault occurs it can more quickly be identified and isolated. Programs today rest on top of billions of lines of code. With today’s processing power, and Draper's 50 years of experience, Aerospace Engineer Alan Campbell, expects that the risk of a code related emergency in future space missions to be drastically reduced.
The original code for the Apollo Guidance Computer was thousands and thousands of lines long, and written in an assembly language many computer coders would be totally unfamiliar with today. It took until just a few years ago for the original code to be digitized and uploaded for the public to see on GitHub: for the Apollo 11 LM code, see Apollo11SourceCode.