¿Es esta una foto de Margaret Hamilton junto al código del Proyecto Apolo que ella escribió?

La siguiente imagen es ampliamente difundida en Facebook :

ingrese la descripción de la imagen aquí

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:

  1. La foto muestra a Margaret Hamilton.
  2. Margaret Hamilton fue la ingeniera de software líder del Proyecto Apolo.
  3. Se muestra una copia impresa del código del Proyecto Apolo.
  4. Margaret Hamilton escribió el código representado a mano.
  5. Margaret Hamilton escribió el código sin ayuda de nadie
@Sklivvz Relacionado pero cerrado... dado que no pude convencer a la gente para que lo reabriera, publiqué la pregunta en Quora: quora.com /...
No sé sobre la NASA, pero cuando cooperé en Wright-Patterson AFB alrededor de 1970, escribimos el código en formularios de codificación y los operadores lo convirtieron en tarjetas perforadas. O lo perforamos nosotros mismos.
El código ahora está en GitHub, https://github.com/chrislgarry/Apollo-11 . El archivo de rebajas que se muestra en la primera página incluye: Enviado por: Margaret H. Hamilton. Rol: Líder de Programación Colossus, Orientación y Navegación de Apolo. Fecha: 28 de marzo del 69.

Respuestas (3)

La foto muestra a Margaret Hamilton.

Sí, esta es una foto oficial de la NASA de ella:

hamilton

Margaret Hamilton fue la ingeniera de software líder del Proyecto Apolo.

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 [...]

Se muestra una copia impresa del código del Proyecto Apolo.

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 ).

Margaret Hamilton escribió el código representado a mano.

No está claro lo que significa:

  1. ¿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 .

  2. ¿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".

Margaret Hamilton escribió el código sin ayuda de nadie

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

Comentaristas de grosor de papel: muévanse a Skeptics Chat :-)
el comentario fue "Creo que la parte 'a mano' está relacionada con la escritura del código que luego se transfirió a Apollo. Por lo tanto, la pregunta es si Margaret usó una computadora para escribir el código o una máquina de escribir y escribir". y se responde mirando los escaneos que están vinculados. Están escritos con una impresora de margaritas.
@Sklivvz: Vox también aclara la última pregunta en la página que mencionas: "Aquí hay una foto increíble de ella junto al código que ella y sus colegas escribieron para ..."
Guau, esta respuesta fue excelente hasta la tontería de memoria de la cuerda central. El código se envió en la memoria de la cuerda, pero seguro que no se escribió de esa manera.
@RussellBorogove mira si es mejor ahora
@user568458 ver la versión editada
No es mejor. Uno simplemente no "codifica" o "escribe" en la cuerda central. El periodista está confundido.
@RussellBorogove No estoy seguro de cuál es su queja. Parece que hay dos interpretaciones posibles de "escrito", las cuales tuvieron que suceder en algún momento (escribir la lógica del código y luego codificarla físicamente en la memoria de la cuerda central), y ambas (ahora) se abordan explícitamente en este responder. Claro, es poco probable que la interpretación de "codificación de cuerda central" sea lo que la publicación original estaba tratando de decir, pero de cualquier manera, la declaración claramente no es cierta.
"tejido" podría ser una mejor elección de palabras que "escrito" (eso también es lo que usa la cita)
La respuesta, tal como está escrita, combina mal la composición del programa, ("codificación" o "escritura"), que fue realizada por un equipo de programación dirigido por Hamilton, con la construcción de las memorias físicas de cuerda central cableadas, que fue realizada por un equipo separado de "viejitas". Es como decir que una novela fue escrita por una imprenta.
@RussellBorogove En realidad, sería como componer un manuscrito y copiarlo en un códice escrito a mano, como lo hicieron los monjes en la Edad Media. Ambos califican como "escritos", pero en diferentes sentidos.
No puedo expresar cuán fuertemente estoy en desacuerdo con esa interpretación.
"A mano" implica la impresión física del código, ¿no es así?
"La NASA contradice esto al decir que fue un equipo completo dirigido por ella, lo que parece mucho más probable:" ¿Alguien tiene alguna idea de qué porcentaje de ese código en la pila fue hecho con sus propias manos y cómo se compara? a otros miembros del equipo?
Las primeras computadoras en las que trabajé tenían memoria central. No recuerdo que nadie los llamara "memoria de cuerda central" o "memoria LOL", aunque nos dijeron que solo se confiaba en las mujeres para pasar los cables a través de los anillos magnéticos, ya que se pensaba que requería las mismas habilidades que tejer. La posición de los cables no representaba nada. Pasar corrientes por los cables establece los anillos en uno de dos estados magnéticos con un estado que representa cero y el otro.
@TonyDallimore El uso del núcleo para RAM era una práctica común, pero la 'memoria de cuerda central' de codificación dura como ROM aparentemente era una cosa. Solo búscalo en Google.
Con respecto a la parte "escrito a mano". Parece que el equipo de programación de AGC en realidad usó un bolígrafo para escribir el código (en lugar del teclado) en formularios especiales que luego se entregan a los mecanógrafos (quienes lo escribieron, pero tenga en cuenta que los programadores no lo escribieron, lo escribieron a mano) .
En realidad, en esa época es probable que SÍ lo escribiera "a mano" y luego un operador de teclado lo convirtiera en tarjetas.
"máquina de escribir o una impresora de margaritas" Improbable: probablemente era una impresora de línea en esos días. (La impresora Daisy inventada en 1970, Apolo fue a la luna en 1969).
Es casi seguro que el código se imprimió con una impresora de líneas. Las impresoras de "bola" Selectric se usaban en ese momento, al igual que las impresoras de teletipo, pero ambas eran demasiado lentas, además de que no manejaban bien las formas anchas.

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.

¡Guau, esto es realmente genial!

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:

Enterprise Group Papel de formulario continuo 14 78 x 11 18 Lb 12 Green BarWhite Paquete de 3000 hojas por Office Depot y OfficeMax

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.

Tenemos los escaneos reales de las páginas, el conteo está errado en aproximadamente un 10%.
Además, una respuesta de Quora no es realmente una buena manera de hacer referencia a una respuesta...
Sí, pero la respuesta en sí contiene referencias.
Re "... a menudo leo estas impresiones y no el código fuente...": No sé sobre la NASA, pero en esos días (y durante una década más tarde), las pantallas CRT/teclado no eran comunes. Era habitual ingresar código en tarjetas perforadas y leer las impresiones.
-1: si esta respuesta de Quora se publicara aquí, se eliminaría para la investigación original; no tenemos ninguna razón para confiar en la experiencia o las suposiciones de Christopher Burke en sus cálculos, por ejemplo, su decisión de mirar solo los archivos .agc y que, por lo tanto, los comentarios que comienzan con un '#' son incorrectamente demostrables en la primera página del escaneo .
@Oddthinking Creo que es una aproximación decente, y una explicación es mejor que una referencia (no es necesario confiar, solo pensar/verificar). Con respecto a #, la mayoría de los comentarios comienzan con '#', y de todos modos estamos buscando principalmente el límite superior de SLOC.
Parece que está apelando a la falacia del sentido común al argumentar que no hay necesidad de una referencia. Está cometiendo una falacia de "plantear la pregunta" al decir que es una aproximación decente.
@Oddthinking No hay necesidad de sentido común, solo habilidad para contar.