23 de octubre de 2026

Curiosidad que conecta

Margaret Hamilton y la alarma 1202: por qué el ordenador del Apolo 11 no se colgó

Margaret Hamilton murió el 30 de septiembre de 2026, a los 90 años. Lo anunció el MIT el 7 de octubre en su nota de despedida, que la recuerda por haber dirigido el equipo de software de su Laboratorio de Instrumentación durante el programa Apolo de la NASA, el equipo que programó los ordenadores que llevaron a los primeros astronautas a la Luna.

Su trabajo más recordado se puso a prueba el 20 de julio de 1969, siete minutos antes de que el módulo lunar Eagle se posara. El ordenador de a bordo encendió la luz de alarma y mostró un código que la tripulación no conocía, el 1202, con el que avisaba de que tenía más trabajo del que podía terminar a tiempo. No se colgó porque su software estaba preparado para eso. Cada vez que se saturaba, se reiniciaba, dejaba fuera lo que sobraba y retomaba lo necesario para aterrizar desde donde lo había dejado. Saltaron cinco alarmas en algo más de cuatro minutos, y el Eagle se posó igual.

¿Qué pasó en los últimos minutos antes de tocar la Luna?

El motor de descenso del Eagle se encendió a las 102 horas, 33 minutos y 5 segundos de misión, contadas desde el despegue, según el informe oficial de la misión de la NASA. Cinco minutos y 16 segundos después, a unos 10 kilómetros de altura, Neil Armstrong avisó de la primera alarma. Ni él ni Buzz Aldrin sabían qué era el 1202, y Armstrong le pidió a Houston que les dijera algo.

En el control de misión, Steve Bales, de 26 años, que vigilaba el guiado del módulo lunar, y Jack Garman, uno de los ingenieros de software de la NASA, reconocieron de dónde venía el problema. Bales le dijo al director de vuelo que se podía seguir, cuenta la NASA en su historia de los ordenadores de vuelo, y menos de medio minuto después del aviso Charlie Duke contestó desde Houston con un «We’re Go on that alarm». Seguían adelante.

Hora de misiónAlarmaFaltaba para posarseQué pasaba
102:38:2212027 min 18 sLa primera, a unos 10 km de altura. Houston dice que sigan.
102:39:0212026 min 38 sAldrin nota que salta cuando pide en pantalla la vista 16/68.
102:42:1812013 min 22 sA unos 900 metros. Houston responde que es del mismo tipo y que siguen.
102:42:4312022 min 57 sHouston la da por recibida.
102:42:5812022 min 42 sLa última, a menos de 300 metros del suelo.
102:45:40——El Eagle se posa en la Luna.
La hora de misión cuenta horas, minutos y segundos desde el despegue. El Eagle se posó el 20 de julio de 1969 a las 20:17 en tiempo universal. Fuentes: informe de la misión de la NASA (tabla 5-I) y transcripción del Apollo Lunar Surface Journal.

Aldrin se dio cuenta de que la alarma saltaba cuando le pedía al ordenador la vista «16/68», con la distancia al punto de aterrizaje. Esa vista no le cargaba mucho, pero sumada a todo lo demás bastaba para desbordarlo, y dejó de pedirla, según los comentarios del diario de la NASA sobre el alunizaje, el Apollo Lunar Surface Journal. Las alarmas no estropearon el guiado, dice el informe de la misión, pero les robaron atención. Armstrong contó después que, hasta bajar de unos 600 metros, no pudieron estudiar con calma dónde iban a posarse.

Qué significaban las alarmas 1201 y 1202

El ordenador del Apolo, el mismo modelo en el módulo de mando y en el lunar, llevaba un pequeño sistema operativo de tiempo real. Una parte, el Ejecutivo, repartía el trabajo. A cada tarea le daba una prioridad y un hueco de memoria para sus cálculos, un core set, y a algunas, además, un área más grande llamada VAC. Había siete core sets y cinco áreas VAC, recordaba en 1998 Peter Adler, que programó parte del software del módulo lunar en el MIT.

Si una tarea nueva no encontraba core set libre, saltaba la alarma 1202; si lo que faltaba era un área VAC, la 1201. Las dos siguen en el código del módulo lunar del Apolo 11, que hoy se puede leer en GitHub, con su comentario en mayúsculas al lado, «NO CORE SETS AVAILABLE» y «NO VAC AREAS». El informe de la NASA las llama desbordamientos del Ejecutivo, la señal de que el ordenador no podía hacer en un ciclo de cálculo todo lo que se le pedía.

El radar que se comía el 15 % del ordenador

El culpable fue el radar de encuentro, el que servía para reunirse con el módulo de mando después de despegar de la Luna. Según el informe de la misión, con su interruptor en AUTO o en SLEW, los sensores que medían la posición de la antena del radar recibían una corriente de 800 hercios que tenía la misma frecuencia que la que el ordenador usaba como referencia, pero no iba en fase con ella. Esa diferencia hacía creer a sus convertidores que la antena se movía, y mandaban al ordenador pulsos sin sentido, hasta 6.400 por segundo cada uno de los dos. En el peor caso, se comían el 15 % de su tiempo.

En lo más exigente del descenso, el ordenador ya iba a cerca del 90 % de su capacidad, añade el informe. Con más de un 10 % robado por el radar, la tarea de navegación y guiado, que se lanzaba cada dos segundos, no terminaba antes de que tocara empezarla otra vez. El Ejecutivo la volvía a lanzar y reservaba memoria nueva para cada copia, hasta que no quedó sitio.

Se suele contar que un astronauta se dejó un interruptor mal puesto. Fred Martin, uno de los responsables del software en el MIT, escribió en 1994 que era la lista de procedimientos de la tripulación la que pedía ponerlo en AUTO antes del descenso, y la NASA habló en 2003 de un guion de operaciones equivocado. Para el despegue de la Luna, Houston pidió dejar el radar apagado, y en las misiones siguientes el software dejó de atender esos pulsos.

Cómo se recuperaba de cada alarma

El reparto por prioridades lo había ideado Hal Laning, del mismo laboratorio, según el MIT. En vez de dar turnos iguales a todas las tareas, el ordenador atendía siempre la más importante, explica la NASA. Para cuando se quedaba sin sitio también había un plan, el reinicio por software. Un programa consultaba unas tablas para saber qué trabajos relanzar primero, y cada uno seguía desde el último punto que había guardado.

Adler lo explicaba con un ejemplo de 1998. Si su Windows 95 hubiera sido tan listo como el Ejecutivo del Apolo, al reiniciarse no habría vuelto a poner el CD de música, pero sí la ventana del correo que estaba escribiendo, con el mismo texto. En el Apolo 11, cada reinicio volvía a arrancar lo importante, como el guiado del motor de descenso y la pantalla que informaba a la tripulación, y dejaba fuera los trabajos del radar que se habían acumulado por error.

Houston podía fiarse porque lo tenía estudiado. Antes del vuelo se había decidido que este tipo de alarmas no obligaba a abortar, y en el descenso no se repetían sin parar y la navegación seguía bien, recoge el informe de la misión. Adler añade que en la sala de control lo sabían porque el MIT había probado a fondo esos reinicios.

¿Cuánto de todo esto era de Hamilton? Ella dirigía a la gente que escribía el software, más de 400 personas, y el MIT la presenta como la responsable de los equipos del módulo de mando y del módulo lunar. Su nombre encabeza las firmas del programa del módulo de mando del Apolo 11, de marzo de 1969, como jefa de programación. Al premiarla en 2003, la NASA destacó sus ideas de planificación por prioridades y de pantallas de prioridad, que dejan decidir a los astronautas, y en su historia de los ordenadores de vuelo concluye que el Apolo 11 demostró que el software debe saber recuperarse solo de errores que nadie había previsto.

Cómo se programaba un ordenador que iba a la Luna

El ordenador del Apolo pesaba unos 32 kilos, según la NASA. Tenía 36.864 palabras de memoria fija, para los programas, y 2.048 de memoria borrable, la que hoy llamaríamos RAM, con palabras de 16 bits. Pasado a bytes, unos 72 KB y 4 KB. Un PC para jugar como el de nuestra guía para montarlo por piezas lleva 32 GB de RAM, unos ocho millones de veces más, y el 1 de octubre Google mandó al espacio chips de inteligencia artificial en el primer satélite de su proyecto Suncatcher.

La memoria fija era una cuerda tejida. Sus núcleos, unos anillos magnéticos diminutos, iban ensartados en hilos de cobre. Si un hilo pasaba por dentro de un anillo, el ordenador leía un 1, y si pasaba por fuera, un 0. Cada núcleo guardaba cuatro palabras, con hasta 64 hilos, explica la NASA. Las cuerdas las fabricaba Raytheon en las afueras de Boston, sobre todo mujeres contratadas por su experiencia en la industria textil, cuenta el MIT.

Eso obligaba a terminar muy pronto. En el calendario que planeó la NASA, el programa se entregaba al fabricante ocho meses antes del lanzamiento, y la cuerda tenía que estar lista cuatro meses antes. Una vez tejida, no se podía cambiar ni un bit suelto: cualquier cambio obligaba a tejer una cuerda nueva. Por eso, resume la NASA, el software «tenía que ser perfecto».

Para escribirlo no había pantallas. Los programadores escribían el código a mano, lo pasaban a tarjetas perforadas, una por línea, y entregaban el mazo a un operador, que al día siguiente les devolvía el resultado impreso, cuenta el MIT. Los ordenadores en los que se desarrollaba sacaban además listados impresos del código, que hacían de documentación, según la NASA. Son los papeles que aparecen junto a Hamilton en su foto más famosa, tomada en el MIT en 1969.

Ese código, transcrito de los listados que guarda el Museo del MIT, se puede leer hoy en GitHub, y deja ver el humor de la época. El encendido del motor del módulo lunar está en un archivo llamado BURN_BABY_BURN–MASTER_IGNITION_ROUTINE, y el programa del teclado y la pantalla, en PINBALL_GAME_BUTTONS_AND_LIGHTS.

La niña que estrelló el simulador

Un día, Lauren, la hija de Hamilton, de cuatro años, jugaba en el laboratorio con el simulador del módulo de mando y lanzó sin querer el P01, un programa para antes del despegue, en pleno vuelo simulado, cuenta el MIT. El simulador se vino abajo. Hamilton propuso proteger el software para que eso no pudiera pasar en una misión, pero se lo denegaron, porque los astronautas estaban demasiado entrenados para equivocarse así. En el Apolo 8, en 1968, Jim Lovell lanzó el P01 por accidente y se borraron los datos de navegación. Después de aquello, sus cambios entraron en el programa, uno de los primeros ejemplos de programación defensiva, la que se adelanta a los errores, según el MIT.

¿Inventó ella la expresión «ingeniería del software»?

Muchas veces se dice que sí, pero el origen de la expresión se discute. Hamilton contaba, en una entrevista que recoge el MIT, que empezó a usarla para que el software y quienes lo hacían recibieran el mismo respeto que otras ingenierías, y que al principio les hacía mucha gracia a sus colegas. El MIT, en 2016, escribió que se le atribuye haber popularizado el concepto.

La expresión ya circulaba entonces. El informe del congreso «Software Engineering» que la OTAN celebró en Garmisch (Alemania) del 7 al 11 de octubre de 1968 cuenta que un grupo de estudio eligió la expresión a finales de 1967 por provocadora, para pedir que el software se hiciera con la disciplina de las ingenierías clásicas. La NASA sitúa en 1968 su primer uso. Lo que el MIT sí deja claro es que Hamilton pasó su carrera peleando para que se reconociera como una disciplina propia.

Quién era Margaret Hamilton

Nació en 1936 en Paoli (Indiana) y estudió Matemáticas. En el MIT empezó en 1959 programando predicciones del tiempo para el meteorólogo Edward Lorenz, un trabajo que, según el MIT, acabó sirviendo para sus estudios sobre la teoría del caos. En 1965, el Laboratorio de Instrumentación la contrató como su primera programadora del Apolo, y la primera mujer del proyecto.

Dejó el MIT a mediados de los setenta y fundó sus propias empresas de software, Higher Order Software en 1976 y Hamilton Technologies una década después. En 2016, Barack Obama le dio la Medalla Presidencial de la Libertad, con una mención que dice que su arquitectura de software llevó a la humanidad a dar «pasos de gigante».

En 2009, al recordar aquellos años para el MIT, Hamilton dijo que no les quedaba otra que ser pioneros. A diez kilómetros de la Luna, ser pioneros consistió en que un ordenador de 32 kilos, con 4 KB para trabajar, supiera qué soltar cuando le llegó más trabajo del que podía hacer.

Comparte este artículo

Fuentes

Juan A.

Soy Juan, entusiasta de la tecnología, los videojuegos, la inteligencia artificial y la actualidad que nos rodea. Juego a shooters como el CS2, cooperativos y single player con un PC que he ido mejorando pieza a pieza, y me gusta estar al tanto de todo lo que sale. En Ping Cero intento transmitir esa pasión contándote lo último, lo curioso y lo que merece la pena.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Protección de datos. Responsable: el titular de Ping Cero. Finalidad: publicar y moderar tu comentario. Legitimación: tu consentimiento. Destinatarios: no se ceden datos a terceros. Derechos: acceso, rectificación, supresión y otros, en [email protected]. Más información en la política de privacidad.