Apollo Guidance Computer: cómo evitó el aborto del Apolo 11
@programacionLo esencial
- Margaret Hamilton, líder del software del Apolo, murió el 30 de septiembre de 2026 a los 90 años.
- Su equipo del MIT programó el Apollo Guidance Computer que guió el alunizaje del Apolo 11 en 1969.
- Las alarmas 1202 y 1201 surgieron por un radar mal configurado durante el descenso del Eagle.
- El sistema de prioridades del AGC descartó tareas no críticas y evitó abortar la misión.
- El código fuente del AGC está publicado desde 2016 en GitHub, línea por línea.
Margaret Hamilton murió el 30 de septiembre de 2026, a los 90 años, según confirmó el MIT. Décadas antes, el software que diseñó para la NASA ya había hecho algo que ningún ingeniero de la época creía posible: dejar que una computadora decidiera, sola y en segundos, qué tareas abandonar para no estrellar la primera misión tripulada a la Luna.
Quién era la mujer detrás del código del Apolo
Hamilton nació en 1936 en Paoli, Indiana. Estudió matemáticas en la Universidad de Michigan desde 1955 y se graduó en Earlham College en 1958, con una licenciatura en matemáticas y una especialización en filosofía. Se mudó a Boston en 1959 mientras su esposo cursaba la carrera de abogacía.
Ese mismo año entró al MIT, primero en el departamento de meteorología junto al profesor Edward Lorenz, antes de pasar al Instrumentation Laboratory. Ahí terminó liderando al equipo de software de los módulos de mando y lunar del programa Apolo: más de 400 personas bajo su dirección, según el obituario publicado por MIT News.
El Apollo Guidance Computer: la máquina que cabía en una maleta
El Apollo Guidance Computer (AGC) era la computadora de guiado instalada tanto en el módulo de mando como en el módulo lunar. A diferencia del software moderno, cada instrucción se programaba directamente en ensamblador y se tejía físicamente en una memoria de núcleo, así que un error no se corregía con un parche: había que rehacer el cableado.
El equipo de Hamilton no solo escribió el código de navegación y guiado. También diseñó algo nuevo para la época: un sistema operativo propio que decidía, en tiempo real, qué tarea merecía usar el procesador cuando no había recursos para todas.
Las alarmas 1202 y 1201 durante el descenso del Apolo 11
El 20 de julio de 1969, minutos antes de que el módulo lunar Eagle tocara la superficie, el AGC empezó a lanzar las alarmas de programa 1202 y 1201. El radar de encuentro (rendezvous radar), que debía estar apagado durante el descenso, había quedado activado por un interruptor en una posición incorrecta.
Ese radar seguía enviando datos a una computadora que no los necesitaba en ese momento, y los ciclos que consumía competían con las tareas de guiado. El resultado fue que el ejecutivo del AGC se quedó sin espacio para encolar más trabajos, lo que disparó las alarmas.
Cómo el sistema de prioridades evitó el aborto
Acá está la decisión de diseño que convierte a Hamilton en ingeniera de software y no solo en programadora. Su equipo construyó un ejecutivo con prioridades, donde cada tarea (un 'job', en el código) tenía asignado un número y el sistema podía interrumpir y descartar las de baja prioridad para garantizar que las críticas siguieran corriendo.
# Extracto adaptado de la lógica del ejecutivo del AGC
# (basado en el archivo BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.s
# del repositorio GitHub chrislgarry/Apollo-11)
P63_DESCENT DEC 4 # Prioridad alta: guiado de descenso lunar
RNDVZ_RADAR DEC 20 # Prioridad baja: lectura del radar de encuentro
# Si el ejecutivo se queda sin espacio para encolar jobs:
NOVAC_ALARM TC BAILOUT # Alarma 1202: descartar jobs de baja prioridad
TC RESTART_P63 # Reanudar solo la tarea crítica de descensoCuando el AGC se quedó sin memoria para nuevos jobs, no intentó ejecutar todo: hizo un reinicio parcial que botó las tareas no esenciales y conservó el programa P63 de guiado de descenso, el único que realmente importaba para no chocar contra la Luna. En la Tierra, el controlador de la NASA Jack Garman reconoció el patrón de esas alarmas por los simulacros previos y le dio luz verde al Eagle para continuar.
Sin ese diseño, cualquier error habría significado abortar el descenso. Con él, el aborto nunca fue necesario: la computadora siguió guiando la nave mientras descartaba, en milisegundos, todo lo que no era indispensable.
El código real, disponible en GitHub desde 2016
En 2016, Chris Garry, exbecario de la NASA, subió una transcripción del código fuente del AGC al repositorio chrislgarry/Apollo-11 en GitHub. Ahí cualquiera puede leer, línea por línea, el ensamblador que escribió el equipo de Hamilton, incluido el archivo con el célebre comentario BURN_BABY_BURN--MASTER_IGNITION_ROUTINE, que bautiza la rutina de encendido de los motores.
El código también revela el estilo del equipo: comentarios con bromas internas, nombres de variables pensados para otros humanos y no solo para la máquina, y una organización modular que anticipa prácticas que hoy damos por sentadas, como separar el manejo de errores del resto de la lógica.
De 'programadora' a 'ingeniera de software'
A fines de los años sesenta, Hamilton empezó a usar el término 'ingeniería de software' para describir su trabajo, en un momento en que la disciplina no tenía ese estatus: programar se consideraba una tarea secundaria frente al diseño del hardware. Insistió en tratar el software con el mismo rigor que la ingeniería aeroespacial, con pruebas formales y análisis de errores antes de que esas prácticas fueran estándar.
En 2016, el presidente Barack Obama le entregó la Medalla Presidencial de la Libertad. La cita oficial reconoce que su arquitectura de software llevó a saltos gigantes para la humanidad, al escribir el código que ayudó a Estados Unidos a poner un pie en la Luna.
Por qué esto sigue importando
El principio detrás del ejecutivo del AGC, decidir de antemano qué tareas son prescindibles cuando el sistema se satura, sigue siendo la base de cómo diseñamos sistemas críticos hoy: desde el scheduler de un sistema operativo hasta los circuit breakers que usan los servicios en la nube para degradar funciones secundarias antes de caerse por completo.
Hamilton resumió su propia experiencia así: 'Mirando atrás, fuimos la gente con más suerte del mundo. No había opción más que ser pioneros.'
📖 Versión extendida con más detalle: https://elsolitario.org/2026/10/07/apollo-guidance-computer-ingenieria-software/?utm_source=telegraph&utm_medium=instant_view&utm_campaign=programacion