¿Proceso de desarrollo utilizado para el código en las misiones del Apollo 11?

57

Las misiones Apollo tenían tecnología no más complicada que una calculadora de bolsillo.

Desde el enlace aquí , hay un información sobre Apolo Guidance Computer (AGC)

  

La computadora de guía de apolo (AGC) incorporada tenía aproximadamente 1 pie cúbico con 2K de RAM de 16 bits y 36K de memoria de cable de cable con alambres de cobre roscados o no a través de diminutos núcleos magnéticos. Las palabras de 16 bits eran generalmente 14 bits de datos (o dos códigos de operación), 1 bit de signo y 1 bit de paridad. El tiempo de ciclo fue de 11.7 microsegundos. La programación se realizó en lenguaje ensamblador y en un lenguaje interpretativo, en polaco inverso.

Entonces, me topé con algún código fuente cuando investigué lo que estaba allí arriba, y he notado grandes comentarios (por ejemplo, TEMPORAL, ESPERO ESPERANZA DE ESPERANZA)

VRTSTART    TS  WCHVERT
# Page 801
        CAF TWO     # WCHPHASE = 2 ---> VERTICAL: P65,P66,P67
        TS  WCHPHOLD
        TS  WCHPHASE
        TC  BANKCALL    # TEMPORARY, I HOPE HOPE HOPE
        CADR    STOPRATE    # TEMPORARY, I HOPE HOPE HOPE
        TC  DOWNFLAG    # PERMIT X-AXIS OVERRIDE
        ADRES   XOVINFLG
        TC  DOWNFLAG
        ADRES   REDFLAG
        TCF VERTGUID

Los programas reales en la nave espacial se almacenaron en memoria de cuerda principal , una tecnología de memoria antigua hecha por (literalmente) tejido de una tela / cuerda, donde las brocas eran anillos físicos de material de ferrita. La memoria "core" es resistente a los rayos cósmicos. El estado de un bit de núcleo no cambiará cuando sea bombardeado por radiación en el espacio exterior.

El software de la computadora virtual de guía de apolo (AGC) también está en GITHUB!

Aquí se encuentra parte de la documentación.

Otra muestra de código fuente con grandes comentarios.

033911,000064: 32,3017    06037        FLAGORGY        TC       INTPRET      #  DIONYSIAN FLAG WAVING

    034090,000243: 32,3241    13247        BZF      P63SPOT4               #  BRANCH IF ANTENNA ALREADY IN POSITION 1
    034091,000244: 
    034092,000245: 32,3242    33254        CAF      CODE500                #  ASTRONAUT:     PLEASE CRANK THE
    034093,000246: 32,3243    04616        TC       BANKCALL               #                 SILLY THING AROUND
    034094,000247: 32,3244    20623        CADR     GOPERF1                               
    034095,000248: 32,3245    16001        TCF      GOTOP00H               #  TERMINATE
    034096,000249: 32,3246    13235        TCF      P63SPOT3               #  PROCEED        SEE IF HE'S LYING


    034101,000254: 32,3251    04635        TC       POSTJUMP               #  OFF TO SEE THE WIZARD ...
    034102,000255: 32,3252    74126        CADR     BURNBABY

Mi pregunta aquí es esta:

  • ¿De qué manera los equipos que escriben este código pueden hacer que funcionen dadas las herramientas en ese momento?

Porque si compilas tanto código que se utilizó en Apollo 11 ... llevaría días, incluso semanas. Dudo seriamente que los programadores de entonces dejaran que todo sucediera por casualidad.

    
pregunta Josip Ivic 09.12.2015 - 16:27

4 respuestas

12

Hubo un hermoso documental que intenté perseguir sobre John 'Jack' Garman tuvo que "inventar" un "un sistema operativo multiprogramación con prioridad programada". Sin embargo, esto puede haber estado relacionado con el módulo de módulo de aterrizaje. La historia fue que cuando estaba aterrizando el módulo de aterrizaje, es mejor dar prioridad a la guía, ya que otras cosas, como la temperatura en la cabina durante los siguientes 15 segundos, no importaban realmente si se estrellaba y se quemaba. En el primer disparo sobrecargaron la computadora y comenzaron a ocurrir alarmas porque algunas subrutinas no se ejecutaban. Había demasiados cargados, pero gracias al concepto de prioridad, que Garman previó e integró porque pensó que era una buena idea, las rutinas de baja prioridad no se atascaron en la rutina de aterrizaje de mayor prioridad.

Al ver el documental en ese momento, me sorprendió ver cómo era hacer una refactorización importante en el código sin decirle a la gerencia y casi despedirme porque llegabas tarde en lo que se suponía que estabas trabajando. En este caso, sin embargo, la refactorización salió a la luz cuando se investigó la razón de las alarmas. (¡Y la gerencia todavía estaba enojada! :-)

Algunos enlaces:

No, un "error en la lista de verificación" casi no descarriló el primer aterrizaje lunar

CUENTAS DEL ORDENADOR DE ORIENTACIÓN DEL MÓDULO LUNAR

Cómo lo construyeron: el software de Apollo 11

Proyecto de Historia Oral del Centro Espacial Johnson de la NASA  Transcripción editada de la historia oral

Breve historia del Programa Apollo de la NASA Extracto: a cinco minutos de la quema de descenso, y a 1.800 m sobre la superficie de la Luna, la computadora de navegación y guía LM produjo la primera de varias alarmas inesperadas de los programas "1202" y "1201". los El ingeniero informático del Centro de Control de la Misión en Houston, Jack Garman, le dijo al oficial de orientación Steve Bales que era seguro continuar el descenso. Estas alarmas eran indicaciones de "desbordamientos ejecutivos", lo que significa que la computadora de guía no pudo completar todas sus tareas en tiempo real y tuvo que posponer algunas de ellas.

Recordando el 'Salto gigante' Extracto: Sabíamos lo que era eso y que no debería estar sucediendo. Pero habíamos diseñado un sistema que se esforzaba por recuperarse de cualquier condición de sobrecarga. Así que recuerdo haber oído al [ingeniero informático de la NASA] Jack Garman gritar: "¡Vamos, vamos!" Y se fueron. Luego escuchamos a Neil hacer volar el LEM y tratar de encontrar un buen lugar para aterrizar. Nuestra nueva preocupación era la falta de combustible restante. Pero finalmente escuchamos el aviso de contacto y luego, "The Eagle ha aterrizado".

Entrevista a Jack Garman

EDITAR: Tal vez este fue el documental: Apollo 11: The Untold Story (2006)

Reparto: John R. Garman ...
Él Mismo - Apollo 11 Computer Engineer (como Jack Garman)

(Entre otros).

Actualizar: Un Hacker de Sudáfrica Solo Rescató la primera computadora de la NASA en el espacio

    
respondido por el K.Nicholas 16.02.2016 - 22:19
31

Si entiendo correctamente, el proceso de desarrollo fue la revisión por pares y la experimentación.

El equipo estaba formado por personas como "Math Doctors": personas extremadamente dedicadas, inteligentes, apasionadas y orientadas a los detalles, cuyas vidas estaban dedicadas a su trabajo. Así que cuando digo revisión por pares, me refiero a muchas revisiones por pares a lo largo de muchos meses (más de un año).

Estos desarrolladores "ejecutaron las simulaciones en sus cabezas", "depuraron el software en papel" y trabajaron en grupos con muchos desarrolladores buscando el mismo código una y otra vez hasta que estuvieron convencidos de que era correcto. Había varios equipos, cada uno trabajando en una parte del conjunto.

Mi profesor de Métodos Numéricos en la Universidad Estatal de Ohio (Spring '96) escribió el código que decidió cuándo comenzar una etapa del cohete propulsor. Describió que la impresión era del tamaño del directorio telefónico (Entonces, tal vez de 2.5 a 3.5 pulgadas de grosor en papel de 8.5 x 11 pulgadas (no describió el tamaño de la fuente) del código Fortran.

Cuando estaban convencidos, lanzaron un misil no tripulado (técnicamente los cohetes no tienen giroscopios) con una radio a bordo que emitía un pitido a intervalos regulares. Escucharon los pitidos hasta el punto en que esperaban que la radio impactara en la luna (chocara contra ella y se destruyera a sí misma) y dejara de emitir pitidos. Sabían que si fallaban, la radio seguiría sonando mucho más allá del tiempo calculado de impacto. El impacto ocurrió 15 segundos después del tiempo calculado.

Esta historia anecdótica admirable son mis recuerdos de una visita al consultorio con el médico. Era muy viejo, y fue hace mucho tiempo. Este es mi mejor recuerdo.

    
respondido por el Lyle S. 21.12.2015 - 08:16
14

El AGC se controla con verbos y sustantivos

El software de comando Apollo no está escrito en ninguna sintaxis que los usuarios reconozcan hoy. Los astronautas ingresan los comandos numéricamente, y cada número de dos dígitos representa un verbo o un sustantivo. El verbo describió la acción a realizar, y el nombre especificó los datos que se verían afectados por la acción del verbo.

Los astronautas odiaban la configuración del verbo y del sustantivo

Ramón Alonso, uno de los desarrolladores de hardware originales de AGC, dijo que la interfaz se había inventado para impresionar a los visitantes de su laboratorio, pero que se quedó para los vuelos cuando nadie desarrolló una interfaz mejor. Los críticos dijeron que no era "científico" y que los primeros astronautas, todos pilotos de élite, preferían los diales e interruptores, similar a un panel de control de un avión.

  

"El AGC era muy lento, pero muy confiable y muy pequeño para ese tiempo   En la historia de las computadoras digitales. Fue el primero en usar   Circuitos integrados. "

El software tal como fue diseñado fue creado básicamente desde cero por MIT.

Puede descargar e instalar el programa emulador de computadora de guía Apollo en su computadora personal, no hay problema. Esto es lo que parece en Mac OS X.

    
respondido por el Josip Ivic 26.01.2016 - 17:04
7

Como en casi todos los proyectos de software, se realizó bajo un plazo agresivo y presión de calidad. Afortunadamente, un archivo grande de material del gerente de proyectos de software Howard W. "Bill" Tindall, Jr. está disponible aquí .

Si muestras los memos, puedes tener una idea muy clara del conflicto normal entre el tiempo, las características y los defectos. Vale la pena señalar que el desarrollo se desarrolló a lo largo de varios años como en el resto del proyecto.

  

El diseño del sistema comenzó en el segundo trimestre de 1961, y la NASA instaló una versión Block I en una nave espacial el 22 de septiembre de 1965. La versión del software original (llamada CORONA) fue en enero de 1966, con el primer vuelo el 25 de agosto de 1966. Menos de 3 años después, los diseñadores lograron el objetivo final del programa.   ( enlace )

No puedo encontrar referencias específicas sobre cómo se creó el software, pero dada la fecha solo puedo suponer que gran parte de esto se hizo en lápiz y papel, con "simulaciones" hechas manualmente. Parece que hubo un sistema para cargar programas en el AGC con tarjetas perforadas, probablemente para pruebas "rápidas" en el suelo sin la necesidad de fabricar memoria de cuerda.

    
respondido por el pjc50 21.12.2015 - 17:39

Lea otras preguntas en las etiquetas