¿Cómo salvó un programa la llegada a la Luna? Margaret Hamilton

Margaret Hamilton murió el 30 de septiembre en Cambridge, Massachusetts, a los 90 años. Lo contó su hija Lauren, y el MIT lo anunció el 7 de octubre. Quizá no reconozcas su nombre, pero es probable que hayas visto su foto: una mujer joven, de gafas, sonriendo al lado de una torre de papel impreso. Esa torre era el código que llevó a los astronautas del Apolo hasta la Luna.

Hamilton dirigió en el MIT el equipo que escribió el software de vuelo de los computadores de a bordo del programa Apolo. Fue ella quien empezó a llamar a ese trabajo ingeniería de software, cuando el software todavía no tenía ese reconocimiento. En 2016 recibió la Medalla Presidencial de la Libertad. Y el momento en que su trabajo se puso a prueba de verdad duró unos pocos minutos, el 20 de julio de 1969.

La pregunta es esta: ¿cómo hace un programa para no rendirse cuando todo empieza a fallar, y por qué esa idea salvó la llegada a la Luna?

¿Qué es un programa, y qué tan pequeño era el del Apolo?

Un programa es una receta: una lista de instrucciones que un computador sigue al pie de la letra. En el artículo sobre si la inteligencia artificial va a reemplazarte lo expliqué con la receta para freír un huevo, y aquí vale igual. La diferencia es que esta receta tenía que llevar una nave hasta otro mundo.

Y tenía que hacerlo con muy poco. El computador de guía del Apolo trabajaba a unos 2 megahercios y tenía 2.048 palabras de memoria de trabajo. Tu celular tiene millones de veces más. Imagina tener que cocinar para un banquete en una cocina con una sola hornilla y una mesa del tamaño de un libro: no puedes hacerlo todo a la vez, así que tienes que decidir muy bien qué va primero.

Esa decisión, qué va primero, es el corazón de esta historia.

¿Cómo se guarda un programa en un tejido?

Tejiéndolo, literalmente. El programa principal del Apolo no se guardaba en un disco ni en un chip como los de hoy: se guardaba en una memoria de cuerdas de núcleos (core rope memory), donde cada bit dependía de si un alambre pasaba por dentro o por fuera de un pequeño anillo magnético. Eran unas 36.000 palabras de memoria que, una vez tejidas, ya no se podían cambiar.

Ese tejido lo hacían a mano mujeres en las fábricas, siguiendo el código que salía del MIT. Algunos programadores le pusieron un apodo a esa memoria, "LOL", por little old lady, "señora mayor". En mi opinión, el apodo dice mucho de cómo se miraba ese trabajo, y muy poco de lo que valía: cualquier error en el tejido era un error en el programa que iba a volar a la Luna.

Piensa en un tapiz donde cada puntada es una instrucción. Si una tejedora se equivoca de lado en un solo anillo, la nave hace otra cosa. Así de delicado era.

¿Qué pasó tres minutos antes de tocar la Luna?

El 20 de julio de 1969, mientras el módulo lunar Eagle descendía hacia la superficie, empezaron a sonar alarmas. Primero la 1202, luego la 1201. En pantalla, Neil Armstrong y Buzz Aldrin veían códigos que significaban, en pocas palabras, "estoy saturado".

El computador estaba recibiendo más trabajo del que podía hacer. La causa exacta todavía se discute: la explicación más citada es que un radar que no hacía falta para el descenso estaba mandando interrupciones constantes por un problema de sincronización en su alimentación, y no hay acuerdo sobre si los astronautas lo dejaron encendido por descuido.

En una situación así, un programa sin protección puede colgarse. Y un computador colgado, a minutos de la superficie lunar, significaba abortar el alunizaje. Pero eso no fue lo que pasó.

¿Por qué el computador no se rindió?

Porque estaba diseñado para saber qué abandonar. El software del Apolo no salvó el alunizaje porque nunca fallara. Lo salvó porque estaba hecho para fallar bien.

Cada tarea del programa tenía una prioridad. Cuando el computador se vio desbordado, borró las tareas menos importantes, reinició lo que hacía falta desde un punto seguro y siguió haciendo lo único que no podía dejar de hacer: guiar el descenso. En el control de misión en Houston, Steve Bales y Jack Garman, que sabían qué significaban esas alarmas, dijeron que se podía seguir. Armstrong aterrizó.

Imagina un restaurante un viernes por la noche. Entran el doble de clientes de lo esperado. Un mal cocinero intenta hacerlo todo como siempre, la decoración de cada plato incluida, y la cocina colapsa. Un buen cocinero deja de decorar, deja de lavar copas y se concentra en que salga la comida. Los clientes nunca se enteran de que hubo una crisis. Eso hizo el programa del Apolo.

Aquí hay que ser justos con la historia. La estructura que permitía repartir el trabajo por prioridades la había diseñado otro ingeniero del MIT, J. Halcombe Laning, y sobre ella construyó el equipo de Hamilton. Las ideas para detectar errores y recuperarse de ellos fueron mérito del equipo. En 2009, Hamilton lo resumió así: «Nos tomábamos el trabajo en serio; muchos empezamos este viaje con veintitantos años».

¿Por qué casi nadie conocía su nombre?

Porque durante décadas el trabajo de las mujeres en la ciencia se miró como trabajo de apoyo, aunque fuera el núcleo del proyecto. Y esto no es solo historia vieja.

En los años sesenta, programar solía verse como algo secundario, casi administrativo, y mucha de esa labor la hacían mujeres. Hamilton empezó a decir "ingeniería de software" justamente para que se le diera al software el mismo respeto que al hardware. Ganó esa pelea: hoy es de las profesiones mejor pagadas.

Y entonces pasó algo que me parece revelador. En Estados Unidos, la proporción de títulos de informática que obtenían mujeres subió hasta 37,1 % en 1984. Luego cayó, durante unos veinticinco años, hasta alrededor de 18 %. Fue la única gran carrera científica en la que las mujeres retrocedieron así. La caída empezó justo cuando los computadores personales llegaron a los hogares, vendidos casi solo a los niños.

En Latinoamérica la foto es distinta y vale la pena decirlo: según la UNESCO, con datos de 2019, alrededor del 45 % de quienes investigan en la región son mujeres, muy por encima del promedio mundial, que rondaba el 29 %. Pero la misma UNESCO advierte que siguen siendo minoría en los cargos más altos y en muchas áreas de ingeniería y tecnología.

Mi opinión es que esto no es un asunto de cortesía. Es un asunto de resultados. Si la mitad del talento se queda fuera, la ciencia pierde a la mitad de sus Margarets. Y el Apolo es la prueba de lo que se gana cuando están adentro.

Qué puedes hacer tú, hoy

  • Busca la foto. Margaret Hamilton junto a la torre de código del Apolo. Muéstrasela a una niña de tu familia y cuéntale qué hay en esas hojas.
  • Si programas, pregúntate qué pasa cuando tu programa falla. No "si falla": cuando. La lección del Apolo es diseñar la caída, no solo el camino feliz.
  • Nombra a las personas. Cuando hables de un logro científico, pregunta quién lo hizo. Muchas veces la respuesta incluye nombres de mujeres que no salen en los titulares.
  • Apoya a las científicas de tu país. Sigue su trabajo, comparte sus divulgaciones, invítalas a hablar en colegios.

Las personas que tejieron la Luna

Margaret Hamilton nació en 1936 en Indiana. Estudió matemáticas, y en 1959 empezó a programar en el MIT software de predicción del tiempo para el meteorólogo Edward Lorenz, el mismo que años después hizo famosa la idea del efecto mariposa. Luego trabajó en sistemas de defensa aérea, y de ahí llegó al Apolo. Más tarde fundó dos empresas de software y publicó más de 130 trabajos.

Pero la Luna no la alcanzó sola, y ella habría sido la primera en decirlo. La alcanzaron con ella los programadores de su equipo, Laning y su estructura de prioridades, los controladores Bales y Garman, que confiaron en las alarmas, y las mujeres que, puntada a puntada, tejieron el programa en la memoria de la nave sin que casi nadie supiera sus nombres.

Como en el artículo sobre por qué cuesta tanto llegar a la órbita, los grandes saltos del espacio dependen de miles de manos. Hoy vale la pena recordar las de Hamilton.

¿Qué científica de tu país crees que merece ser más conocida? Escríbela en los comentarios.

¿Te gustó esta entrada? Apóyame con un café ☕

← Todas las entradas