skip to main | skip to sidebar
31 commenti

Margaret Hamilton, l’informatica che portò l’uomo sulla Luna

Margaret Hamilton con la stampa del software
del computer AGC dell'Apollo.
Credit: NASA.
Capita a tutti di avere un problema al computer: di solito lo si riavvia e la cosa finisce lì. Ma quando il problema al computer capita mentre stai tentando di atterrare sulla Luna per la prima volta nella storia e il computer in crisi è quello che gestisce l'atterraggio, la cosa diventa un pochino più seria, perché il crash che ne può conseguire non è solo di tipo informatico.

Durante la discesa verso la Luna, infatti, il 20 luglio 1969, il computer di bordo del LM, il veicolo che doveva portare sulla Luna gli astronauti Neil Armstrong e Buzz Aldrin, andò in sovraccarico: stava ricevendo troppi dati a causa di un errore di procedura esterno che lo costringeva a svolgere troppi compiti contemporaneamente.

Gli astronauti chiamarono la Terra via radio, segnalando l'allarme con voce tesa: mancavano solo tre minuti all'atterraggio. Serviva una decisione immediata. Da Terra risposero di continuare la discesa ignorando la crisi del computer. Fu la scelta giusta, perché il software del computer scartò i compiti non strettamente necessari e si concentrò sull'unico davvero importante: atterrare.

L'episodio è leggendario e ben noto, ma pochi sanno che se non abbiamo tanti pezzettini d'astronauta sparsi sulla Luna è grazie in gran parte a una donna, Margaret Hamilton. In un'epoca in cui i posti chiave erano tutti in mano agli uomini e il sessismo era ovunque, la Hamilton era direttore e supervisore della programmazione del software del progetto Apollo, a soli 33 anni.

Fu lei, insieme alla propria squadra, a definire i criteri di progettazione e di collaudo del software che faceva funzionare il computer di bordo del LM e in particolare i concetti di elaborazione asincrona e schedulazione delle priorità che permisero al computer di non bloccarsi e consentirono agli astronauti di salvarsi da quel sovraccarico di dati e di atterrare sani e salvi. Erano tempi così pionieristici che fu lei a coniare il termine ingegneria del software. Per il suo lavoro, nel 2003 la NASA le conferì l'Exceptional Space Act Award, che comprendeva il premio in denaro più alto mai dato a una singola persona dall'ente spaziale.

I metodi sviluppati sotto la supervisione di Margaret Hamilton per andare sulla Luna sono quelli che stanno ancora oggi alla base di un'industria che vale circa 400 miliardi di dollari. Oggi la Hamilton ha 79 anni e dirige la Hamilton Technologies: guarda caso, una società specializzata in software ad altissima affidabilità.


Fonti aggiuntive: Time, Wired.

Invia un commento
I commenti non appaiono subito, devono essere tutti approvati da un moderatore. Lo so, è scomodo, ma è necessario per tenere lontani scocciatori, spammer, troll e stupidi: siate civili e verrete pubblicati qualunque sia la vostra opinione; gli incivili di qualsiasi orientamento non verranno pubblicati, se non per mostrare il loro squallore.
Inviando un commento date il vostro consenso alla sua pubblicazione, qui o altrove.
Maggiori informazioni riguardanti regole e utilizzo dei commenti sono reperibili nella sezione apposita.
NOTA BENE. L'area sottostante per l'invio dei commenti non è contenuta in questa pagina ma è un iframe, cioè una finestra su una pagina di Blogger esterna a questo blog. Ciò significa che dovete assicurarvi che non venga bloccata da estensioni del vostro browser (tipo quelle che eliminano le pubblicità) e/o da altri programmi di protezione antimalware (tipo Kaspersky). Inoltre è necessario che sia permesso accettare i cookie da terze parti (informativa sulla privacy a riguardo).
Commenti
Commenti (31)
...che poi oltre ad essere capace e' pure belloccia ;) (o almeno lo era...)
La profonda e recondita bellezza del progetto Apollo, almeno per tutti coloro che stavano dietro alla progettazione, costruzione, controllo, è stata proprio la capacità di creare un'intera classe di persone altamente specializzate e formate a quella che tutt'ora credo sia la più grande impresa del genere umano.

Migliaia di tecnici, ingegneri, dirigenti, progettisti e ci metto anche gli operai dell'indotto hanno vissuto una formazione che poi si è rivelata in molti casi precursore di una attività imprenditoriale in settori IT e/o altamente tecnologici generando a loro volta un indotto altrettanto valido.

È anche questa la risposta da dare a chi chiede che senso ha avuto spendere miliardi di dollari per andare sulla Luna.
Agli inizi il ruolo di programmatore era considerato quasi "bassa manovalanza" per cui non servivano particolari qualita'. Per questo veniva spesso dato alle donne e non esisteva un nome per il software engineering. Il lavoro e' diventato prettamente maschile quando si e' visto (anche con casi come quello discusso qui) che era un ruolo di prestigio.
Alla faccia di tutte le scuse a posteriori che si inventano oggi per giusticare il sessismo nell'informatica.
Io fatico molto nel far capire ai mie capi il concetto di priorità e loro schedulazione (programmazione nel tempo), per evitare che qualcosa si blocchi del tutto, non sapendo cosa fare e quando farlo.
Questa wonder woman ci era arrivata quasi cinquant' anni fa. Chapeau.
"....i concetti di elaborazione asincrona e schedulazione delle priorità..." con un computer della potenza di un Commodore 64 e in un epoca di schede perforate! Sono affascinato e commosso, dovrebbero istituire il Nobel dell'informatica ed assegnarglielo d'ufficio!
Mentre in Italia.. le donne erano nelle risaie...
@stefano
.i concetti di elaborazione asincrona e schedulazione delle priorità..." con un computer della potenza di un Commodore 64
proprio per questo non potevano permettersi sprechi...
Ottima idea fare un articolo in onore della Hamilton. Spesso si nominano Steve Bailes e Gary e Jack Garman quando si parla di quell'evento, mentre la figura di Margaret Hamilton, che ebbe meriti molto più ampi, è citata di rado.

Una delle lezioni più importanti di Apollo è stata quella che si possono affidare incarichi di enorme responsabilità a giovani che in Italia (ma anche altrove, seppur meno) sarebbero considerati ancora ragazzini.

L'altra, che nulla come le missioni spaziali abbiano giovato alla condizione odierna della donna e alla rimozione di tanti luoghi comuni in merito. http://women.nasa.gov/
@MacLo:
> Mentre in Italia.. le donne erano nelle risaie...

Margherita Hack e Rita Levi-Montalcini (tanto per citarne un paio...) non erano nelle risaie.
@pgc
Una delle lezioni più importanti di Apollo è stata quella che si possono affidare incarichi di enorme responsabilità a giovani che in Italia (ma anche altrove, seppur meno) sarebbero considerati ancora ragazzini.
secondo me la lezione sarebbe "fai fare le cose a chi le sa fare" e non come si fa qui falle fare a chi ti costa meno...
Però il sito della sua company è rimasto fermo agli anni '60... ;)
"In un'epoca in cui i posti chiave erano tutti in mano agli uomini e il sessismo era ovunque"
La situazione nei campi ad alta tecnologia è cambiata da allora?
Adoro leggere queste notizie su questo imperdibile blog. Grazie mille Paolo
@ Stefano:

altro che schede perforate! il codice era cablato, anzi letteralmente 'cucito'! su internet potete trovare foto di arzille signore (donne anche qui!) che passano fili di rame in anellini ferromagnetici, formando le file di zero e uno che componevano il programma - che doveva essere pronto tre mesi prima per dare il tempo di realizzare l'implementazione fisica.
Splendido articolo.

Sarà che sono abbastanza inesperto, ma... mi chiedo una cosa:

"si concentrò sull'unico davvero importante: atterrare."

"consentirono agli astronauti di salvarsi da quel sovraccarico di dati e di atterrare sani e salvi."

Atterrare... o allunare?
@ violetta
le foto citate mostrano il montaggio delle RAM dell'epoca, costituite appunto da anellini magnetizzabili, una memoria volatile non usata per istruzioni cablate, che richiedevano una diversa tecnologia
THANK YOU VERY MUCH MARGARET!!! :-))
@ Alessandro M
in inglese si usa sempre il termine atterrare, nel significato di toccare "terra" suolo, superficie, diverso da "terra" pianeta - mentre per noi il medesimo vocabolo ha i due significati - nell'inglese i due termini sono distinti - nel caso dell'aereo che scese nel fiume, il pilota disse appunto "atterro nell'Hudson"
Questo articolo mi ha fatto tornare in mente un aneddoto, sempre a proposito di software e allunaggi, raccontato in un'intervista da Edsger Dijkstra (per chi non lo conoscesse: era un grande scienziato informatico olandese, che per tutta la sua carriera ha insistito sullo sviluppo allo stesso tempo dei programmi e delle dimostrazioni di correttezza degli stessi).

Poco tempo dopo l'allunaggio, Dijkstra si era trovato a parlare con Joel Aron, a capo della divisione dell'IBM responsabile dello sviluppo software per il volo dell'Apollo. Dijkstra era impressionato che fossero riusciti a scrivere una così grande quantità di codice corretta, e chiese ad Aron come avessero fatto; "Corretta?", replicò Aron, e gli raccontò che, in uno dei calcoli dell'orbita del modulo lunare, la Luna era stata definita come repulsiva anziché attrattiva, ed avevano scoperto questo errore per caso (!) cinque giorni prima del lancio. Al che Dijkstra sbiancò in volto e disse "Quei ragazzi sono stati fortunati!"; "Già", concordò Aron.
"secondo me la lezione sarebbe "fai fare le cose a chi le sa fare""
Cosa sacrosanta, ma di cui troppo spesso ci si dimentica. Ho colleghi che potrebbero essere miei figli o colleghe donne (anche piu' bellocce della Hamilton) che sanno fare cose folli. E, almeno dove lavoro io, le fanno fare a loro, perche' le sanno fare. Lo so, sono fortunato a lavorare qui.
I complottisti direbbero che :
il pc non ha funzionato durante la fase più critica dell' allunaggio CVD.

I complottisti direbbero che :
Quasi tutte le memorie RAM sono affette dal "row hammer" error
che modifica casualmente i bit delle righe di memoria,
anche delle più costose ECC.
Miliardi di chip difettosi venduti in tutto il mondo.

I complottisti direbbero che :
se utilizziamo questi chip pure nelle auto o sui missili,
ogni risultato potrebbe essere puramente casuale.

atomos sei sicuro che sia vero quello che scrivi?
Quella era l'epoca del famoso "Black Team" che tanto ha fatto per ripulire dai bug vari tutto il codice dei mainframe IBM
@DvD
Ne sono ragionevolmente sicuro. L'ho sentito raccontare dallo stesso Dijkstra in un'intervista per una tv olandese. Nell'intervista Dijkstra era già in età avanzata (leggasi: a molti anni di distanza dall'accaduto), per cui è difficile che ricordasse tutti i particolari in modo esattissimo, ma penso che a grandi linee ci si possa fidare di quanto raccontato.
"Fu la scelta giusta, perché il software del computer scartò i compiti non strettamente necessari e si concentrò sull'unico davvero importante: atterrare. "
In realtà non andò così. Continuava a riavviarsi e quindi dovettero passare ad una modalità di volo più manuale. Il vero problema fu che gli astronauti vennero distratti dall'unica cosa che dovevano fare: atterrare. E infatti per poco non finirono in un posto inadatto all'atterraggio e senza carburante. La NASA girò la cosa come il successo di una persona (chi decise di dare il GO) ma era un chiaro insuccesso procedurale. Andò bene. La missione Apollo era di una tale complessità che se non ci fosse stata anche un po' di fortuna, non sarebbe stato il successo che è stato. Comunque la lezione per chi a software è chiara: non accontentarsi della perfezione ideale e non sottovalutare mai il contesto in cui il software gira veramente. Insomma: sfinirsi di test e simulazioni perché la legge di Murphy è sempre in agguato....
Federico,

In realtà non andò così. Continuava a riavviarsi e quindi dovettero passare ad una modalità di volo più manuale.

Hai della documentazione a supporto di questo dettaglio della modalità? Vado a memoria, ma non mi risulta nessuno passaggio ad altre modalità di volo "più manuali" durante la discesa di Apollo 11. Sul riavvio, invece, siamo d'accordo.
Certo che le ho. Le prime che riesco a recuperare (mi manca solo una intervista di Armstrong, ma queste dovrebbero bastare).
Sulla "distrazione" di Armstrong:
- pagg. 224 e 225 in Mindell, D. A. (2011). Digital Apollo: human and machine in spaceflight. Mit Press.
- pagina 21 del NASA TECHNICAL NOTE APOLLO EXPERIENCE REPORT - MISSION PLANNING FOR LUNAR MODULE DESCENT AND ASCENT by Floyd V. Bennett (NASA TN D-6846)
Sul passaggio al programma semi-automatico (p66) p. 229 (Mindell, op. cit.).
Inoltre, in Eyles, D. (2004) TALES FROM THE LUNAR MODULE GUIDANCE COMPUTER. In procs of the 27th annual Guidance and Control Conference of the American Astronautical Society (AAS), in Breckenridge, Colorado on February 6 (AAS 04-064) vi è il passaggio più chiaro a riguardo: "At MET 102:43:08, forestalling the next alarm, Armstrong switched the autopilot from AUTO to ATT HOLD mode, easing the computational burden, and then entered semi-manual mode P66, where the burden was still lighter. After 2 minutes and 20 seconds spent maneuvering in P66 without alarms, the LM landed."
Qui (https://www.youtube.com/watch?v=RONIax0_1ec) c'è una bella ricostruzione dell'accadut: un po' come il tuo moonscape ma integrante i programmi eseguiti durante il landing.
Ci sono diverse cronache più entusiaste del comportamento software (ad esempio, di Adler, 1998, Apollo 11 Program Alarms EDIT, si esatto è il riferimento che riporti anche tu) il cui argomento principale è di fatto ripreso nel tuo articolo, ma da persona che si occupa di software-related risk direi che, pur non sottovalutando le innovazioni introdotte dal team della Hamilton, il safety-critical system complessivo costituito dal LM, il software, Armstrong e le innumerevli procedure monitorate da Houston (un sistema che gli addetti ai lavori denotano come "socio-technical system" per intendere che nessuna componente può essere isolata dalle interazioni con le altre) non ha funzionato bene e si è evitato il disastro per poco e, a mio parere, soprattutto per il grandissimo sangue freddo di Armstrong ("whose heart rate rose from 120 to 150 beats per minute". in concomitanza con gli allarmi, soprattutto per la loro incomprensibilità, p. 224 (Mindell, 2008).
Come lui stesso dichiarò "this was the area we completely failed".
Dopo avere visto "In the shadow of the moon" la dichiarazione di Aldrin mi ha fatto vedere le cose in maniera differente:

So the landing radar is feeding information, the rendezvous radar is, and evidently, that combination was not anticipated by the guys at MIT.
They were pretty narrow-minded.
"You're making a descent, you need the radar, landing radar. You are making a rendezvous, you need the rendezvous. But you don't need to mix the two!"
But they didn't think the same way I did.

Non dovevano essersi chiariti un granchè sulle priorità e le modalità, a quanto vedo!
Esatto!
Inoltre Aldrin (un pilota militare) aveva ragione e quelli de MIT avevano torto (o meglio, non avevano considerato il contesto di utilizzo del loro software, cioè un sistema dotato di decine di sensori ed effettori).
Infatti (da Eyles, 2004, op. cit.)
"The Rendezvous Radar (RR) was on for no other purpose than to be warmed up if there were an abort, and it was in AUTO (while the LM was in a position to track the CM) or in SLEW (at other times), simply to keep the antenna from moving uselessly."
Da un punto di vista aeronautico non fa una piega. Se il RR doveva essere spento per non rubare CPU time allora doveva essere chiaro che dovesse essere spento. Pare che la cosa non fosse così chiara...
Il motivo è anche che il software fu testato in vitro, e quindi non attaccato ai sensori effettivi; ovviamente ci sono ottime ragioni per cui si _dovette_ fare così (tempi, costi), ma anche ottime ragioni per cui NON si dovesse fare così (aspettarsi l'inaspettato).
Federico,

Aha! P66, è vero. Grazie del chiarimento dettagliatissimo. Dovrò trovare la maniera di inserirlo nel prossimo aggiornamento di Moonscape.
Non c'è di che Paolo, sono lieto di aver contribuito a questa fonte di informazioni normalmente molto dettagliate. Considera che il problema non fu l'attivazione del P66 in sé (una modalità di guida semi-automatica) poiché attivarla era nella facoltà dei comandanti degli Apollo e infatti mi pare di ricordare che tutti se ne avvalsero (chi prima chi dopo: dopo tutto erano piloti militari). Il problema fu la "distrazione" dell'elemento umano (Mindell, p. 223: "According to the checklist (EVAL MAN CONT, for ‘‘evaluate manual control’’), Armstrong was supposed to have done this earlier so he could focus on evaluating the landing site, but he may have delayed it due to the computer alarms." E meglio ancora nelle parole dello stesso Armstrong: "our attention was directed toward clearing the program alarms, keeping the machine flying, and assuring ourselves that control was adequate to continue without requiring an abort. Most of the attention was directed inside the cockpit during this time period and, in my view, this would account for our inability to study the landing site and final landing location during the final descent.")
Non volevo fare overkilling su questo argomento: mi ero preparato a riguardo per un convegno che ho tenuto all'università in cui lavoro e ho sempre trovato quell'episodio molto formativo di come le cose possano andare storte se si ha un certo atteggiamento nei confronti delle condizioni al contorno di esecuzione di un software. Questo non sminuisce assolutamente il grande lavoro della Hamilton e del suo team che è giusto ricordare e anche celebrare giornalisticamente, proprio come hai fatto tu. Keep up the good work!