Many people believe the computer systems of the Apollo 11
space craft are ancient and little can be learned from them. I disagree. The
computer systems in the Apollo 11 were, in some regards, more advanced than the
computers of the 1990s and early 2000s. There are a couple of things that lead
me to that conclusion.
The first is that the computer on the both the Lunar module,
“Luminary” and the command module, “Comanche” were networked wirelessly via
radio frequency and also were in direct communication with the computer at the
mission control, “Tranquility.” This was in July of 1969. We did not develop
robust wireless networking technologies for another nearly three decades with
the development of the 802.11 “Wi-Fi” protocols in 1997. Taking this a step
further, even wired communication between computers was not standardized until
four years later with the release of the 802.3 Ethernet standards. Needless to
say the communications for the computing systems were decades ahead of their
times.
The second major advancement in computers that was ahead of
times was the processor itself. Though the system performed around 1000 times
slower than a modern computer, it had some features that were not developed
commercially in processors until the early 2000s. Among those features was the
capability to run multiple threads. Threads are independent processes that can
run at the same time; for example it was capable of tracking the exact location
of the spacecraft using computer vision to determine the view angle of
particular stars at the same time as it was calculating the firing thrust of
the engines to properly align the craft for a safe landing. We did not have
true multi-thread processor capabilities in home computers until around 2001
with the release of the first multi-core processor by Intel. You will also
notice that I mentioned computer vision in the example. You might be surprised
to realize that the computer in Luminary did live-image processing to determine
the angle and location of the craft both for the lunar landing and the reentry
angle to make it safely back to earth.
The third advanced feature of the computer in the Apollo
spacecraft was the ability of the system to “self-heal.” During the mission, an
unlikely set of circumstances caused the guidance computer to begin throwing
alarms. These alarms were caused by the radar system that was tracking the
module for recovery in the case of a mission abort. The program started using
too much computing power at a critical phase in another thread that was helping
to land the craft. The robust design of the system allowed the computer to make
the decision to terminate the radar process and focus on landing the craft.
Self-healing computer code and systems are still an advanced field of computer
science.
I am fascinated by the excellent work done by the team at
the Massachusetts Institute of Technology under the direction of Margaret
Hamilton. The code was publicly released in July of 2016 and computer scientist
all over the world got to see the human-ness shining through in the very
complex code. There was a terrible habit of typing “WTIH” for “WITH” about 20
times in the code comments. The routine names in the code were fascinating and
made it easy to picture the imaginations of the young engineers, sparked by
being on the spacecraft, as they wrote code segments like
“LUNAR_LANDING_GUIDANCE_EQUATIONS” and “BURN_BABY_BURN-MASTER_IGNITION_ROUTINE.”
There was even apparently a problem in an early version of the code to leave
extraneous data in DVTOTAL based on a comment block in the code that stated
very clearly, “don’t forget to clean out leftover DVTOTAL data when GROUP 4
RESTARTS and then BURN, BABY!” It is difficult to figure out what DVTOTAL is
from reading the code, but, very clearly, it is important to clear it before
this routine. I am fairly certain that “BURN BABY!” means let’s get this rocket
into space.
-->