All’inizio degli anni Cinquanta, la maggior parte degli scienziati programmava in linguaggio macchina o assembly. Una formula matematica doveva essere scomposta in istruzioni specifiche per il computer, gestendo esplicitamente registri e indirizzi. Una volta terminato il programma, il calcolo era rapido, ma la preparazione poteva richiedere settimane.
Il team IBM guidato da John Backus propose una svolta: scrivere le formule in una notazione più vicina alla matematica e lasciare che fosse un programma a tradurle. FORTRAN, abbreviazione di Formula Translation, ebbe successo solo perché il suo compilatore produceva codice abbastanza efficiente da competere con quello degli specialisti dell’assembly.
Il costo nascosto dei primi computer
Il tempo macchina era costoso, ma lo era anche quello dei programmatori. Con l’aumento della velocità dei computer, la preparazione dei programmi rappresentava una quota crescente del costo di un calcolo.
Backus lavorò inizialmente a Speedcoding per l’IBM 701. Il sistema offriva operazioni pratiche, tra cui l’aritmetica in virgola mobile, ma interpretava le istruzioni rallentandone fortemente l’esecuzione. Dimostrò l’utilità di una notazione più accessibile, confermando però che gli scienziati non avrebbero accettato una perdita significativa di prestazioni.
Nel 1953 Backus propose un sistema di traduzione per l’IBM 704. La macchina disponeva di aritmetica in virgola mobile hardware e registri indice, ma sfruttarli in modo efficiente richiedeva un’organizzazione complessa del codice.
Un team, un linguaggio e un compilatore
IBM riunì un gruppo con competenze complementari. Harlan Herrick, Irving Ziller, Peter Sheridan, Roy Nutt, Robert Nelson, Lois Haibt e altri contribuirono alla sintassi, all’analisi, all’ottimizzazione e ai test.
Il linguaggio offriva espressioni aritmetiche, cicli e salti adatti ai calcoli numerici. La sua forma iniziale rifletteva ancora l’hardware e le schede perforate: colonne riservate, etichette numeriche e l’istruzione GO TO.
L’innovazione decisiva era il compilatore. Analizzava le dipendenze tra i calcoli, organizzava l’uso dei registri e cercava di ridurre le operazioni ripetute. L’obiettivo non era soltanto produrre un programma corretto, ma un programma abbastanza veloce da non far rimpiangere l’assembly.
Consegnato nel 1957, il compilatore superò le aspettative di molti utenti. Il tempo di programmazione diminuì drasticamente e FORTRAN si diffuse insieme ai computer IBM.
Perché l’ottimizzazione era indispensabile per l’adozione
Un linguaggio di alto livello crea distanza tra ciò che scrive il programmatore e ciò che esegue il processore. Oggi questa traduzione appare normale; nel 1957 affidare a un programma le decisioni di ottimizzazione era una scommessa.
FORTRAN dimostrò che un compilatore poteva svolgere parte del lavoro meccanico meglio e con maggiore regolarità di una persona, soprattutto nei programmi di grandi dimensioni. Il successo cambiò l’economia del software: il computer non serviva più soltanto a eseguire il calcolo finale, ma aiutava anche a costruire il programma.
La produttività non eliminava la necessità di comprendere i metodi numerici. Una formula instabile o un modello errato restano tali indipendentemente dalla qualità del compilatore. FORTRAN separava meglio l’espressione scientifica dai dettagli del processore, senza sostituire la competenza nel dominio.
Dai dialetti alla standardizzazione
Il successo generò rapidamente nuove versioni. FORTRAN II aggiunse, tra l’altro, la compilazione separata dei sottoprogrammi. FORTRAN IV rese il linguaggio più coerente e si diffuse ampiamente, mentre i produttori introducevano proprie estensioni.
La frammentazione minacciava la portabilità. Nel 1966 apparve uno standard statunitense; revisioni successive organizzarono l’evoluzione del linguaggio. FORTRAN 77 consolidò numerose pratiche, mentre Fortran 90 introdusse formato libero, array più espressivi, moduli e strumenti di programmazione strutturata.
Il passaggio ufficiale dalla grafia FORTRAN a Fortran accompagnò questa modernizzazione senza creare un nuovo linguaggio. Le versioni successive aggiunsero programmazione a oggetti, concorrenza e una migliore interoperabilità con C.
La compatibilità rimase un obiettivo importante. Modelli scientifici convalidati per decenni rappresentano conoscenza costosa da ricostruire. Farli evolvere gradualmente è spesso più sicuro che riscriverli completamente.
Un linguaggio pensato per gli array
Il calcolo scientifico manipola spesso vettori, matrici e griglie. Fortran permette di esprimere direttamente operazioni su interi array, fornendo al compilatore informazioni utili per vettorizzare o parallelizzare il calcolo.
Il suo modello facilita anche alcune analisi degli alias: il compilatore può stabilire più spesso se due nomi indicano la stessa area di memoria. Questa conoscenza consente di riordinare le operazioni senza modificarne il risultato.
Queste proprietà spiegano perché Fortran resti competitivo nella simulazione climatica, nella fluidodinamica, nella fisica e in altri settori del calcolo ad alte prestazioni. La sua longevità non deriva quindi soltanto dal codice storico, ma anche da una specializzazione continuamente mantenuta.
FORTRAN, COBOL e l’allargamento della programmazione
FORTRAN e il lavoro di Grace Hopper affrontavano lo stesso ostacolo: il codice macchina limitava il numero di persone capaci di trasformare un problema in software.
I loro ambiti iniziali erano diversi. FORTRAN privilegiava formule e prestazioni numeriche. FLOW-MATIC e poi COBOL privilegiavano file, record e il vocabolario delle organizzazioni. Insieme mostrarono che un linguaggio poteva essere adattato a una categoria di problemi invece che a una singola macchina.
ALGOL, Lisp, Pascal e C continuarono a separare intenzione e hardware secondo priorità differenti: descrizione degli algoritmi, calcolo simbolico, insegnamento strutturato o programmazione di sistema.
Perché Fortran conta ancora
Fortran ricorda che un linguaggio non deve necessariamente abbandonare il proprio passato per restare moderno. Può conservare programmi collaudati aggiungendo astrazioni, standard e strumenti adatti alle nuove macchine.
Il suo contributo storico più ampio è aver reso credibile la compilazione ottimizzante. Oggi gli sviluppatori usano linguaggi molto più astratti perché i compilatori hanno imparato a trasformare le loro intenzioni in codice efficiente. FORTRAN fornì una delle prime dimostrazioni decisive di questa possibilità.
Cronologia
- 1953: John Backus propone a IBM un sistema di traduzione delle formule.
- 1954: viene formato il team FORTRAN per l’IBM 704.
- 1957: viene consegnato il primo compilatore FORTRAN.
- 1958: FORTRAN II facilita l’uso di sottoprogrammi compilati separatamente.
- 1962: FORTRAN IV razionalizza il linguaggio.
- 1966: viene pubblicato il primo standard statunitense.
- 1978: FORTRAN 77 viene standardizzato.
- 1991: viene pubblicato Fortran 90 e adottata la grafia modernizzata.
- 2003: Fortran 2003 aggiunge, tra l’altro, meccanismi orientati agli oggetti.
- Oggi: Fortran resta impiegato nel calcolo scientifico e ad alte prestazioni.
Domande frequenti
John Backus ha creato FORTRAN da solo?
No. Propose il progetto e guidò un team IBM composto da numerosi specialisti. Il linguaggio e soprattutto il suo compilatore furono realizzazioni collettive.
Perché il primo compilatore era eccezionale?
Doveva ottimizzare abbastanza bene da convincere scienziati abituati a controllare ogni istruzione. Le sue tecniche resero credibili i linguaggi di alto livello per il calcolo ad alte prestazioni.
FORTRAN e Fortran indicano lo stesso linguaggio?
Sì. Fortran è diventata la grafia ufficiale delle versioni moderne. Segnala un’evoluzione importante senza interrompere la continuità storica.
Perché si conserva ancora vecchio codice Fortran?
Spesso contiene modelli numerici testati e convalidati per decenni. Riscriverli può introdurre errori scientifici difficili da individuare.
Fortran è limitato ai vecchi computer?
No. I compilatori moderni puntano ai processori attuali e ai supercomputer; il linguaggio include moduli, array espressivi, programmazione a oggetti e strumenti per la concorrenza.
Qual è la principale differenza tra FORTRAN e COBOL?
FORTRAN nacque per il calcolo scientifico; COBOL per l’elaborazione dei dati aziendali. Entrambi cercavano di rendere i programmi meno dipendenti dal codice macchina.