La tecnología informática de las misiones Apolo se adelantó una década a su tiempo
La tecnología informática de las misiones Apolo sentó las bases de la computación tolerante a fallos cuyos principios fundacionales aún siguen vigentes.
Se cumplen ahora 50 años de la misión de la Nasa Apolo 11, que transportó por primera vez seres humanos a la superficie de la Luna. En este medio siglo que ha transcurrido la tecnología ha dado pasos de gigante, se ha popularizado de manera ubicua y permeado en la mayoría de ámbitos sociales. Toda esta evolución vertiginosa puede hacer que se pierda la perspectiva y que no se aprecie su valor real. ¿Cómo era la tecnología de esa época?
En los años 60, la tecnología informática era muy distinta de la actual. Su uso cotidiano era prácticamente nulo, limitado a universidades y centros de investigación para hacer cálculos científicos. A mediados de esa década destacaban computadores clásicos como el IBM System/360 y la serie 1100 de UNIVAC, que tenían frecuencias de reloj del orden de 1 MHz y unos pesos que alcanzaban más de los 2 000 kg.
Durante esa década surge la necesidad de contar con un sistema informático que pudiera integrarse en las distintas misiones del programa Apolo. En este contexto se diseñó el AGC, el Apolo Guidance Computer, un sistema creado en el MIT Instrumentation Laboratory bajo la dirección de Charles Stark Draper.
Este computador, con una frecuencia de reloj de 1 MHz, 4 K de memoria RAM y 32 K de memoria ROM, fue innovador en la utilización de circuitos integrados de manera masiva, unos 2 800 fabricados por la empresa Fairchild Semiconductor, con un coste aproximado de unos 150 000 dólares de la época.
La programación del sistema también fue diseñada en el MIT por Margaret Hamilton, una precursora en la disciplina de la ingeniería del software. Para ello estableció una serie de principios, novedosos en aquella época, con el objetivo de conseguir la robustez del código, y por lo tanto la seguridad de la misión. El sistema estaba diseñado para usar un 85 % de su capacidad, dejando el 15 % restante como margen de seguridad para el caso de que sufriera una sobrecarga.
Las tareas ejecutadas en el computador seguían una rígida jerarquía de prioridad, de tal manera que si esa sobrecarga se producía, el sistema sabía cuáles eran los procesos críticos que había que preservar y cuáles había que eliminar para que siguiera funcionando de manera correcta.
Esta concepción del computador como un elemento tolerante a fallos fue una visión pionera para la época, cuya eficacia se pudo comprobar en la misión Apolo 11. Durante la fase de alunizaje de esta misión se produjo un incidente que podría haber resultado catastrófico. La operación de un radar durante el descenso saturó de datos al computador, el cual estuvo a punto de bloquearse, lo que produjo el aviso a la tripulación mediante los famosos códigos de error 1201 y 1202. En otras circunstancias, la misión habría tenido que ser abortada, pero gracias al diseño tolerante a fallos, de Margaret Hamilton, el sistema pudo recuperarse y cumplir su cometido.
Una comparación descontextualizada
Cinco décadas después, ¿cómo se puede comparar aquella tecnología informática del programa Apolo con la actual? Un análisis simplista puede sugerir que la de hoy supera en órdenes de magnitud el rendimiento y prestaciones de su antecesora. Por ejemplo, la gama más reciente de iPhone tendría una frecuencia de reloj 2.500 veces más alta que el AGC del programa Apolo, con una capacidad de memoria nada menos que un millón de veces mayor. Todo ello con un coste 100 veces inferior.
Esta comparación, descontextualizada, no pone de manifiesto la perspectiva histórica de ambas tecnologías. Para llevar a cabo un análisis más preciso, realicemos la comparación desde el punto de vista de tres parámetros distintos que puedan ofrecer una visión más completa: la eficacia, la fiabilidad y el impacto.
En primer lugar, efectivamente cualquier dispositivo móvil actual tiene un rendimiento órdenes de magnitud superior a los computadores de entonces. Pero, ¿es esto realmente una ventaja? El computador AGC cumplió con éxito la misión para la que fue creado: llevar una misión tripulada a la Luna. Respondió a las expectativas cumpliendo las especificaciones que rigieron su diseño. Es decir, fue eficaz. Un mayor rendimiento, aparte de los sobrecostes que conlleva, suele suponer más complejidad y un mayor número de fuentes de error. Por lo tanto, más rendimiento no implica mayor eficacia.
Por otra parte, es evidente la gran versatilidad de los dispositivos actuales. Pero, ¿realmente es esa versatilidad lo que se buscaba en las misiones Apolo? Al contrario, lo que se necesitaba era un sistema de propósito específico de alta fiabilidad. Gracias a su diseño, el AGC supo aportar esa fiabilidad y resolver con éxito problemas como el relatado anteriormente. En circunstancias similares, un sistema operativo actual de propósito general probablemente habría perdido el control, lo que hubiera llevado a un reinicio del sistema y a un fracaso en la misión. La fiabilidad conseguida por el AGC aportó el nivel de seguridad requerido, aun con un rendimiento más limitado.
Finalmente, ¿cuál ha sido el impacto producido por la última generación de móviles, la que manejamos actualmente, respecto a las generaciones previas? Cualitativamente, ninguno. Cuantitativamente, un incremento muy reducido de sus prestaciones. ¿Qué supuso la introducción de un computador como el AGC, en el contexto histórico y social de los años 60? Aprovechar el potencial de una tecnología en aquel entonces disruptiva para posibilitar una misión tripulada a la Luna.
Dentro de 50 años probablemente nadie se acordará del móvil de última generación que tenemos ahora en las manos, superado y enterrado por sucesivas e innumerables familias tecnológicas. En cambio, el programa Apolo se seguirá estudiando como un ejemplo de uso de tecnología disruptiva a través de la cual se cambió la historia.
En resumen, la tecnología informática de las misiones Apolo se adelantó una década a su tiempo, no siendo superada hasta finales de los años 70, y sentó las bases de la computación tolerante a fallos cuyos principios fundacionales aún siguen vigentes.
Este artículo fue publicado originalmente en The Conversation. Lea el original.