Processo di sviluppo utilizzato per il codice nelle missioni Apollo 11?


57

Le missioni Apollo avevano una tecnologia non più complicata di una calcolatrice tascabile.

Dal link qui , ci sono informazioni su Apollo Guidance Computer (AGC)

L'Apollo Guidance Computer di bordo (AGC) era di circa 1 piede cubo con 2K di RAM a 16 bit e 36K di memoria core-wire con fili fissi con fili di rame infilati o meno attraverso piccoli nuclei magnetici. Le parole a 16 bit erano generalmente 14 bit di dati (o due codici operativi), 1 bit di segno e 1 bit di parità. Il tempo di ciclo è stato di 11,7 micro-secondi. La programmazione è stata fatta in linguaggio assembly e in un linguaggio interpretativo, in polacco inverso.

Quindi, mi sono imbattuto in qualche codice sorgente quando ho ricercato ciò che era lassù e ho notato grandi commenti (ad esempio TEMPORANEO, SPERANZA SPERANZA SPERANZA)

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

I programmi reali nel veicolo spaziale erano memorizzati nella memoria della corda centrale , un'antica tecnologia di memoria realizzata (letteralmente) tessendo un tessuto / corda, dove i pezzi erano anelli fisici di materiale di ferrite. La memoria "core" è resistente ai raggi cosmici. Lo stato di un bit di base non cambierà quando viene bombardato da radiazioni nello spazio esterno.

Il software Virtual Apollo Guidance Computer (AGC) è anche su GITHUB!

Parte della documentazione è qui.

Un altro esempio di codice sorgente con grandi commenti.

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

La mia domanda qui è questa:

  • In che modo i team hanno scritto questo codice così in grado di renderlo funzionale alla luce degli strumenti in quel momento?

Perché se compili così tanto codice che è stato usato su Apollo 11 ... ci vorrebbero giorni, persino settimane. Dubito seriamente che i programmatori di allora abbiano lasciato tutto per caso.


4
Ho avuto una modifica abbastanza significativa al fine di rendere questo spero più sull'argomento. Penso che sia una domanda affascinante e spero che le persone possano rispondere in modo efficace!
Enderland,

3
Leggi Hackers e The Mythical Man Month . C'è un bel po 'di materiale lì dentro - non sono sicuro che si inserirà in una risposta qui.

2
I titoli delle domande di tipo "Tag - Domanda" sono sconsigliati su Stack Exchange. Si prega di lasciare il titolo così com'è.

4
Non c'è stato alcun ciclo di compilazione / correzione come suggerisce la tua domanda. Non hai creato una memoria di corda, testala e poi ripetila se non funzionava; hai capito bene la prima volta.
Robert Harvey,

7
@RobertHarvey hai HOPE HOPE HOPEcapito bene la prima volta.

Risposte:


13

C'è stato un bellissimo documentario che sto cercando di inseguire John "Jack". Garman ha dovuto "inventare" un "sistema operativo multiprogrammato con priorità programmata". Tuttavia, ciò potrebbe essere stato correlato al modulo lander. La storia era che quando stavi atterrando sul lander, è meglio dare priorità alla guida perché altre cose, come la temperatura in cabina per i successivi 15 secondi, non importavano davvero se ti schiantassi e bruciassi. Al primo colpo hanno sovraccaricato il computer e sono iniziati gli allarmi perché alcune subroutine non venivano eseguite. Ce n'erano troppi caricati, ma grazie al concetto di priorità, che Garman aveva previsto e integrato perché pensava fosse una buona idea, le routine a bassa priorità non impantanavano la routine di atterraggio a priorità più alta.

Guardando il documentario in quel momento, mi ha colpito il modo in cui era come fare un grosso refactoring sul codice senza dirlo alla direzione e quasi essere licenziato perché eri in ritardo su ciò su cui avresti dovuto lavorare. In questo caso, tuttavia, il refactoring è emerso quando è stata esaminata la ragione degli allarmi. (E la direzione era ancora incazzata! :-)

Alcuni link:

No, un "errore della lista di controllo" non ha fatto deragliare il primo atterraggio sulla luna

RACCONTI DEL COMPUTER DI GUIDA DEL MODULO LUNARE

Come l'hanno costruito: il software di Apollo 11

NASA Johnson Space Center Progetto di storia orale Trascrizione di storia orale modificata

Breve storia dell'estratto del programma Apollo della NASA : a cinque minuti dall'inizio della discesa e 1.800 m sopra la superficie della Luna, il computer di navigazione e guida LM ha prodotto il primo inaspettato allarme del programma "1202" e "1201". L'ingegnere informatico presso il Mission Control Center di Houston, Jack Garman, ha detto all'ufficiale di guida Steve Bales che era sicuro continuare la discesa. Questi allarmi erano indicazioni di "tracimazione dei dirigenti", il che significa che il computer di guida non poteva completare tutti i suoi compiti in tempo reale e doveva rimandarne alcuni.

Ricordando l' estratto di "Salto gigante" : sapevamo cosa fosse e che non avrebbe dovuto succedere. Ma avevamo progettato un sistema che si sforzava di recuperare da qualsiasi condizione di sovraccarico. Quindi ricordo di aver sentito [l'ingegnere informatico della NASA] Jack Garman gridare: "Vai, vai!" E proseguirono. Poi abbiamo ascoltato come Neil ha pilotato il LEM e ha cercato di trovare un buon posto per il touchdown. La nostra nuova preoccupazione era la mancanza di carburante rimanente. Ma finalmente abbiamo sentito l'avviso di contatto e poi "L'aquila è atterrata".

Intervista a Jack Garman

EDIT: Forse questo era il documentario: Apollo 11: The Untold Story (2006)

Cast: John R. Garman
Se stesso - Apollo 11 Computer Engineer (con il nome Jack Garman)

(Tra gli altri).

Aggiornamento: un hacker dal Sud Africa ha appena salvato il primo computer NASA nello spazio


Sapevo che quella storia suonava familiare! La sezione "Apollo 11" contiene ulteriori informazioni su questa storia su en.wikipedia.org/wiki/Margaret_Hamilton_(scientist)
hydo

31

Se ho capito bene, il processo di sviluppo è stato di peer review e sperimentazione.

Il team era composto da persone come "Math Doctors" - persone estremamente dedite, intelligenti, appassionate e orientate ai dettagli le cui vite erano dedicate al loro lavoro. Quindi, quando dico la revisione tra pari, intendo molte revisioni tra pari nel corso di molti mesi (più di un anno).

Questi sviluppatori "eseguivano le simulazioni nelle loro teste", "eseguivano il debug del software su carta" e lavoravano in gruppi con molti sviluppatori che guardavano ripetutamente lo stesso codice fino a quando non erano convinti che fosse corretto. C'erano più squadre, ognuna delle quali lavorava su una parte del tutto.

Il mio professore di metodi numerici alla Ohio State University (primavera '96) ha scritto il codice che ha deciso quando dare il via a un palco del missile. Descrisse che la stampa aveva le dimensioni della rubrica (quindi, forse da 2,5 a 3,5 pollici di spessore di 8,5 x 11 pollici di carta - non descriveva la dimensione del carattere) del codice Fortran.

Quando convinti, lanciarono un missile senza pilota (i missili tecnicamente non hanno giroscopi) con una radio a bordo che emetteva un segnale acustico a intervalli regolari. Hanno ascoltato i segnali acustici fino al punto in cui si aspettavano che la radio colpisse la luna (si schiantasse contro di essa e si autodistruggesse) e smettesse di emettere un segnale acustico. Sapevano che se avessero perso, la radio avrebbe continuato a emettere un segnale acustico oltre il tempo di impatto calcolato. L'impatto si è verificato 15 secondi dopo il tempo calcolato.

Questa storia ammisamente aneddotica sono i miei ricordi di una visita in ufficio con il dottore. Era molto vecchio ed era tanto tempo fa. Questo è il mio miglior ricordo.


2
Descrisse che la stampa aveva le dimensioni della rubrica (quindi, forse da 2,5 a 3,5 pollici di spessore da 8,5 x 11 pollici di carta In generale, il codice veniva stampato in modalità orizzontale con circa 55 - 60 righe per pagina. Una risma (100 fogli) di carta stampata ha uno spessore di circa 1,75 pollici
Gilbert Le Blanc,

@GilbertLeBlanc Una risma è in genere di 500 fogli. (a volte 480)
joshp

@joshp: hai ragione. 500 fogli di carta stampata hanno uno spessore di circa 1,75 pollici.
Gilbert Le Blanc,

15

L'AGC è controllato con verbi e nomi

Il software di comando Apollo non è scritto in alcuna sintassi che gli utenti possano riconoscere oggi. Gli astronauti immettono i comandi numericamente, con ogni numero di due cifre che rappresenta un verbo o un sostantivo. Il verbo descriveva l'azione da eseguire e il sostantivo specificava i dati che sarebbero stati influenzati dall'azione del verbo.

Gli astronauti odiavano il verbo e la configurazione dei nomi

Ramón Alonso, uno degli sviluppatori hardware AGC originali, ha affermato che l'interfaccia è stata inventata per impressionare i visitatori del loro laboratorio, ma ha cercato i voli quando nessuno ha sviluppato un'interfaccia migliore. I critici dissero che non era "scientifico" e che i primi astronauti - tutti i piloti di jet d'élite - preferivano quadranti e interruttori, simili a un pannello di controllo dell'aereo.

"L'AGC era molto lento, ma molto affidabile e molto piccolo per quel tempo nella storia dei computer digitali. È stato il primo ad usare circuiti integrati".

Il software così come è stato progettato è stato realizzato praticamente da zero dal MIT.

Puoi scaricare e installare il programma di emulazione dell'Apollo Guidance Computer sul tuo personal computer, nessun problema. Ecco come appare su Mac OS X.

inserisci qui la descrizione dell'immagine


8

Come praticamente ogni altro progetto software, è stato realizzato con scadenze aggressive e pressioni di qualità. Fortunatamente un grande archivio di materiale del project manager del software Howard W. "Bill" Tindall, Jr. è disponibile qui .

Se si campionano i promemoria, è possibile avere un'idea molto chiara del normale conflitto tra tempo, funzionalità e difetti. Vale la pena notare che lo sviluppo è proseguito per un certo numero di anni come il resto del progetto.

La progettazione del sistema iniziò nel secondo trimestre del 1961 e la NASA installò una versione Block I in un veicolo spaziale il 22 settembre 1965. La versione del software originale (chiamato CORONA) avvenne nel gennaio 1966, con il primo volo il 25 agosto, 1966. Meno di 3 anni dopo, i progettisti hanno raggiunto l'obiettivo finale del programma ( http://history.nasa.gov/computers/Ch2-5.html )

Non riesco a trovare riferimenti specifici a come è stato creato il software, ma data la data posso solo supporre che gran parte di esso sia stato fatto su carta e penna, con "simulazioni" fatte manualmente. Sembra che esistesse un sistema per caricare i programmi nell'AGC con schede perforate, presumibilmente per test "rapidi" sul terreno senza la necessità di fabbricare memoria di corda.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.