Negli anni Cinquanta programmare un computer significava scrivere lunghe sequenze di codici numerici, ciascuno corrispondente a un'istruzione della macchina. Grace Hopper fu tra le prime persone a sostenere con convinzione un'idea che allora sembrava quasi provocatoria: i computer dovevano adattarsi alle persone, non il contrario. Il suo lavoro sui compilatori e sui linguaggi orientati all'inglese portò al COBOL, uno dei linguaggi più longevi della storia.
Dalla matematica alla Marina
Grace Murray Hopper conseguì il dottorato in matematica a Yale nel 1934 e insegnò per alcuni anni al Vassar College. Nel 1943, durante la guerra, entrò nella riserva della Marina statunitense. Fu assegnata a Harvard, al gruppo di Howard Aiken, che gestiva il Mark I, un grande calcolatore elettromeccanico costruito con IBM.
Hopper fu tra i primi programmatori del Mark I. Scrisse tra l'altro gran parte del manuale della macchina, un documento che spiegava come preparare i programmi su nastro perforato.
La falena del 9 settembre 1947
Nel 1947, mentre il gruppo lavorava sul successore, il Mark II, gli operatori trovarono una falena incastrata tra i contatti di un relè, che causava un malfunzionamento. La falena fu rimossa e attaccata con del nastro adesivo sul registro di lavoro, accanto a una nota che diceva, in inglese, «primo caso reale di bug trovato». Quella pagina del registro è oggi conservata allo Smithsonian.
Spesso si dice che in quell'occasione nacque il termine «bug». Non è esatto: la parola era già usata da tempo dagli ingegneri, anche da Thomas Edison, per indicare un difetto in un apparecchio. La battuta del registro funziona proprio perché il termine era già noto. Hopper raccontò spesso questo episodio, contribuendo a renderlo celebre.
L'idea del compilatore
Dopo la guerra Hopper si unì alla Eckert–Mauchly Computer Corporation, l'azienda fondata dai costruttori di ENIAC, che stava sviluppando UNIVAC. Qui si scontrò con un problema pratico: molti programmi contenevano le stesse sequenze di istruzioni, che venivano copiate a mano con il rischio di introdurre errori.
L'A-0
Nel 1952 Hopper sviluppò l'A-0, un sistema che permetteva di indicare quali sottoprogrammi usare, prendendoli da una libreria su nastro e assemblandoli automaticamente in un programma completo. Lo chiamò «compilatore», nel senso letterale di chi raccoglie e mette insieme materiale. Era più vicino a ciò che oggi chiameremmo un linker o un caricatore che a un compilatore moderno, ma l'idea di fondo era la stessa: lasciare che fosse il computer a scrivere il codice macchina.
All'inizio l'idea fu accolta con scetticismo. Hopper raccontò che le dicevano che i computer sapevano fare solo aritmetica e non potevano scrivere programmi.
FLOW-MATIC: programmare in inglese
Hopper fece un passo ulteriore. Pensava che i programmi per l'amministrazione aziendale, che manipolano registrazioni di clienti, fatture e magazzino, dovessero essere scritti in un linguaggio vicino all'inglese, comprensibile anche ai responsabili d'ufficio. Il suo gruppo sviluppò il FLOW-MATIC, uno dei primi linguaggi con istruzioni formate da parole inglesi.
Un'istruzione di quel tipo somigliava a una frase: confronta il codice del prodotto con quello del file principale, e se sono uguali vai a un certo passo.
COBOL
Nel 1959 il Dipartimento della Difesa statunitense promosse un comitato di rappresentanti di aziende e enti pubblici, noto come CODASYL, per definire un linguaggio comune per le applicazioni commerciali, che potesse funzionare su computer di produttori diversi. Il risultato fu il COBOL, Common Business-Oriented Language.
Hopper fu consulente tecnico del comitato e il FLOW-MATIC fu una delle principali influenze sul nuovo linguaggio. Per questo viene spesso chiamata la «nonna del COBOL», anche se il linguaggio fu il prodotto di un lavoro collettivo.
Com'è fatto un programma COBOL
Il COBOL privilegia la leggibilità rispetto alla brevità:
IF SALDO-CLIENTE IS GREATER THAN LIMITE-CREDITO
MOVE "BLOCCATO" TO STATO-CLIENTE
ELSE
ADD IMPORTO-ORDINE TO SALDO-CLIENTE
END-IF.
È prolisso, ma un revisore contabile può leggerlo e capirne la logica senza conoscere la programmazione. È esattamente l'obiettivo che Hopper si era posta.
Una longevità sorprendente
Il COBOL è ancora in uso in molti sistemi bancari, assicurativi e della pubblica amministrazione. Sono sistemi che funzionano da decenni, gestiscono grandi volumi di transazioni e che sarebbe costoso e rischioso riscrivere. Ancora oggi chi si occupa di questi ambienti deve saperlo leggere.
Le altre eredità
Hopper insistette per tutta la carriera sulla standardizzazione dei linguaggi e sulla verifica dei compilatori, temi allora trascurati. Era famosa per un esempio didattico: distribuiva spezzoni di filo lunghi circa trenta centimetri, la distanza che la luce percorre in un nanosecondo, per far capire perché i segnali non possono viaggiare istantaneamente e perché le dimensioni dei computer contano.
Si ritirò dalla Marina nel 1986 con il grado di contrammiraglio. Morì nel 1992. Nel 2016 le fu conferita alla memoria la Presidential Medal of Freedom.
In sintesi
- Grace Hopper fu tra i primi programmatori del Mark I di Harvard e rese celebre l'episodio della falena nel Mark II del 1947, anche se il termine «bug» era già in uso.
- Nel 1952 sviluppò l'A-0, uno dei primi sistemi che generavano automaticamente codice macchina.
- Con FLOW-MATIC introdusse un linguaggio basato su parole inglesi, che influenzò il COBOL definito nel 1959.
- Il COBOL è ancora in uso in molti sistemi bancari e amministrativi.