Chi è Margaret Hamilton?
Quel fatidico 20 luglio 1969, Margaret Hamilton ha 32 anni ed è capo di un team di programmatori informatici al Massachusetts Institute of Technology (MIT) di Boston, dove è arrivata da una decina di anni, quasi per caso. Nel 1959 suo marito stava frequentando la facoltà di legge di Harvard quando lei, appassionata di matematica fin da bambina, comincia a lavorare a un software per le previsioni meteorologiche. Quando qualche anno più tardi il MIT sta cercando programmatori per lavorare al programma di voli umani verso la Luna, sa di trovarsi nel posto giusto. Il suo gruppo viene incaricato di scrivere il software di volo per i due computer dell’Apollo 11: uno a bordo del modulo di comando, il Columbia, e uno a bordo del modulo lunare, l’Eagle. Il programma doveva essere flessibile e capace di affrontare problemi non prevedibili prima del lancio della missione. E per fare tutto questo, Margaret Hamilton e il suo gruppo dovevano adattarsi alle limitazioni tecnologiche dell’epoca. I due computer di bordo avevano una memoria di appena 72 kilobyte, pari a circa un milionesimo di quella a disposizione dei nostri smartphone moderni. Per fornire informazioni al computer erano allora necessarie le schede perforate, particolare supporto cartaceo in cui l’informazione era immagazzinata con punti perforati in aree predefinite della scheda stessa. Anche il risultato delle elaborazioni del computer, allora grande praticamente come un’intera stanza, veniva fornito sotto forma di scheda perforata, perché non aveva nessun monitor o schermo.Prevedere l’imprevedibile
Una delle tante storie che circolano attorno al lavoro di Margaret Hamilton riguarda la figlia Lauren, che potrebbe aver avuto un ruolo indiretto, ma fondamentale, nello sviluppo del software definitivo. Pare, infatti, che durante uno dei test del software abbia premuto inavvertitamente il tasto che lanciava il programma PO1 per il pre-lancio mentre il sistema era in modalità ‘volo’, mandando in crash il simulatore. E se fosse successo durante la missione? Se gli astronauti avessero lanciato il programma sbagliato? Le veniva detto di non preoccuparsi, perché l’errore umano era reso impossibile dalla preparazione degli astronauti stessi. In realtà, qualcosa del genere successe davvero durante la missione Apollo 8, quando Jim Lovell ha commesso esattamente lo stesso errore di Lauren: lanciare il programma PO1 durante la fase di volo. In quell’occasione, il team della Hamilton è riuscito a correggere il problema da terra nel giro di poche ore, ma l’allarme ha indotto la NASA a prestare attenzione alle preoccupazioni dell’ingegnera. Per l’Apollo 11 il software sviluppato dalla Hamilton si è arricchito di una caratteristica innovativa che doveva evitare proprio il tipo di errori umani commessi da Lauren e Jim Lovell. Il programma era progettato in modo da essere in grado di interrompere compiti meno importanti in caso di emergenza e dedicare tutte le risorse di calcolo e memoria a quelli essenziali. Inoltre, altra innovazione, sfruttava il suono come indicatore che qualcosa non stava andando per il verso giusto: il programma funzionante, infatti, produceva un caratteristico suono che, se alterato, indicava che c’era un allarme in corso.«Houston, Tranquillity Base here. The Eagle has landed»
Il 20 luglio del 1969, durante la missione, a causa di una checklist sbagliata gli astronauti spostano l’interruttore del radar di rendezvous in una posizione sbagliata. La conseguenza è l’invio di segnali sbagliati al computer, al quale veniva chiesto di eseguire un carico maggiore di inutili funzioni, con un consumo di risorse aumentato del 15%. Il software stesso, grazie al design della Hamilton, era in grado di riconoscere che gli era stato richiesto di fare più di quello che poteva eseguire, da cui l’allarme. Ma il computer, come ha raccontato la stessa Margaret «era programmato per fare di più che riconoscere le condizioni di errore. Un insieme completo di procedure di ripristino era incorporato. L'azione eseguita dal software, in questo caso, fu quella di eliminare i processi a priorità più bassa e ripristinare i più importanti... Se il computer non avesse riconosciuto questo problema e reagito di conseguenza, dubito che Apollo 11 avrebbe potuta essere l'allunaggio con successo che fu.» Nel momento in cui suona l’allarme a bordo dell’Eagle e a Houston, dove si trova il comando della missione Apollo, si tratta di decidere se abortire o meno la missione. In quel frangente, la NASA avrebbe dovuto fidarsi dell’allarme del proprio hardware e chiedere agli astronauti di non atterrare. Ma il comando ha deciso di fidarsi della capacità del software della Hamilton di non tenere conto del comando erroneo causato dalla checklist sbagliata e di forzare i processi nella direzione corretta. Così è stato per certi versi il software a prendere i comandi e pochi minuti dopo Neil Armstrong poteva comunicare che il modulo lunare era atterrato sano e salvo nel Mare della Tranquillità.L’eredità di Margaret Hamilton
Oltre a sviluppare il software per i computer dei veicolo spaziali della NASA, Margaret Hamilton ha lavorato costantemente all’analisi delle missioni lunari, e in particolare del comportamento della parte informatica. Da questi lavori ha ricavato molte lezioni generali sul funzionamento dei sistemi informatici e la loro interazione con quelli automatizzati. Si trattava di una branca nuova dell’informatica, basata sulla capacità di un sistema di adattarsi a eventi inaspettati, attraverso i concetti di flessibilità e adattamento a problemi non previsti. Di questo settore Margaret Hamilton è stata una delle indiscusse pioniera dell’ingegneria del software, un termine che lei stessa ha reso popolare. Infine, rimane nella bacheca dei simboli quella sua foto che la ritrae di fianco alla pila di schede perforate, un’immagine che ha la forza del simbolo: di cosa può fare l’umanità usando la ragione e la scienza, e dove può arrivare una donna in un mondo ancora largamente dominato dagli uomini.
Per approfondire
Su Aula di Science: la storia di Ada Lovelace, la creatrice del primo algoritmo per programmare un computer.
Su GitHub si trova il codice completo scritto dalla Hamilton, che lo ha concepito fin dall'inizio come un software open e liberamente distribuibile.
Il video che mostra il presidente Barack Obama conferire a Margaret Hamilton la Grace Hopper Medal for Freedom nel 2016: