◷ Storia dell'informatica

FORTRAN: John Backus e il primo linguaggio di alto livello di successo

Come nacque FORTRAN in IBM tra il 1954 e il 1957, perché il suo compilatore ottimizzante convinse gli scettici e cosa resta oggi di quel linguaggio.

Oggi diamo per scontato che un programmatore scriva formule e cicli in un linguaggio leggibile e che un compilatore li traduca in codice macchina efficiente. A metà degli anni Cinquanta non era affatto ovvio. Molti programmatori esperti erano convinti che nessun programma automatico potesse produrre codice veloce quanto quello scritto a mano. FORTRAN, sviluppato in IBM da un gruppo guidato da John Backus, dimostrò il contrario e cambiò il modo di lavorare di un'intera generazione di scienziati e ingegneri.

Il costo della programmazione

All'inizio degli anni Cinquanta i computer erano costosissimi e il tempo macchina era la risorsa da risparmiare. Ma Backus notò che il costo della programmazione e della correzione degli errori stava diventando paragonabile, se non superiore, a quello della macchina. Scrivere un calcolo scientifico in codice macchina o in linguaggio assembly richiedeva settimane e produceva programmi difficili da leggere e da modificare.

Alla fine del 1953 Backus propose ai suoi superiori in IBM di sviluppare un sistema che permettesse di scrivere i programmi in una notazione simile a quella matematica. Il progetto fu approvato e il gruppo iniziò a lavorare nel 1954. Il nome FORTRAN deriva da FORmula TRANslation, traduzione di formule.

La sfida dell'efficienza

Il gruppo sapeva che il linguaggio sarebbe stato accettato solo a una condizione: il codice generato doveva essere quasi altrettanto efficiente di quello scritto a mano da un esperto. Se un programma FORTRAN fosse stato due volte più lento, i clienti avrebbero continuato a programmare in assembly.

Per questo una parte enorme del lavoro fu dedicata all'ottimizzazione: il compilatore analizzava il programma per eliminare calcoli ridondanti, usare al meglio i registri e generare cicli efficienti, in particolare per l'accesso agli elementi degli array. Il primo compilatore FORTRAN, consegnato ai clienti dell'IBM 704 nella primavera del 1957, è considerato il primo compilatore ottimizzante della storia.

Il risultato superò le aspettative di molti. In parecchi casi il codice generato era paragonabile a quello scritto a mano, e il tempo per scrivere un programma si riduceva drasticamente.

Com'era un programma FORTRAN

I primi programmi FORTRAN si scrivevano su schede perforate, con un formato rigido: le colonne da 1 a 5 per le etichette numeriche, la colonna 6 per indicare la continuazione di una riga, il codice dalla colonna 7 alla 72. Ecco un esempio nello stile delle versioni classiche, che calcola la somma dei quadrati dei primi dieci numeri:

      ISOMMA = 0
      DO 10 I = 1, 10
      ISOMMA = ISOMMA + I*I
   10 CONTINUE
      PRINT *, ISOMMA
      END

Alcune caratteristiche saltano all'occhio:

  • il ciclo DO indica l'etichetta dell'istruzione che chiude il ciclo;
  • le variabili non venivano dichiarate: per convenzione, quelle con iniziale tra I e N erano intere, le altre reali;
  • tutto era in maiuscolo, perché le perforatrici dell'epoca non avevano le minuscole.

La convenzione sulle iniziali delle variabili ha lasciato un'abitudine che sopravvive ancora: usare i, j, k come nomi dei contatori dei cicli.

L'evoluzione del linguaggio

FORTRAN si diffuse rapidamente nei centri di calcolo scientifici e fu presto portato su computer di altri produttori. Le versioni principali raccontano l'evoluzione della programmazione:

Versione Novità principali
FORTRAN (1957) Espressioni, cicli DO, array
FORTRAN II (1958) Sottoprogrammi compilati separatamente
FORTRAN 66 Primo linguaggio di programmazione con uno standard ufficiale americano
FORTRAN 77 Costrutto IF-THEN-ELSE strutturato, stringhe di caratteri
Fortran 90 Formato libero, moduli, operazioni su interi array

Con Fortran 90 il nome cominciò a essere scritto con la sola iniziale maiuscola, e il linguaggio adottò costrutti moderni. Le revisioni successive hanno aggiunto la programmazione orientata agli oggetti e il supporto al calcolo parallelo.

Perché è ancora usato

Fortran è ancora oggi usato nel calcolo scientifico ad alte prestazioni: modelli climatici, fluidodinamica, fisica computazionale. Le ragioni sono concrete. Esistono enormi librerie numeriche collaudate per decenni, e il linguaggio è progettato in modo da permettere ai compilatori ottimizzazioni aggressive sulle operazioni con array. Molte librerie di algebra lineare usate indirettamente anche da linguaggi moderni hanno origine nel mondo Fortran.

John Backus dopo FORTRAN

Backus diede un altro contributo fondamentale partecipando alla definizione di ALGOL. Per descrivere la sintassi di quel linguaggio propose una notazione formale, poi perfezionata da Peter Naur e nota come forma di Backus-Naur (BNF). Ancora oggi le grammatiche dei linguaggi di programmazione e di molti formati di dati si descrivono con varianti di questa notazione.

Nel 1977 Backus ricevette il premio Turing. Nella conferenza che accompagnò il premio criticò, in modo sorprendente, proprio lo stile di programmazione imperativo che FORTRAN aveva reso popolare, proponendo un approccio funzionale.

La lezione di FORTRAN

La storia di FORTRAN contiene un principio che vale ancora: un'astrazione viene adottata solo se il suo costo è accettabile. I linguaggi di alto livello si sono imposti non perché fossero più eleganti, ma perché il compilatore di Backus dimostrò che la comodità non doveva per forza essere pagata con la lentezza.

In sintesi

  • FORTRAN fu proposto da John Backus in IBM alla fine del 1953 e il primo compilatore fu consegnato per l'IBM 704 nel 1957.
  • Il suo compilatore ottimizzante dimostrò che il codice generato automaticamente poteva competere con quello scritto a mano.
  • FORTRAN 66 fu il primo linguaggio con uno standard ufficiale americano; Fortran 90 introdusse il formato libero e i moduli.
  • Backus contribuì anche alla notazione BNF e ricevette il premio Turing nel 1977.
MM
Marco Marzaduri

Marco Marzaduri si occupa di cybersecurity, informatica forense e sviluppo web. Laureato in informatica e in psicologia, unisce l'analisi tecnica alla comprensione del fattore umano.

Leggi anche