martedì 23 maggio 2017

I Premi Turing: John Warner Backus

Uno dei più celebri e utilizzati linguaggi di programmazione è stato (ed è) sicuramente il FORTRAN. Non poteva non aggiudicarsi il Premio Turing uno come John Warner Backus, creatore non solo del FORTRAN, ma anche, assieme al danese Peter Naur, di una fortunata notazione per definire le sintassi di linguaggi formali.
Nato a Filadelfia il 3 dicembre 1924, Backus non fu certo uno studente modello. Nel 1942 si iscrisse a chimica all'Università della Virginia, ma a causa della sua scarsa performance venne espulso dopo pochi mesi. Dopo un periodo di arruolamento nell'esercito, Backus frequentò alcuni corsi universitari di medicina, ma anche in questo caso non li portò a termine, trovando gli argomenti di studio poco stimolanti. Per di più, in questo periodo gli venne diagnosticato un tumore osseo al cranio, che fortunatamente gli fu rimosso senza gravi conseguenze.
Il giovane John si trasferì a New York, con idee molto confuse sul suo futuro. Cominciò a interessarsi di elettronica e, conseguentemente, di matematica. Si iscrisse quindi alla Columbia University e nel 1949 si laureò. L'anno dopo entrò alla IBM, dove il suo primo compito fu scrivere programmi per il Selective Sequence Electronic Calculator (SSEC).
Finalmente aveva trovato la sua strada.
Uno dei principali utilizzi del SSEC era il calcolo di tabelle di effemeridi astronomiche. Le tecniche di programmazione ideate da Backus in quegli anni sarebbero state impiegate anni dopo dalla NASA per il programma Apollo.
A quei tempi, scrivere programmi informatici significava inanellare, una dopo l'altra, migliaia di istruzioni a livello macchina. Un lavoro estremamente difficile, ad alto rischio di errori. Per facilitare il compito, nel 1953 Backus inventò Speedcoding, il primo linguaggio di alto livello della storia: le operazioni sui numeri a virgola mobile potevano essere descritte in una forma più semplice e veloce.

Un IBM 704 in uso alla NASA nel 1957
La IBM aveva lanciato nel 1954 il modello 704, il primo computer prodotto in serie dotato di una unità di calcolo in virgola mobile, e Backus si offrì di creare un linguaggio che avrebbe reso facile programmarlo.
Gli fu assegnato un team di dieci programmatori, che dopo un anno produsse una prima versione delle specifiche del linguaggio IBM Mathematical FORmula TRANslating System, ovvero del FORTRAN.
Il primo compilatore FORTRAN venne ufficialmente rilasciato nel 1957: consisteva di più di 25.000 righe di codice macchina, e venne incluso in tutti i modelli 704 venduti dalla IBM in quegli anni.
Col passare degli anni il FORTRAN venne progressivamente perfezionato e si guadagnò presto la posizione del linguaggio di programmazione più utilizzato per le applicazioni scientifiche.

Uno dei linguaggi che furono sviluppati sulla base del FORTRAN fu l'ALGOL: Backus prese parte alle riunioni di definizione, e fu nell'ambito di questo progetto che lo stesso Backus propose l'utilizzo della forma che prende il suo nome e quello del collega danese Peter Naur. La forma di Backus-Naur è una notazione formale per descrivere qualsiasi linguaggio di programmazione libero dal contesto, ed è particolarmente utile nello sviluppo di nuovi compilatori.

Fu grazie a questi straordinari risultati che John Backus fu insignito nel 1977 del Premio Turing.
Nella lezione che tenne in occasione della consegna del premio, Backus affermò:

I linguaggi di programmazione sembrano oggi in difficoltà. Ogni nuovo linguaggio incorpora, con qualche piccolo miglioramento, tutte le caratteristiche dei suoi predecessori e qualcuna di nuova. [...] Ogni nuovo linguaggio sostiene di avere nuove e affascinanti caratteristiche... ma la verità è che pochi linguaggi rendono la programmazione abbastanza economica e affidabile da giustificare il costo di produrre e imparare nuovi linguaggi.

Sulla base di questa sua affermazione, Backus indicò un nuovo paradigma di programmazione, denominato "function-level", che avrebbe dovuto sostituire il tradizionale approccio "value-level".
La programmazione "function-level" non va confusa con la programmazione funzionale (quella che si ritrova nel Lisp, ma anche in R, Wolfram Mathematica e Python). Nel paradigma tradizionale (value-level) si scrive un programma che viene applicato ai dati di input in modo da produrre una successione di valori intermedi che, alla fine, culmina nel valore finale desiderato. Nel paradigma function-level, invece, si parte da un programma iniziale che è sempre lo stesso per ogni computazione, e si applicano alcune operazioni "program-forming", o "funzionali", che producono una successione di programmi intermedi, fino a culminare nel programma finale desiderato.
Sempre nel 1977 Backus propose un esempio di linguaggio "function-level", chiamato FP, che rimane il prototipo dei linguaggi di questa categoria. Negli ultimi anni della sua carriera cercò di sviluppare un successore di FP, denominato FL. La fortuna di questo paradigma fu tuttavia molto modesta, e rimase confinata nell'ambito accademico-didattico.
Backus terminò la sua lunga carriera in IBM nel 1991, e morì nel marzo del 2007, trent'anni dopo aver ricevuto il premio Turing.

Nessun commento:

Posta un commento

La top ten dei miei video su YouTube (1° posto)

Rullo di tamburi! Eccoci finalmente in vetta! E, devo dire, la vetta della classifica dei miei video su YouTube appare per il momento davver...