Benvenuti da Filippo

Grace Hopper

Grace Brewster Murray nacque a New York nel 1906 da genitori di lontane origini scozzesi e danesi. Primogenita (avrà una sorella, Mary, e poi un fratello, Roger), fin da piccola era una bambina curiosa, che smontava gli orologi per vedere com’erano fatti dentro. Il suo primo “paziente” non superò l’operazione: una volta smontato infatti, la piccola Grace non sapeva più rimetterlo insieme… O almeno quel tanto che bastasse a farlo ri-funzionare. Per rimediare all’errore e capire il problema, “esaminò” anche gli altri orologi della casa, con presumibile grande gioia dei genitori che quando se ne accorsero, le regalarono un orologio su cui sperimentare, purché si limitasse a quello. L’interesse per i meccanismi di funzionamento di nuovi gadget se la porterà dietro per tutta la vita.

Ebbe un’infanzia felice; le vacanze estive la famiglia le trascorreva quasi sempre sul lago Wentworth, nel New Hampshire, dove possedeva un cottage; lì si poteva nuotare, arrampicarsi sugli alberi e giocare nella natura. Imparò a cucire e a suonare il piano.

Sua madre da giovane aveva cercato di ottenere una formazione tecnico-matematica, con tutto l’appoggio possibile da parte di suo padre, ingengnere, ma in tempi di fine Ottocento il massimo della matematica considerata “confacente” ad una donna era quello che serviva per gestire l’economia domestica, quindi non le fu consentito di studiare, ad esempio, algebra e trigonometria. Quando fu il momento di mandare a scuola Grace, per fortuna, i tempi erano un po’ cambiati, e la sua famiglia fece in modo di garantire a tutti i figli, maschi o femmine che fossero, le stesse opportunità di studio.

Nonostante frequentasse scuole private femminili, che insistevano molto su un certo tipo di educazione “per signore”, suo padre la incentivò sempre a lasciarsi alle spalle gli stereotipi dei ruoli femminili. Praticava basket, hockey su prato e pallanuoto. Si iscrisse al Vassar College a diciassette anni, dove in seguito divenne professore di matematica, dopo aver conseguito il diploma (e poi laurea e Ph.D. a Yale).

Nel 1930 sposò Vincent Foster Hopper, professore alla New York University. Divorziarono dopo quindici anni; Grace non si risposò, ma mantenne il cognome del marito.

Il tenente Hopper

Quando i giapponesi attaccarono Pearl Harbor, causando l’entrata in guerra degli Stati Uniti, Grace volle a tutti i costi servire il suo paese nella Marina. Ma all’epoca era già troppo vecchia, 34 anni, e poi l’esercito non arruolava i professori di matematica, che si preferiva rimanessero al proprio posto. Per giunta era pure sotto-peso per la sua taglia (pesava solo 47 kg, quando il minimo per fare il militare era 54). Ma Grace insistette non poco, ed alla fine nel dicembre 1943 ottenne l’arruolamento nella riserva della Marina degli Stati Uniti, corpo che non avrebbe più abbandonato, servendolo per ben 43 anni.

Come sappiamo in quegli anni la Marina stava lavorando sui primi computer, ed infatti fu proprio così che Grace venne per la prima volta a contatto con uno di quei “mostri”, l’Harvard Mark I (e poi Mark II e Mark III) di Howard Aiken, di cui fu una dei primissimi programmatori – e debugger, ricordate l’episodio del baco raccontato nel capitolo scorso? Alla fine della guerra, la sua domanda di passare al servizio attivo fu rigettata: era troppo vecchia (aveva 38 anni).

Nel 1949 viene assunta dalla Eckert-Maulchy Computer Corporation (poi Remington Rand), azienda fondata dai progettisti dell’ENIAC, che lavorava al primo computer commerciale della storia, chiamato UNIVAC (UNIVersal Automated Computer). Finita la guerra, dunque, l’informatica si preparava a lasciare i laboratori militari per l’iniziativa privata, anche se i primi contratti furono spesso con enti governativi, amministrativi o dell’esercito. Nel 1951 l’UNIVAC era pronto, e cominciò ad essere installato per i primi, grandi clienti che potevano permetterselo (il prezzo oscillava tra i 1.200.000 e 1.500.000 dollari). La sua vita operativa fu di circa 4 anni, nel corso dei quali ne furono costruite e consegnate 46 unità. 5.200 valvole, 14,5 tonnellate di peso, 35,5 metri quadri di ingombro. La sua frequenza di clock era di 2,25 MHz, il che consentiva al suo Central Complex (memoria + CPU, un pratico blocco di quasi 27 metri cubi di volume) di svolgere un’addizione in 525 microsecondi ed una moltiplicazione in 2150.

La memoria, che poteva immagazzinare 1000 parole di 12 cifre, usava la tecnologia a linee di ritardo al mercurio, sulla quale vale la pena spendere qualche parola. E allora… Spendiamola subito (se invece non ve ne frega niente, potete tranquillamente saltare i prossimi quattro paragrafi).

Per quanto riguarda la Volatile Memory, cioè memoria non persistente (viene cancellata se la macchina viene spenta), le tecnologie degli albori dell’informatica erano sostanzialmente due: le linee di ritardo ed i tubi Williams.

Una memoria a linea di ritardo (delay line memory) è un sostanzialmente un lungo tubo riempito di un mezzo trasmissivo (il più popolare era il mercurio, anche se Turing sosteneva che anche il gin aveva le qualità per essere un valido sostituto) alle cui estremità erano posti due elettrodi. Un trasduttore convertiva gli impulsi elettrici da memorizzare in vibrazioni meccaniche che venivano propagate al mezzo trasmissivo nel tubo. Le onde si muovevano nel tubo fino a raggiungere l’altra estremità, dove venivano ritradotte in segnali elettrici che, amplificati, venivano rispediti al trasduttore tramite un circuito e quindi re-immesse nel tubo (operazione di refresh della memoria, senza la quale i dati memorizzati avrebbero avuto vita limitata al tempo impiegato dalle onde sonore a percorrere il tubo). Ad ogni istante, il tubo di mercurio poteva contenere centinaia o anche migliaia di impulsi diversi, in viaggio da un’estremità all’altra. Per leggere un bit bisognava però aspettare che l’impulso corrispondente arrivasse al fondo del tubo, il tempo di accesso era quindi variabile (nell’ordine di grandezza di 2 millisecondi) e non si trattava quindi di un vero accesso casuale ma piuttosto “ciclico” – io direi praticamente sequenziale.

I tubi Williams invece erano dei tubi catodici (tipo un vecchio televisore, ma a forma di tubo, stretto e lungo) sulla cui faccia un fascio di elettroni poteva illuminare un punto preciso scrivendo così lì un valore. Quindi sovrapponendo uno strato di fosfori, guardando il tubo avreste potuto vedere una matrice di punti illuminati o no, a seconda del valore dei bit memorizzati, cioè proprio una visualizzazione grafica della memoria. Per leggerlo si re-illuminava il punto, ma questa operazione aveva anche l’effetto collaterale di distruggere l’informazione lì memorizzata, che andava quindi immediatamente riscritta. Inoltre la persistenza dell’informazione era comunque temporanea ed andava rinfrescata periodicamente. Un singolo tubo di Williams poteva contenere tra i 512 bit ed i 2056 bit di informazione: immagazzinare la quantità di dati contenuta su una ormai quasi obsoleta memory card da 4GB con questa tecnica richiederebbe più di 6500 metri cubi, oltre il doppio del volume del padiglione dei cetacei dell’acquario di Genova; ovviamente, all’epoca le richieste di memoria erano gran lunga inferiori.

Entrambi questi sistemi avevano pregi e difetti, i tubi Williams erano più veloci e garantivano un vero accesso casuale ai dati, ma diventavano rapidamente inaffidabili. Le memorie a linea di ritardo richiedevano di essere tenute ad una temperatura di 40 gradi per funzionare al meglio, erano più lente, pesanti e, a meno di non usare davvero il gin, tossiche. Quali si diffusero di più? Ovviamente queste ultime.

Nonna COBOL

Sotto la EMCC/Rand, Grace lavorava al software dell’UNIVAC per la clientela business. Si accorse che i clienti dell’azienda non avevano proprio una grande familiarità con il linguaggio macchina e la notazione scientifica, così propose ai suoi capi di ideare un linguaggio più vicino alla lingua naturale (l’inglese) per programmare i computer. L’idea venne bollata come infattibile, ma Grace da buon informatica si impuntò a fare ciò che riteneva giusto ed interessante, fregandosene tranquillamente delle indicazioni che le venivano dall’alto (attitudine che si riscontra immutata ancora oggi nei programmatori di qualsiasi azienda del settore). Insieme al suo team nel 1955 iniziò a scrivere la specifica per il linguaggio di programmazione che avrebbe voluto, che chiamò FLOW-MATIC. Le operazioni venivano espresse per la prima volta con verbi, pronomi e punteggiatura che permettevano immediatamente di capire quel che si stava facendo, ad esempio “COMPARE PRODUCT-NO (A) WITH PRODUCT-NO (B); IF GREATER GO TO OPERATION 10;”. Il programma era diviso in sezioni, con uno spazio apposito per la descrizione dei dati (di input e di output) su cui esso operava. Tra il 1958 ed il 1959 venne completato un compilatore (1) per tradurre il linguaggio in istruzioni macchina, rendendo possibile eseguire i programmi per davvero sull’hardware dell’epoca.

La stessa idea di Grace piaceva a molti, perfino al Dipartimento della Difesa americano, che decise di promuovere un progetto per la creazione di un linguaggio di programmazione comune per le applicazioni commerciali. Il motivo era soprattutto economico: secondo un sondaggio del 1959, la realizzazione di una nuova applicazione informatica su uno dei super-computer dell’epoca costava in media 800.000 dollari in programmazione, mentre trasportarne una esistente su un altro hardware appena poco di meno, circa 600.000. Che tempi d’oro per i programmatori! (però attenzione, non c’era internet e comunque non i motori di ricerca… Né probabilmente debugger ed esecuzioni del programma step by step, mentre mi sa che c’era molto lavoro di simulazione da fare con carta e penna).

Il Dipartimento della Difesa riunì quindi un gruppo di 41 “massimi esperti” (ovviamente c’era anche Grace), esponendo le sue richieste: serviva un linguaggio “comune”, facilmente portabile sui diversi sistemi che all’epoca stavano spuntando come funghi, tutti diversi e assolutamente incompatibili, che potesse soddisfare le varie applicazioni del software dell’epoca, dal mondo bancario a quello assicurativo, dall’anagrafica alla gestione degli inventari. Doveva essere facile da usare, anche a scapito della potenza o della velocità, e fare uso dell’inglese il più possibile, essere aperto ai cambiamenti futuri e poco indipendente dalle tecnologie dell’epoca. Insomma volevano che più gente imparasse programmare, meglio una forza lavoro numerosa e un po’ più mediocre che una manciata di geni stra-pagati.

Come sempre quando c’è un gran lavoro da fare su un argomento aperto e lo si affida ad un board di tanti super-esperti provenienti da ambiti diversi, il risultato fu uno solo: una serie infinita di riunioni che si concludevano immancabilmente con grandi dichiarazioni di intenti, apertura di tavoli, creazione di comitati attuativi, insomma nulla di nulla che fosse anche un minimo concreto. Nel delirio di riunionocrazia, si arrivò a formare ben tre comitati che in pratica dovevano fare la stessa cosa: uno era incaricato di trovare una soluzione di breve periodo (gli smanettoni), uno di trovarne una di medio periodo (i loro capi, magari docenti universitari) ed uno di esplorare le soluzioni di lungo periodo, da scolpire nella pietra (questi dovevano essere i teorici più astratti e talebani, che non si trovavano mai d’accordo su niente). Non poteva mancare ovviamente un quarto comitato direttivo (questi erano quelli che non facevano nulla, aspettando che gli altri producessero qualcosa).

La palude era totale. Grace, che faceva parte del comitato di short-term, non poteva che fare presente che – ops – lei aveva già un linguaggio pronto, il FLOW-MATIC, pure col suo compilatore. Quindi perché non partire da quello? Quando quasi erano tutti convinti e si era lì lì per prendere una decisione, se ne arrivò l’IBM promuovendo il suo ultimo ritrovato, il COMTRAN: era fortissimo nelle espressioni algebriche. Grace fece presente che l’obiettivo iniziale era invece di massimizzare l’uso dell’inglese. Mentre ancora si dibatteva su come miscelare FLOW-MATIC e COMTRAN, arrivò, spinto dal comitato di mid-term, il linguaggio FACT, che a loro piaceva molto però non era portabile e soprattutto era il risultato del lavoro di un totale outsider, Roy Nutt. Risultato? Veti incrociati e bocce ferme.

Arduo era anche il compito di trovare un nome per la creatura: BUSY? INFOSYL? COCOSYL? Infine si decise per COBOL (Common Business-Oriented Language). Però sembrava questo uno dei pochi risultati, tant’è che qualcuno fece recapitare al presidente del comitato direttivo una lapide da 15 dollari con su inciso “COBOL” (all’incisore un po’ perplesso era stato detto che si trattava di… un nome polacco abbreviato). Forse fu quella sorpresa a convincerlo finalmente a cambiare rotta: prese sei persone di sua scelta, le mise intorno ad un tavolo e lasciò decidere a loro. Ad inizio gennaio 1960, le specifiche di quello che sarebbe stato chiamato COBOL 1960 erano pronte. La gran parte derivava direttamente dal FLOW-MATIC di Grace, da allora considerata se non proprio la madre, almeno la nonna del COBOL. Beh, l’ho raccontata come una telenovela ma alla fine tutto il processo di definizione del COBOL durò poco più di sette mesi, che rispetto a quel che ho visto nella mia carriera lavorativa è davvero poco: ricordo Progetti Europei molto più lunghi ed assolutamente inconcludenti.

L’ammiraglio Hopper

Nel 1966 si ritirò dalla Riserva della Marina per sopraggiunti limiti di età, come prevedevano le norme in vigore. Ma era già una leggenda. Nel 1967 fu richiamata in servizio attivo, promossa Comandante ed assegnata al “Comando per l’Automazione dei Dati Navali” con il compito di garantire una certa uniformità nello sviluppo del software dalla Marina. Contratto a progetto per sei mesi, che verrà poi prorogato indefinitamente. Nel 1986 è promossa Commodoro, nel 1985 Ammiraglio di Retroguardia. Nel 1986, si congeda definitivamente dalla Marina; a quasi 80 anni, è l’ufficiale in servizio più anziano e le viene organizzata una cerimonia con tutti gli onori a bordo della USS Constitution, non a caso la nave più anziana in servizio all’epoca. Ma di godersi la pensione Grace non ne voleva sapere, e la Digital Equipment Corporation (DEC) la assunse come consulente senior, posizione che occupò fino alla sua morte, avvenuta nel 1992.

Per la DEC era una sorta di ambasciatrice d’intenti, che girava per le varie sedi di R&D tenendo discorsi sulle origini dell’informatica, sulla sua straordinaria carriera ma anche su quello che i produttori di computer potevano fare per rendere la vita più semplice ai loro utenti. Ovviamente sempre nella sua alta uniforme, anche a ottant’anni suonati.

Era una persona che sapeva motivare e spronare. Troppe volte nella vita le avevano detto “sei troppo vecchia”, e lei aveva sempre saputo dimostrare il contrario. Diceva di se stessa, che oltre a quel compilatore del 1959, il suo più grande risultato era stato di insegnare ai giovani (dove la sua definizione di giovane era “chiunque abbia più o meno metà dei miei anni”). Se qualcuno le chiedeva “Si può fare?”, lei gli rispondeva “Provaci!”, e teneva sempre un occhio su chi era stato suo allievo.

Da un lato era tipicamente una donna della marina, credeva nell’autorità più che nella competenza tecnica come dote fondamentale per essere a capo di un gruppo (“You don’t manage people, you manage things. You lead people”), ma chi la conosceva bene sapeva che sotto sotto era piuttosto una pirata. D’altra parte una delle sue frasi preferite era “Se è una buona idea, vai e fallo. E’ molto più facile chiedere scusa che ottenere il permesso di farlo.”

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *