In questo mese dedicato alla storia delle donne analizziamo come le loro innovazioni abbiano fatto progredire la programmazione informatica.
Molti anni prima che i programmatori di software lavorassero chini sulle tastiere in eleganti e ampi uffici hi-tech, furono le donne a gettare le basi della programmazione informatica moderna, in condizioni tutt'altro che glamour.
Per buona parte della sua storia iniziale, la programmazione è stata considerata un lavoro ripetitivo e tedioso. Numerosi storici hanno dimostrato che furono soprattutto le donne a svolgerlo, secondo lo Smithsonian American Women’s History Museum.
Con la fine del Mese della storia delle donne, ripercorriamo le innovazioni firmate da donne che hanno plasmato l'informatica, dalla stesura del primo programma informatico alla tessitura del software che portò gli astronauti americani sulla Luna.
Il primo programma informatico
Durante la traduzione di un articolo del matematico Luigi Menabrea sulla Analytical Engine, generalmente considerata il primo computer, la matematica britannica Ada Lovelace finì per correggere le sue annotazioni. E per scrivere il primo programma informatico.
Lovelace, figlia del poeta Lord Byron, mostrò fin da bambina una particolare predisposizione per la matematica. Il suo talento la portò a una stretta collaborazione professionale con il matematico e inventore Charles Babbage, in particolare sul progetto della sua Analytical Engine.
Nel 1843, mentre traduceva l'articolo di Menabrea, Lovelace aggiunse lunghe note a piè di pagina: furono il suo contributo decisivo alle scienze informatiche. In quelle note fu la prima a suggerire che una macchina potesse non solo manipolare numeri e produrre un risultato matematico, ma anche trattare simboli.
La Analytical Engine «potrebbe agire su altre cose oltre ai numeri, se si trovassero oggetti le cui relazioni fondamentali reciproche potessero essere espresse da quelle della scienza astratta delle operazioni, e che fossero anche suscettibili di adattamento all’azione della notazione operativa e del meccanismo della macchina», scrisse in una delle sue note di traduttrice (fonte in inglese).
Lovelace ipotizzò anche che i numeri potessero rappresentare non solo quantità e mostrò quanto potesse essere ampio il ruolo di una macchina oltre il mero calcolo. Nelle sue note delineò la possibile traduzione di «suoni» e «composizioni musicali» in operazioni che una macchina avrebbe potuto usare per «comporre brani musicali complessi e scientifici di qualunque grado di complessità o estensione».
I calcoli e i commenti della matematica quasi triplicarono la lunghezza dell’articolo originale e costituirono il primo insieme di istruzioni per computer. Gli appunti di Lovelace avrebbero poi influenzato il lavoro del matematico e logico britannico Alan Turing nella decrittazione dei codici durante la Seconda guerra mondiale.
Il compilatore e il dialogo con le macchine
Per anni i programmatori hanno scritto i programmi come lunghe sequenze di numeri, perché i computer potessero comprenderli.
Poi, nel 1952, l'informatica ed ex ufficiale della Marina statunitense Grace Hopper creò il compilatore. È un programma che traduce il codice da un linguaggio di programmazione di alto livello, quello in cui viene scritto (Java e Python sono alcuni esempi moderni), a linguaggi di basso livello comprensibili per il computer, come il codice binario.
Quel compilatore, chiamato A-0, trasformava il codice matematico simbolico in codice leggibile dalla macchina ed ebbe un ruolo centrale nello sviluppo dei linguaggi di programmazione moderni.
Il compilatore di Hopper fu il frutto di anni di lavoro per semplificare la programmazione.
Durante la Seconda guerra mondiale, lavorando al Mark I, il primo calcolatore automatico su larga scala, Hopper notò che alcuni calcoli venivano ripetuti più volte all’interno di una stessa operazione e decise così di creare un piccolo archivio di porzioni di codice usate più spesso.
Da qui nacque il concetto moderno di subroutine: piccoli blocchi di codice scritti all’interno di un programma più grande per svolgere operazioni che possono dover essere ripetute più volte. Le subroutine fanno risparmiare tempo, perché il codice è già stato scritto e collaudato.
Il compilatore A-0 di Hopper, sviluppato anni dopo la guerra, permetteva agli utenti di scrivere lo schema di un programma in un linguaggio semplificato. Hopper aveva continuato ad arricchire il suo archivio di subroutine, che registrò su un nastro assegnando a ciascuna un numero di richiamo. Quando l’utente descriveva il programma di cui aveva bisogno, il compilatore individuava automaticamente sul nastro le subroutine necessarie e le metteva nell’ordine giusto.
In seguito Hopper contribuì a sviluppare uno dei primi linguaggi di programmazione di alto livello basati sull’inglese: il COBOL (Common Business-oriented Language). Collaborò alla progettazione e alla realizzazione dei compilatori per questo linguaggio.
Con A-0 e con il COBOL, Hopper rese molto più semplice dialogare con le macchine.
La messa a punto del GPS moderno
Il lavoro della matematica statunitense Gladys West è alla base della precisione del moderno sistema di posizionamento globale (GPS), una tecnologia oggi quasi onnipresente, usata da turisti, tassisti e piloti.
Quando nel 1956 entrò al Naval Proving Ground della Marina statunitense, diventando la seconda donna afroamericana assunta in quella struttura, West guidò un gruppo di analisti che utilizzavano i dati dei sensori dei satelliti per calcolare forma e dimensioni della Terra e le orbite attorno ad essa.
Questi calcoli sono la base delle traiettorie di volo che i satelliti GPS tracciano ancora oggi.
Il contributo di West è rimasto a lungo nell’ombra, finché nel 2018 non le è stato conferito lo Space and Missiles Pioneers Award dell’Aeronautica militare statunitense. Nel 2021 è diventata la prima donna a ricevere la Prince Philip Medal, assegnata dalla Royal Academy of Engineering del Regno Unito.
Tessere il software per andare sulla Luna
In uno stabilimento appena fuori Boston, negli Stati Uniti, operaie tessitrici memorizzavano le istruzioni software delle missioni Apollo in una lunga «corda» di fili metallici.
L'informatica e programmatrice Margaret Hamilton guidò lo sviluppo e la produzione del software per le missioni Apollo della NASA, e il suo lavoro fu essenziale per le sei missioni che tra il 1969 e il 1972 portarono gli astronauti statunitensi sulla Luna.
Sotto la sua guida, il team trovò un modo ingegnoso per memorizzare i programmi dei computer di bordo: li «tessero» in una corda di fili di rame.
I computer memorizzano le informazioni in codice binario, una sequenza di uno e zero. La memoria dei computer moderni conserva questi dati su piccoli chip di silicio. All’epoca delle missioni Apollo, invece, le informazioni venivano memorizzate magnetizzando piccoli nuclei a forma di ciambella.
Un filo che passava attraverso il foro rappresentava il valore binario 1; se il filo aggirava il nucleo, senza attraversarne il centro, rappresentava lo 0. Questa tecnologia era nota come core-rope memory, memoria a corda di nuclei.
Durante le missioni Apollo, una volta scritto un programma, tradotto in codice e perforato su schede di carta, il codice veniva inviato a uno stabilimento dove le lavoratrici, spesso ex dipendenti di industrie tessili, intrecciavano fili di rame e nuclei magnetici in una lunga corda capace di contenere grandi quantità di istruzioni.
Oltre ad adottare questa soluzione di memoria, Hamilton si concentrò soprattutto sulla progettazione di software in grado di rilevare gli errori di sistema e di recuperare i programmi in caso di blocco del computer, funzione che si rivelò cruciale per la missione Apollo 11, la prima ad atterrare con successo sulla Luna.
«L’esperienza stessa del software (progettarlo, svilupparlo, farlo evolvere, vederlo funzionare e trarne insegnamenti per i sistemi futuri) è stata almeno altrettanto entusiasmante quanto gli eventi che circondavano la missione», raccontò Hamilton al MIT News (fonte in inglese) nel 2009, ripensando alla sua esperienza con le missioni Apollo.
«Ripensandoci, eravamo le persone più fortunate del mondo: non avevamo altra scelta che essere pionieri, non c’era tempo per fare i principianti».