En más de una ocasión he escuchado que la potencia de cómputo de un teléfono inteligente actual es miles de veces mayor que las computadoras que se usaron para llegar a la Luna. Y esto es fácil de comprobar. Considérense que las máquinas de los años 80 (Commodore C64/C128, Apple, Radio Shack) corrían con procesadores a 1 MHz. Hoy tenemos máquinas que corren a 3 GHz. La diferencia es abismal.
Considerando esto, pensar en las computadoras de los años 60 y 70 del siglo pasado es como viajar al pasado. Para empezar, era inimaginable tener una computadora personal en casa. Solamente las grandes empresas se podían dar esos lujos. Además, no había la cantidad de software que hay actualmente. Si hablamos de herramientas de programación, veremos que simplemente escaseaban. Era un mundo muy diferente al que hoy vivimos.
Cuando los programadores del MIT Instrumentation Laboratory fueron encargados de desarrollar el software de vuelo para la nave Apolo 11, a mediados de los años 60, simplemente la tecnología no existía y hubo que inventarse.
Se llegó entonces a una manera de guardar los programas en algo que llamaban “rope memory” y se creó una versión especial de un lenguaje de programación a nivel ensamblador. El ensamblador por sí mismo es difícil incluso en nuestra época, pues está diseñado para que la computadora lo entienda fácilmente mientras que el humano le cuesta trabajo comprenderlo, pues todo se basa en detalles, en operaciones binarias, en bytes nada más.
Para la computadora que guiaría a la Apolo, la AGC – Apollo Guidance Computer, los programadores del MIT escribieron miles de líneas en un ensamblador que podríamos calificar de esotérico. La razón es que simplemente no existían ensambladores estándares. Hubo que crear uno propio.
En la siguiente foto puede verse a Margaret Hamilton, directora de ingeniería de software para el proyecto, frente a la impresión del código que controlaba la nave Apolo.
El código AGC se puso disponible al público por mucho tiempo. Fue el investigador Ron Burkey quien en el 2003 transcribió de imágenes escaneadas de las copias originales del MIT y que, eventualmente, las subió a la red. Hay que decir que Burkey tecleó de nuevo cada línea (a mano).
Esa labor ya de por sí debió de haber sido de lo más ingrata pero lo fue más porque algunas copias escaneadas tenían partes mutiladas y simplemente no se podían leer. Burkey reconstruyó estas partes usando su nivel de ingeniería.
“Un poco más tarde”, dice Burkey, “logré conseguir otras imágenes escaneadas que no estaban mutiladas y encontré que las partes que llené eran 100% correctas”.
El esfuerzo permite que cualquiera pueda explorar el código de ese entonces. Burkey de hecho escribió un simulador de la AGC. Y aunque el código estuvo por mucho tiempo disponible, no pareció que mucha gente se interesara por él, hasta que el interno de la NASA, Chris Garry, subió todo a GitHub en donde mucha gente comparte su código.
En horas, muchos programadores “destriparon” el código, particularmente en lo que se refiere a los comentarios que los programadores originales pusieron en el mismo, que en muchas ocasiones va más allá de lo técnico, sino de frases a manera de broma, así como muchas referencias al momento histórico de los años 60.
Referencias: QZ