La siguiente imagen es ampliamente difundida en Facebook :
El subtítulo dice:
Margaret Hamilton, ingeniera de software líder del Proyecto Apolo, junto al código que escribió a mano y que se usó para llevar a la humanidad a la luna. [1969]
¿Es cierto que:
Sí, esta es una foto oficial de la NASA de ella:
De hecho, de la misma fuente :
Margaret Hamilton, líder del equipo que desarrolló el software de vuelo para las misiones Apolo de la agencia [...]
Sí, lo dice ella misma en una entrevista de Vox :
"En esta imagen, estoy de pie junto a las listas del código fuente real de Apollo Guidance Computer (AGC)", dice Hamilton en un correo electrónico. "Para aclarar, no hay otros tipos de impresiones, como impresiones de depuración, o registros, o lo que sea, en la imagen".
El código fuente está aquí (escaneos en pdf) y hay alrededor de 11,000 páginas, lo cual no es inconsistente con lo que vemos en la imagen: el papel es probablemente papelería continua y 11,000 páginas miden 165 cm de alto, ya que una caja de 2,000 es unos 30 cm ( referencia ).
No está claro lo que significa:
¿El código en la pila está escrito a mano? No, está impreso con una máquina de escribir o una impresora de margaritas; vea los escaneos .
¿Fue escrito por ella en la memoria del núcleo de la cuerda? No, fue escrito en core rope memory a mano por un equipo según su entrevista en Vox :
El proceso de codificación en los programas también fue laborioso. La computadora de guía usó algo conocido como "memoria de cable central": los cables se colocaron a través de núcleos metálicos de una manera particular para almacenar código en binario. "Si el cable atraviesa el núcleo, representa un uno", explicó Hamilton en el documental Moon Machines. "Y alrededor del núcleo representa un cero". Los programas se entretejían a mano en las fábricas. Y debido a que los trabajadores de la fábrica eran en su mayoría mujeres, los ingenieros conocieron la memoria de la cuerda central como "memoria LOL", LOL significa "viejita".
No. Vox lo dice, pero no cita la fuente:
Es solo ella y su código.
La NASA contradice esto al decir que fue todo un equipo dirigido por ella, lo que parece mucho más probable:
El software de vuelo Apollo que desarrollaron la Sra. Hamilton y su equipo fue realmente un esfuerzo pionero
Conozco a Margaret desde hace 20 años y cuando mi hijo me señaló esta pregunta, le envié un correo electrónico a ella ya Ron Hackler (a quien también conozco desde hace 20 años) para aclarar algo de esto. Ellos respondieron de la siguiente manera:
"Para aclarar, Margaret era la directora del software de vuelo a bordo de Apollo (el software Apollo Guidance Computer (AGC)). http://www.nasa.gov/home/hqnews/2003/sep/HQ_03281_Hamilton_Honor.html Eso es , estuvo "a cargo" (responsable) del software de vuelo a bordo de Apollo y de los programadores de AGC ("ingenieros de software") que diseñaron y desarrollaron el software de vuelo a bordo de Apollo. También diseñó y escribió gran parte del programa Apollo. software de vuelo a bordo, ella misma; especialmente en el área de diseño/construcción de software de sistemas AGC donde sus favoritos estaban en las áreas del sistema operativo, interfaz hombre-máquina, confiabilidad y detección y recuperación de errores.
Margaret y su equipo en el MIT codificaron todo el código a mano: es decir, escribieron todo el código fuente de AGC en papel de codificación fuente de AGC y luego se lo entregaron a los "keypunchers" (personas perforadoras de teclas) para que lo copiaran (perforaran). ) el código del papel de codificación en tarjetas a partir de las cuales se pueden hacer listados (libros/impresiones) del código.
¡¡¡Sí, todo es código al lado de Margaret en la foto de ella!!! ¡Es el código AGC (y NO cualquier otra cosa)!"
Señalaron que hay una foto de algunas de las páginas de la copia del código AGC de Margaret aquí: http://imgur.com/a/Dp23C junto con otra información de apoyo proporcionada por Margaret y Ron. Además, este código es un código ensamblador escrito a mano para el AGC, sin compiladores involucrados.
Agregaría que Margaret y Ron son dos de las personas más brillantes que he tenido el privilegio de conocer en mi vida.
Esta pregunta se ha hecho en Quora; aquí está la respuesta de Christopher Burke :
Descargué el código fuente esta tarde y ejecuté algunas métricas simples, mirando solo los archivos ".agc" que son la fuente del lenguaje ensamblador.
- 420.837 líneas de fuente
- De estos, 102.958 líneas de comentarios ("#" en la columna 1) y 38.626 líneas vacías
- 10.305 instancias de "Página" que indican, aproximadamente, el número de páginas en las listas de origen
Estos listados antiguos se imprimieron en papel continuo de "barra verde" de aproximadamente 3,6 milésimas de pulgada de espesor, probablemente a 66 líneas (máximo) por página. Aquí hay un equivalente moderno:
10,305 páginas de este material tendrían unas 37 pulgadas de alto, recién sacadas de la caja. Podría expandirse un poco con el uso, la anotación, la flexión constante, etc., y los aglutinantes también son relativamente pesados. Es fácil dar cuenta de tal vez 42 "de la pila de esa manera. Las versiones antiguas o alternativas de algunos de los listados podrían compensar el resto de la altura.
Un solo equipo sin duda podría escribir tanto código ensamblador. El código probablemente sería extremadamente eficiente, ya que el sistema tenía limitaciones de memoria muy estrictas.
Como punto de referencia crudo, Paul Laughton escribió un DOS de 120 páginas para Apple II en ensamblador en 7 semanas. Código fuente Apple II DOS . Ampliando esto, un equipo de 12 podría generar más de 10,305 páginas de código de alta calidad en un año.
Mirando la lista de impresoras de línea de Paul (hay un PDF en el sitio vinculado), puede tener una buena idea de cuán densa es la información en este tipo de código. Hay muchos espacios en blanco: los programadores ensambladores de antaño, incluido yo mismo, usamos la paginación para aislar secciones de código no relacionadas, ya que a menudo leíamos estas impresiones y no el código fuente durante la optimización manual.
Sklivvz
franck dernoncourt
daniel r hicks
Jeppe Stig Nielsen