Curiosando si impararivista di curiosità

Storie

Margaret Hamilton: la programmatrice del MIT che salvò l'allunaggio dell'Apollo 11 alle 20:17:39 del 20 luglio 1969

Aveva 33 anni, una figlia che portava in laboratorio, e codificò la frase "software engineering". Quando il computer di bordo andò in tilt, il suo codice salvò Armstrong e Aldrin.

di Andrea Bertolotti··5 min di lettura
Modulo lunare Apollo 11 in fase di assemblaggio o test, riferimento storico NASA
Modulo lunare Apollo 11 in fase di assemblaggio o test, riferimento storico NASA

20 luglio 1969, ore 20:17:39 UTC: il modulo lunare Eagle di Neil Armstrong e Buzz Aldrin posa il piede su un cratere chiamato Mare della Tranquillità. Quattro minuti prima il computer di bordo è andato in allarme cinque volte. Sul display lampeggia il codice 1202. A Houston, nei minuti più tesi della storia dell'esplorazione spaziale, l'ingegnere Steve Bales decide in 30 secondi: «GO». L'allunaggio prosegue. La decisione si basa sul fatto che, sotto quei numeri di errore, sta funzionando un sistema operativo capace di sopravvivere a un sovraccarico. Lo aveva scritto, anni prima, una giovane matematica del MIT: Margaret Hamilton.

L'ingegnere che inventò la sua professione

Nata il 17 agosto 1936 a Paoli, Indiana, Margaret Hamilton studia matematica all'Earlham College e si specializza in matematica astratta al MIT. Quando arriva al Charles Stark Draper Laboratory nel 1961, ha 25 anni e una figlia di pochi mesi, Lauren, che porterà più volte in laboratorio durante i suoi turni notturni. Lavora prima a un progetto di previsione del tempo, poi al sistema SAGE di sorveglianza radar antimissile. Nel 1965 entra a far parte del team che sviluppa il software del Programma Apollo. Quando viene nominata responsabile del Command Module e in seguito direttrice dell'intera divisione, ha 31 anni, è una delle pochissime donne in un'organizzazione di centinaia di programmatori, ed è la persona che ha letteralmente coniato l'espressione "software engineering". Lo fece per dare dignità a una disciplina che gli ingegneri tradizionali consideravano un'attività femminile, non scientifica.

Modulo lunare Eagle dell'Apollo 11 fotografato dal modulo di comando
Il modulo lunare Eagle è atterrato sulla Luna grazie al software di Hamilton. Foto: NASA

Il codice della Luna

Il software dell'Apollo Guidance Computer (AGC) era costituito da circa 40.000 righe di codice assembly per il modulo di comando e altrettante per il modulo lunare. Una mole enorme per gli standard dell'epoca. Il computer aveva 64 kilobyte di memoria (di cui 36 KB di memoria a sola lettura tessuta a mano da operaie con fili di rame attorno a nuclei magnetici, una alla volta) e una velocità di calcolo di circa 0,043 MHz. Per confronto, un comune smartphone del 2026 è circa diecimila volte più veloce. La NASA ha pubblicato una celebre fotografia di Hamilton in piedi accanto a una pila di stampati del codice Apollo alta più di lei.

L'invenzione che salvò Apollo 11: i "priority displays"

Hamilton aveva insistito perché il software di volo avesse un meccanismo di priorità asincrona: in caso di sovraccarico, il sistema non si sarebbe bloccato e nemmeno si sarebbe riavviato; avrebbe semplicemente scartato i compiti meno importanti per concentrarsi su quelli vitali. Il sistema avvisava gli astronauti tramite codici come 1201 e 1202, accompagnati da una procedura di recupero automatica. I superiori l'avevano criticata: «troppo paranoia, gli astronauti sono ben addestrati, non commetteranno errori». Hamilton aveva risposto che il software doveva essere robusto indipendentemente dagli errori umani.

Il 20 luglio 1969, Aldrin lascia accidentalmente acceso il radar di rendezvous durante la discesa lunare. Il radar invia al computer un flusso di dati non previsto. Il processore si trova a dover gestire il 15% di carico extra. Sarebbe stato sufficiente a mandare in crash qualunque sistema standard del 1969. L'AGC, invece, lancia l'allarme 1202 — «executive overflow» — scarta autonomamente i task non essenziali, e continua a far atterrare il modulo. Hamilton, da casa a Boston, vede le luci dell'allunaggio in TV con la figlia di otto anni. Il suo codice ha appena salvato la missione.

Piede del modulo lunare Apollo 11 sulla superficie della Luna
Il footpad dell'Eagle sul Mare della Tranquillità: la prima impronta umana lunare. Foto: NASA

Dopo l'Apollo

Negli anni '70 Hamilton fonda due aziende per applicare i principi del software embedded a sistemi mission-critical: Higher Order Software e poi Hamilton Technologies, attiva tuttora. Sviluppa USL (Universal Systems Language), un linguaggio di specifica per sistemi «error-free by design»: l'idea è che molti bug sono evitabili a livello di progettazione, non solo di scrittura del codice. È un principio che oggi ritroviamo in linguaggi come Rust o nelle tecniche di formal verification dei sistemi aerospaziali.

I riconoscimenti

Per quasi quarant'anni il nome di Margaret Hamilton è rimasto quasi sconosciuto al grande pubblico. La fotografia di lei accanto alla pila di codice è diventata virale solo negli anni 2010. Nel 2003 la NASA le conferisce il NASA Exceptional Space Act Award, un riconoscimento personale che porta con sé il più alto premio finanziario mai dato dalla NASA a un singolo: 37.200 dollari per i contributi all'Apollo. Nel novembre 2016 il presidente Barack Obama le consegna la Presidential Medal of Freedom, la più alta onorificenza civile americana. Nel 2017 LEGO le dedica un set: una statuetta in tuta da MIT con i suoi stampati di codice.

Cosa ci insegna la sua storia

L'esempio di Margaret Hamilton ha avuto un secondo lascito, oltre alla Luna: aver dimostrato che il software non è un "sottoprodotto" dell'hardware ma una disciplina autonoma con i suoi principi, le sue best practice e i suoi standard di qualità. Ogni volta che un'automobile a guida assistita evita un ostacolo, ogni volta che un controllore del traffico aereo si fida del suo radar, ogni volta che una sonda Mars sopravvive a un sovraccarico, c'è qualcosa di Margaret Hamilton dentro. Il suo principio guida — "se un essere umano può fare un errore, il software deve poterlo gestire" — è oggi alla base della ingegneria del software moderna.

Domande frequenti

Quanti codici Apollo ha scritto personalmente Hamilton?

Come ogni grande progetto, il software Apollo è stato scritto da decine di persone. Hamilton è stata lead developer del software di volo Apollo 11, ha personalmente firmato moduli critici (fra cui i priority displays e il sistema di error recovery) e ha supervisionato l'intero codice del modulo lunare e del modulo di comando.

Si può visitare il codice Apollo originale?

Sì. Il codice sorgente assembly dell'Apollo 11 (Command Module "Comanche055" e Lunar Module "Luminary099") è stato pubblicato su GitHub nel 2016 da un'iniziativa volontaria di programmatori. È leggibile, commentato, e si può eseguire in un emulatore AGC scaricabile dall'MIT.

Una buona curiosità ogni mattina

Iscriviti gratuitamente: niente spam, solo articoli scelti.

Iscrivendoti accetti la privacy policy. Puoi disiscriverti in ogni momento.


Da scoprire

Continua a leggere

Altre storie che ti potrebbero piacere, scelte per te