Le donne che hanno scritto la storia del software: dall’ENIAC alla Luna
Nel mondo della programmazione informatica, molte delle figure più conosciute sono uomini. Eppure, fin dalle origini dell’informatica moderna, numerose donne hanno contribuito alla nascita dei linguaggi di programmazione, allo sviluppo dei primi calcolatori elettronici e alla realizzazione di sistemi destinati a cambiare la storia della tecnologia.
Alcune di loro iniziarono a lavorare quando la parola software non aveva ancora il significato che le attribuiamo oggi, altre contribuirono a trasformare la programmazione in una vera disciplina ingegneristica. Per ricostruire questa storia, però, dobbiamo tornare indietro di quasi due secoli, quando i computer elettronici non esistevano e una giovane matematica inglese cominciava a immaginare cosa avrebbe potuto fare una macchina programmabile.
Ada Lovelace: programmare prima dei computer
Augusta Ada Byron, contessa di Lovelace, nacque a Londra nel 1815 ed era figlia del poeta Lord Byron. Fin da giovane mostrò un particolare interesse per la matematica e le scienze, entrando successivamente in contatto con Charles Babbage, impegnato nella progettazione delle sue macchine calcolatrici.
Nel 1843 Ada tradusse dall’italiano un articolo dell’ingegnere Luigi Federico Menabrea dedicato alla macchina analitica di Babbage, aggiungendo una serie di note che finirono per essere molto più estese del testo originale. In una di queste, la celebre Nota G, descrisse una sequenza di operazioni destinata al calcolo dei numeri di Bernoulli, considerata uno dei primi esempi pubblicati di algoritmo concepito per essere eseguito da una macchina.
Ma il suo contributo più importante fu probabilmente un altro, perché comprese che una macchina capace di manipolare simboli secondo regole prestabilite avrebbe potuto elaborare non soltanto numeri, ma anche altri tipi di informazioni, purché rappresentabili attraverso un sistema formale.
Era un’intuizione straordinaria per l’epoca, che anticipava uno dei principi fondamentali dell’informatica moderna, ovvero la possibilità di utilizzare una macchina programmabile per elaborare informazioni di natura diversa.
La macchina analitica non venne completata durante la sua vita e Ada Lovelace morì nel 1852, a soli 36 anni. Le sue riflessioni sarebbero state rivalutate molti decenni dopo, quando la nascita dei calcolatori elettronici avrebbe trasformato in realtà alcune delle possibilità che aveva immaginato.
Le programmatrici dell’ENIAC: quando il software non esisteva ancora
Durante la Seconda guerra mondiale, l’esercito americano aveva bisogno di calcolare rapidamente le tabelle balistiche utilizzate dall’artiglieria. Era un lavoro lungo e complesso, svolto da gruppi di persone che eseguivano manualmente i calcoli, spesso con l’aiuto di calcolatrici meccaniche. Fra queste persone vi erano numerose donne, impiegate come computers, termine che all’epoca indicava chi eseguiva calcoli matematici, non una macchina.
Nel 1943, presso la Moore School of Electrical Engineering dell’Università della Pennsylvania, iniziò lo sviluppo dell’ENIAC (Electronic Numerical Integrator and Computer), uno dei primi grandi calcolatori elettronici digitali general-purpose.
Per programmare la nuova macchina furono selezionate sei donne: Jean Bartik, Betty Holberton, Kathleen McNulty, Marlyn Wescoff, Ruth Lichterman e Frances Bilas. Il loro compito non consisteva nel perforare schede o inserire semplicemente dei dati, ma nel comprendere i problemi matematici, suddividerli in operazioni elementari e stabilire come la macchina avrebbe dovuto eseguirli.
L’ENIAC, infatti, non disponeva inizialmente di una memoria nella quale caricare un programma come avviene nei computer moderni. La programmazione richiedeva di impostare interruttori e realizzare collegamenti fisici fra le diverse unità di calcolo mediante cavi, tanto che ogni modifica significativa poteva richiedere una nuova configurazione della macchina, con un lavoro complesso di preparazione e verifica.
Le sei programmatrici dovettero quindi sviluppare metodi operativi per una macchina che non aveva ancora una tradizione consolidata di programmazione. In pratica, mentre gli ingegneri costruivano l’hardware, loro dovevano capire come utilizzarlo per risolvere problemi matematici complessi, inventando buona parte delle procedure necessarie.
Quando l’ENIAC venne presentato pubblicamente nel febbraio 1946, l’attenzione si concentrò soprattutto sulle dimensioni e sulle capacità del calcolatore e sui suoi progettisti, John Mauchly e J. Presper Eckert. Il contributo delle programmatrici ricevette invece una visibilità molto minore e soltanto molti decenni dopo il loro lavoro sarebbe stato adeguatamente riconosciuto nella ricostruzione storica delle origini dell’informatica elettronica.
La loro esperienza dimostra che, già negli anni Quaranta, programmare non significava semplicemente utilizzare una macchina, ma progettare la sequenza logica delle operazioni necessarie a risolvere un problema.
Il passo successivo sarebbe stato cercare un modo per rendere questo lavoro meno dipendente dalle caratteristiche fisiche dei singoli calcolatori.
Grace Hopper: quando programmare cominciò a diventare più semplice
Grace Brewster Murray Hopper nacque a New York il 9 dicembre 1906. Laureata in matematica e fisica al Vassar College, conseguì il dottorato in matematica presso l’Università di Yale nel 1934.
Durante la Seconda guerra mondiale entrò nella Marina militare americana e nel 1944 venne assegnata al progetto Harvard Mark I, uno dei primi grandi calcolatori elettromeccanici, sviluppato sotto la direzione di Howard Aiken. Hopper si occupò della programmazione della macchina, contribuendo anche alla redazione di un manuale che ne descriveva il funzionamento e le modalità di utilizzo.
Terminata la guerra, proseguì la propria attività nel settore informatico, entrando nel 1949 alla Eckert-Mauchly Computer Corporation, impegnata nello sviluppo dell’UNIVAC.
All’epoca programmare un calcolatore richiedeva ancora una conoscenza approfondita della sua architettura. Le istruzioni erano strettamente legate alla macchina e la preparazione dei programmi richiedeva molto tempo, anche perché buona parte delle operazioni doveva essere descritta attraverso codici specifici.
Hopper contribuì a cambiare questo approccio. Nel 1952 il suo gruppo sviluppò l’A-0, un sistema che permetteva di richiamare routine già predisposte attraverso codici simbolici, automatizzando parte del lavoro necessario alla preparazione dei programmi. Viene frequentemente considerato uno dei precursori dei moderni compilatori, pur essendo diverso da quelli attuali.
Negli anni successivi Hopper sostenne l’idea che i programmi potessero essere scritti utilizzando istruzioni più vicine al linguaggio umano, anziché dipendere esclusivamente dai codici specifici dei calcolatori. Questa impostazione contribuì allo sviluppo di FLOW-MATIC, un linguaggio orientato all’elaborazione dei dati aziendali che utilizzava istruzioni basate su parole inglesi.
L’esperienza di FLOW-MATIC influenzò successivamente la progettazione del COBOL (Common Business-Oriented Language), sviluppato nel 1959 da un comitato di esperti provenienti dall’industria e dalle istituzioni americane.
Hopper non fu quindi l’unica creatrice del COBOL, come talvolta viene raccontato, ma una delle figure che contribuirono in maniera significativa alla diffusione dell’idea di linguaggi di programmazione più accessibili e meno dipendenti dalle caratteristiche delle singole macchine.
Un curioso episodio del 1947 contribuì inoltre a rendere famoso il suo nome. Durante il funzionamento del calcolatore Harvard Mark II, alcuni tecnici scoprirono una falena incastrata in un relè e la conservarono nel registro della macchina. Hopper raccontò spesso l’episodio, contribuendo a renderlo celebre. Contrariamente a quanto viene talvolta affermato, però, non fu necessariamente lei a trovare l’insetto e il termine bug era già utilizzato da tempo per indicare un guasto tecnico.
La sua carriera proseguì anche nella Marina americana, dove raggiunse il grado di contrammiraglio. Morì il 1° gennaio 1992, lasciando un contributo fondamentale alla trasformazione della programmazione da attività strettamente legata all’hardware a disciplina nella quale il programmatore poteva concentrarsi maggiormente sulla logica del problema da risolvere.
Ma mentre i linguaggi di programmazione diventavano progressivamente più accessibili, altri settori dell’informatica dovevano affrontare problemi completamente differenti, nei quali un errore del software poteva avere conseguenze ben più gravi di un’elaborazione sbagliata.
Margaret Hamilton: il software che contribuì a portare l’uomo sulla Luna
Il 20 luglio 1969, durante la discesa del modulo lunare Eagle verso la superficie della Luna, il computer di bordo dell’Apollo 11 segnalò una serie di allarmi identificati dai codici 1201 e 1202.
A Houston, i controllori di volo dovettero decidere rapidamente se interrompere l’allunaggio oppure autorizzarne la prosecuzione. Il computer era sovraccarico di attività, ma continuava a eseguire le operazioni indispensabili per controllare la discesa.
Il sistema era stato progettato per assegnare priorità differenti alle operazioni, consentendo di recuperare da situazioni di sovraccarico senza compromettere le funzioni essenziali. Il software riavviava le attività necessarie, evitando di riprendere quelle meno importanti che avevano contribuito al problema.
Dietro questa capacità vi era il lavoro del gruppo di sviluppo software del MIT Instrumentation Laboratory, diretto da Margaret Hamilton.
Hamilton era nata il 17 agosto 1936 a Paoli, nell’Indiana. Dopo gli studi in matematica all’Earlham College, iniziò a lavorare nel 1959 al Massachusetts Institute of Technology, occupandosi di programmi per le previsioni meteorologiche. Successivamente partecipò al progetto SAGE (Semi-Automatic Ground Environment), il grande sistema americano di difesa aerea sviluppato durante la Guerra fredda, destinato a integrare informazioni radar e strumenti informatici per individuare possibili minacce aeree.
Fu proprio in questo ambiente che Hamilton iniziò a interessarsi in modo particolare all’affidabilità dei programmi e alla prevenzione degli errori. Nel 1965 entrò nel gruppo del MIT impegnato nello sviluppo del software di bordo per il programma Apollo della NASA e negli anni successivi assunse importanti responsabilità nella direzione delle attività di programmazione.
Per comprendere la complessità del lavoro bisogna considerare le caratteristiche dell’Apollo Guidance Computer, che disponeva di risorse estremamente limitate rispetto ai calcolatori moderni: circa 2.048 parole di memoria modificabile e 36.864 parole di memoria fissa, con parole di 15 bit utili più un bit di parità.
Con queste risorse il software doveva gestire navigazione, calcoli di traiettoria, controllo del volo e comunicazione con gli astronauti. Il problema non era soltanto far eseguire correttamente i calcoli, ma prevedere che cosa sarebbe accaduto in presenza di condizioni impreviste, errori operativi o sovraccarichi.
Hamilton e i suoi collaboratori contribuirono a sviluppare un’impostazione nella quale il software doveva essere in grado di riconoscere situazioni anomale e mantenere operative le funzioni più importanti. Durante la discesa dell’Apollo 11 questa architettura dimostrò la propria efficacia, perché gli allarmi erano legati a un sovraccarico provocato dalle attività associate al radar di rendezvous, ma il sistema riuscì a conservare le elaborazioni indispensabili per l’allunaggio.
Il risultato non fu merito di una singola persona. Il software Apollo nacque dal lavoro coordinato di numerosi progettisti, programmatori e tecnici, ma Hamilton ebbe un ruolo di primo piano nella sua organizzazione e nello sviluppo dei principi di affidabilità.
Contribuì anche a diffondere l’espressione software engineering, sostenendo che la progettazione dei programmi dovesse essere riconosciuta come una vera disciplina ingegneristica, con metodologie, verifiche e responsabilità paragonabili a quelle della progettazione hardware.
Terminata l’esperienza Apollo, proseguì le proprie ricerche nel settore dell’affidabilità e della prevenzione degli errori, fondando successivamente aziende dedicate allo sviluppo di tecnologie software. Nel 2003 ricevette un riconoscimento dalla NASA e nel 2016 il presidente Barack Obama le conferì la Presidential Medal of Freedom.
Margaret Hamilton è morta il 30 settembre 2026, all’età di 90 anni.
Il suo contributo alla storia dell’informatica non consiste soltanto nell’aver partecipato alla conquista della Luna, ma nell’aver contribuito a dimostrare che, nei sistemi complessi, il software deve essere progettato per affrontare anche ciò che non dovrebbe accadere.
Frances Allen: rendere i programmi più veloci senza riscriverli
Con la diffusione dei linguaggi di programmazione di alto livello emerse un nuovo problema, ovvero come trasformare le istruzioni scritte dai programmatori in codice macchina capace di sfruttare al meglio le risorse del computer.
Un programma poteva funzionare perfettamente, ma richiedere più tempo e memoria del necessario. Per comprendere il problema basta un esempio: se un programma deve eseguire cento volte lo stesso calcolo utilizzando dati che non cambiano, perché ripetere l’operazione cento volte anziché calcolare il risultato una sola volta e riutilizzarlo?
È uno dei principi dell’ottimizzazione del software, un campo nel quale Frances Elizabeth Allen svolse un ruolo fondamentale.
Nata nel 1932 nello Stato di New York, Allen entrò in IBM nel 1957, dopo aver studiato matematica. Nel corso della sua lunga carriera contribuì a sviluppare tecniche che permettevano ai compilatori di analizzare i programmi e produrre automaticamente codice più efficiente, senza modificarne i risultati.
Le sue ricerche contribuirono anche allo sviluppo dei sistemi capaci di eseguire più operazioni in parallelo, sfruttando le possibilità offerte dai calcolatori più avanzati.
Nel 1989 divenne la prima donna a ottenere il titolo di IBM Fellow, il massimo riconoscimento tecnico dell’azienda, mentre nel 2006 fu la prima donna a ricevere il prestigioso premio A. M. Turing, uno dei maggiori riconoscimenti mondiali nel campo dell’informatica. Morì nel 2020, all’età di 88 anni.
Il suo lavoro ha lasciato un’eredità che continua ancora oggi, ovvero permettere ai programmatori di concentrarsi su ciò che un programma deve fare, affidando al compilatore una parte importante del compito di farlo eseguire nel modo più efficiente possibile.
Un contributo che attraversa la storia dell’informatica
Da Ada Lovelace, che immaginò le possibilità della programmazione prima ancora che esistessero i computer elettronici, alle sei programmatrici dell’ENIAC, che dovettero inventare concretamente il modo di far funzionare una macchina completamente nuova, il contributo delle donne accompagna l’informatica fin dalle sue origini.
Grace Hopper contribuì a rendere la programmazione più accessibile attraverso lo sviluppo dei primi sistemi di traduzione dei linguaggi, mentre Margaret Hamilton e il suo gruppo dimostrarono quanto fosse importante progettare software affidabile, capace di affrontare situazioni impreviste. Frances Allen, invece, contribuì a rendere più efficiente l’esecuzione dei programmi, intervenendo su ciò che accade tra il codice scritto dal programmatore e quello effettivamente eseguito dalla macchina.
Sono storie differenti, accomunate dalla capacità di affrontare problemi per i quali spesso non esistevano ancora soluzioni consolidate. E se oggi scrivere un programma, eseguirlo e correggerlo ci sembra un’attività del tutto normale, è anche perché qualcuno, prima di noi, ha dovuto inventare gli strumenti e i metodi per renderla possibile.
Queste protagoniste non rappresentano un’eccezione da celebrare separatamente: il loro lavoro è parte integrante della storia dell’informatica, al pari di quello dei molti altri uomini e donne che hanno contribuito alla sua evoluzione.
Le Fonti
-
Computer History Museum – Ada Lovelace e la macchina analitica di Babbage.
-
University of Pennsylvania – Le sei programmatrici dell’ENIAC.
-
Computer History Museum – Storia del software e dei linguaggi di programmazione, con riferimenti ai lavori di Grace Hopper.
-
NASA, Apollo 11 Lunar Surface Journal – Gli allarmi 1201 e 1202 durante l’allunaggio.
-
Association for Computing Machinery (ACM) – Frances Allen e il premio Turing 2006.

