Cuando pensamos en la misión Apolo 11, que en 1969 llevó por primera vez al ser humano a la superficie de la Luna, la imagen que suele venir a la mente es la de los astronautas Neil Armstrong y Buzz Aldrin descendiendo por la escalerilla del módulo lunar. Un pequeño paso para el hombre y todo eso. Sin embargo, tras esa hazaña épica había un protagonista menos visible, pero igual de crucial (o más, incluso): el software que controlaba la nave.
En una época en que los ordenadores ocupaban salas enteras y se programaban con tarjetas perforadas, la NASA tuvo que confiar para esta tarea en un sistema operativo pionero que marcó el rumbo de la informática moderna.
El ordenador de a bordo: el Apollo Guidance Computer (AGC)
El corazón digital de la misión era el Apollo Guidance Computer (AGC), diseñado en el Instituto Tecnológico de Massachusetts (MIT) bajo contrato con la NASA. Este ordenador no se parecía en nada a los dispositivos que hoy llevamos en el bolsillo:
- Velocidad de reloj: 1,024 MHz
- Memoria RAM: 2 KB
- Memoria de solo lectura (ROM): 36 KB, almacenada en core rope memory (memoria de núcleo trenzado, literalmente "cosida a mano" por trabajadoras que pasaban hilos a través de anillos magnéticos).
- Peso: alrededor de 32 kg.
Era, en esencia, un enorme ordenador (para los criterios actuales... en aquel momento era un ultraligero) que resultaba extremadamente limitado en recursos, pero diseñado para ser fiable, ligero y resistente a las condiciones del espacio.
El sistema operativo: el "Executive" y el "Waitlist"
El software del AGC estaba basado en un sistema operativo rudimentario pero sorprendentemente avanzado para su época. Sus componentes principales eran:
- Executive: Gestionaba las tareas en tiempo real, asignando prioridad a los procesos más importantes. Por ejemplo, si el radar del módulo lunar enviaba demasiada información y saturaba la computadora, el Executive sabía descartar procesos secundarios y centrarse en los vitales: mantener el control de la nave.
- Waitlist: Funcionaba como una lista de espera de tareas programadas para ejecutarse en momentos específicos. Era una especie de planificador que garantizaba que las operaciones críticas (como encender motores o ajustar la orientación de la nave) ocurrieran exactamente cuando debían.
Lo cierto es que este esquema de funcionamiento hacía del AGC uno de los primeros sistemas operativos multitarea de la historia.
Pero, ¿cuál era el sistema operativo? ¿AGC, Executive o Waitlist?
Ninguno de los tres. El Apollo Guidance Computer (AGC) era el nombre del ordenador de a bordo (del ahrdware, vamos), y no ejecutaba un sistema operativo con un nombre comercial como los que conocemos hoy (Windows, Linux, macOS). Lo que llevaba era un conjunto de rutinas de tiempo real desarrolladas en el MIT Instrumentation Laboratory, conocido internamente con el creativo nombre de 'AGC software' o más formalmente como el Apollo Guidance Software.
Dentro de ese software, el núcleo del sistema operativo se componía de dos partes principales de 'Executive' como planificador de tareas, y de 'Waitlist' como gestor de los procesos programados. Sin más.
El lenguaje de programación: AGC Assembly... y 'verbos' + 'sustantivos'
Los programas para el AGC se escribían en un lenguaje ensamblador propio, AGC Assembly, pero para los astronautas se simplificó la interacción mediante una interfaz basada en combinaciones de verbos y sustantivos, que en sí mismo era un lenguaje de programación de alto nivel.
- Verbos: acciones que se podían ejecutar (mostrar, calcular, iniciar).
- Sustantivos: datos o parámetros sobre los que se actuaba (velocidad, ángulo, tiempo).
Por ejemplo, para mostrar la velocidad en pantalla, el astronauta introducía un código de verbo (como '16' para 'mostrar') y uno de sustantivo (como '65' para 'velocidad'). Era un lenguaje simple pero efectivo, que permitía a los tripulantes comunicarse con el ordenador en pleno vuelo.
El famoso 'error 1202' y la tolerancia a fallos
Uno de los momentos más tensos de la misión Apolo 11 ocurrió durante el alunizaje, cuando el AGC comenzó a mostrar alarmas 1201 y 1202. Estas advertencias señalaban que el ordenador estaba sobrecargado: el radar de acoplamiento estaba enviando datos innecesarios que consumían demasiados ciclos de procesamiento.
Aquí el sistema operativo mostró su genialidad. En lugar de bloquearse o reiniciarse por completo, el Executive descartó tareas no esenciales y garantizó que las funciones críticas —controlar el motor y la orientación del módulo— siguieran ejecutándose. Gracias a ese diseño, la misión pudo continuar hasta que Armstrong tomó el control manual para posarse en la superficie lunar.
En palabras de hoy, aquello fue una demostración temprana de cómo un sistema podía mantener la estabilidad bajo una fuerte sobrecarga de trabajo, algo que incluso muchas tecnologías modernas aún no consiguen manejar con tanta eficacia.
Un software pionero escrito por un equipo visionario
Foto de aquella época en la que se ve a Hamilton sujetando todo el código impreso en grandes tomos. [Museo del MIT]
El desarrollo del software estuvo dirigido por Margaret Hamilton, ingeniera del MIT que fue la responsable de acuñar el término ingeniería de software para dar dignidad y rigor a esta disciplina emergente.
Los primeros trabajos de desarrollo del software de AGC se iniciaron en 1965, cuando Hamilton tenía sólo 29 años. Lideró el equipo de programadores hasta julio de 1969, cuando tenía 32 y su creación permitió a la especie humana llegar a la Luna.
Su equipo escribió y depuró decenas de miles de líneas de código, todo en ensamblador, probando cada módulo con simulaciones exhaustivas. Hamilton insistió en diseñar el sistema con tolerancia a errores humanos y situaciones imprevistas.
La famosa 'alarma 1202' fue, en cierto modo, la validación de esa filosofía: un ordenador que no solo ejecutaba instrucciones, sino que también sabía priorizar y sobrevivir a lo inesperado.
El legado del AGC y su software
Aunque primitivo en comparación con cualquier microcontrolador actual, el AGC y su sistema operativo sentaron bases fundamentales:
- Multitarea en tiempo real: hoy esencial en sistemas críticos, desde aviones comerciales hasta marcapasos.
- Interfaces simplificadas para usuarios no expertos: un antecedente de la usabilidad moderna.
- Tolerancia a fallos: principio central en software que no puede permitirse errores, como el de satélites, trenes o plantas nucleares.
El AGC no se limitó a llevar a los astronautas a la Luna: también llevó a la informática un paso más allá, demostrando que el software era tan crucial como el hardware en la exploración espacial.
Imagen | Marcos Merino mediante IA