By the late 1960s, however, the Instrumentation Lab employed some 400 people on the software effort. Richard Battin ‘45, PhD ‘51, who headed the analysis group, says that another 200 programmers worked on the project as subcontractors.
No one foresaw the difficulty of the programming task, Martin says, because of its unprecedented scale. “Nobody had any experience in the world of software. In, fact the word was not very widely used,” he says. “And there was no such thing as computer science.” Fortunately, at the lab was one of the people who helped invent it.
The Reclusive Genius
“Hal was the most brilliant person we ever had the chance to work with,” says Dan Lickly ‘54, SM ‘55, the Instrumentation Lab engineer who developed the crucial reëntry program for the Apollo command module. Hal Laning ‘40, PhD ‘47, had joined the lab in 1945 as an applied mathematician, and in the early 1950s, he wrote a program called George that converted algebraic expressions into computer code. Because it was the first program to mediate between symbols intelligible to humans and those intelligible to machines, Lickly says, it was the “father of all programming languages,” preceding IBM’s similar but more expansive Fortran by a few years. “This happened just a few months after I joined the lab, and we thought, What on earth is Hal working on?” says Battin. At the time, he says, there was debate about whether it was even possible for a machine to interpret instructions written in a high-level language. “Hal would lock himself in his office–and all of a sudden it was working,” Battin says. (The Apollo flight simulators would be programmed in a home-brewed successor to George, called MAC–“much better than Fortran,” says Hall.)
By the mid-1950s, Laning had joined the Polaris missile team, and he and Battin together developed the groundbreaking Q guidance system, which vastly simplified the calculations that a missile had to perform in flight to reach its target. Laning was also one of the engineers who initiated the lab’s Mars project. Laning’s early design work on the computer for the Mars mission led to his most important contribution to Apollo: the so-called executive program.
At a given time, a spacecraft’s guidance computer might have to coördinate dozens of different tasks: repositioning radar antennas, taking readings from the radar and from the accelerometers, performing error corrections on the gyros, calculating the craft’s trajectory, and determining which rockets needed to be fired–to say nothing of transmitting data to NASA ground control and displaying data to the astronauts. The computer’s processor, however, could perform only one task at a time, so it would have to break up each task into smaller subtasks and alternate rapidly among them, creating the illusion of simultaneity. That division of labor was performed and overseen by the executive.
Apollo programmer Don Eyles explains that in the early 1960s, executive programs used the boxcar method, carving passing seconds into shorter intervals that flashed by like boxcars on a train. Part of a computational task was assigned to each interval, and when the interval ended–when the boxcar passed–the processor switched to another task, whether it had completed the first one or not.
But Laning realized that in an endeavor as unpredictable and time sensitive as sending a spacecraft to Mars–or, as it turned out, to the moon–the boxcar method could prove disastrous. If a few trivial computations ended up taking longer than expected, the whole system could break down. A spacecraft waiting to learn which direction its radar was pointing could end up crashing into a planet.