GitHub, ese fabuloso repositorio de código usado por miles de proyectos, cuenta ahora con un invitado de excepción: el código fuente del Apolo 11, la misión espacial con la que el ser humano llegó a la luna por primera vez.

Este código ya estaba disponible en Internet, pero colocarlo en una plataforma tan popular como GitHub facilita el acceso para todos aquellos interesados en lo que sin duda se ha convertido en una curiosidad histórica y que, en su tiempo, fue un monumental avance.

Una de las cosas que más han llamado la atención han sido las pocas líneas de código que se emplearon: tan solo unas miles. Para hacernos una idea, el software necesario que correr todos los servicios de Google está compuesto por en torno a dos mil millones de líneas; y Windows, el sistema operativo de Microsoft, lleva alrededor de cincuenta millones, tal y como explicaron en Wired. Según declaró Keith Collins, periodista de Quartz, «hicieron mucho trabajo contando con muy poco espacio. Un programador ha calculado que un iPhone, que llevamos hoy día todos en el bolsillo, tiene suficiente código como para ejecutar 120 millones de misiones Apolo».

Según explicó Collins, los programadores del MIT tuvieron que inventar en aquel entonces el tipo de software de vuelo que hoy en día damos por sentado. Para ello, desarrollaron una nueva forma de almacenar programas bautizada como «rope memory» y además crearon un nuevo lenguaje de programación, una variación de ensamblador, que es difícil de leer para los programadores actuales.

Precisamente por esto último es que fue necesaria la intervención de un investigador como Ron Burkey, especializado en tecnología, para conseguir hacer accesible el código. Resulta que en su momento el MIT lo puso en forma de imágenes escaneadas de los originales en papel, por lo que Burkey no solo debió transcribirlo sino que se vio obligado a rellenar las partes ilegibles usando su propio conocimiento, algo que valido más tarde gracias a otros escaneos de mejor calidad.

El código original

apolo-11-2

Lo que se puede ver en la foto que hay sobre estas líneas es el código original impreso en papel. Quien sostiene la enorme pila para que no se caiga es Margaret Hamilton, la ingeniera de software líder del equipo que se encargó de escribirlo.

Margaret Hamilton trabajó en todas las misiones tripuladas Apolo e incluso en algunas de las no tripuladas. Ella fue quien también acuñó el término de «ingeniería de software» para diferenciarlo del de hardware y de otros tipos de ingeniería. Y es que por entonces, el software estaba infravalorado y a ella le interesaba que se le concediera la importancia que merecía. En una entrevista a Verne, declaró:

» Durante los primeros días de este proyecto se trataba el software como un hijo adoptivo y no se tomaba en serio como otras disciplinas de ingeniería, como la ingeniería de hardware, y se pensaba en él como arte y magia, no ciencia. Siempre he creído que arte y ciencia estaban involucradas en su creación, pero en ese momento la mayoría pensaba de otra forma. Sabiendo esto, luché para legitimar el software, de modo que tanto esta ingeniería como los que la construían recibieran el respeto que merecían (…) «

Un código con sentido del humor

Pero aparte del interés que puede despertar en la historia de la ciencia y la técnica, hay también una curiosa vertiente cultural dentro de todo esto, pues el código contiene pequeñas referencias a eventos de la época en que fue escrito y algunos detalles que revelan cierto sentido del humor.

Por ejemplo, la rutina de encendido principal tiene como nombre «BURN_BABY_BURN». El nombre por sí mismo ya tiene un tinte cómico, pero tiene una historia detrás: hace referencia a una frase que usaba un popular DJ de una estación de radio de los 60 cuando se ponía un nuevo disco de éxito y que se convirtió en el grito de guerra de los disturbios de Watts, en Los Ángeles durante 1965.

Podemos encontrar más muestras de humor en cosas como un comentario a dos líneas de código que dice «TEMPORARY, I HOPE I HOPE», o en el nombre del programa del teclado y del sistema de indicadores: «PINBALL_GAME_BUTTONS_AND_LIGHTS.s.».

Que el código esté disponible para ser observado por todo el mundo es lo que permite hacer estos pequeños descubrimientos, además de poder ver cómo los desarrolladores de entonces encontraban soluciones a problemas que no se habían dado nunca antes: toda una experiencia que puede ser revivida hoy por cualquiera.