Vai al contenuto principale
StoriaStoria dell’informaticaPrincipiante

FORTRAN: dimostrare che un compilatore può competere con l'assembly

Come il team di John Backus creò FORTRAN, convinse gli scienziati a usare un linguaggio di alto livello e fondò un'eredità duratura del calcolo numerico.

Pubblicato 3 agosto 2026Lettura : 6 minDi Yann Bastien
Illustrazione di formule scientifiche tradotte da un compilatore FORTRAN
Mostra indice
  1. Il costo nascosto dei primi computer
  2. Un team, un linguaggio e un compilatore
  3. Perché l’ottimizzazione era indispensabile per l’adozione
  4. Dai dialetti alla standardizzazione
  5. Un linguaggio pensato per gli array
  6. FORTRAN, COBOL e l’allargamento della programmazione
  7. Perché Fortran conta ancora
  8. Cronologia
  9. Domande frequenti
  10. John Backus ha creato FORTRAN da solo?
  11. Perché il primo compilatore era eccezionale?
  12. FORTRAN e Fortran indicano lo stesso linguaggio?
  13. Perché si conserva ancora vecchio codice Fortran?
  14. Fortran è limitato ai vecchi computer?
  15. Qual è la principale differenza tra FORTRAN e COBOL?

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.

Questo articolo ti è stato utile?

Fonti e riferimenti

  1. 1.IBM --- The FORTRAN Automatic Coding System
  2. 2.John Backus et al. --- The FORTRAN Automatic Coding System
  3. 3.Computer History Museum --- John Backus
  4. 4.Fortran-lang --- Fortran history

Raccolta

Linguaggi di programmazione

4 / 26

  1. 01Grace Hopper: dai primi compilatori a COBOL
  2. 02John Backus: FORTRAN, la notazione BNF e il rifiuto del codice macchina
  3. 03Dennis Ritchie: il linguaggio C al cuore di Unix
  4. 04FORTRAN: dimostrare che un compilatore può competere con l'assembly
  5. 05Il linguaggio C: rendere portabili i sistemi senza nascondere la macchina
  6. 06Niklaus Wirth: da Pascal a Oberon, progettare con la semplicità
  7. 07Bjarne Stroustrup: progettare C++ senza rinunciare alle prestazioni
  8. 08Pascal: imparare a programmare rendendo visibile la struttura
  9. 09C++: da C with Classes al C++ moderno
  10. 10Programmazione orientata agli oggetti: oggetti, messaggi e astrazioni riutilizzabili
  11. 11Guido van Rossum: creare Python per rendere il codice leggibile
  12. 12Brendan Eich: JavaScript, dal prototipo Netscape allo standard del Web
  13. 13James Gosling: l'ingegnere all'origine di Java
  14. 14Python: leggibilità, batterie incluse e un ecosistema globale
  15. 15Java: scrivere una volta, eseguire ovunque
  16. 16JavaScript: il linguaggio che ha reso interattivo il Web
  17. 17Ken Thompson: da Unix a Go, la semplicità come metodo
  18. 18John McCarthy: Lisp e l'idea di programmare con i simboli
  19. 19Alan Kay: Smalltalk e il computer come medium personale
  20. 20Barbara Liskov: l'astrazione che ha reso modulare il software
  21. 21Robin Milner: ML, dimostrazione assistita e linguaggi dell'interazione
  22. 22Brian Kernighan: AWK, Unix e l'arte di spiegare il codice
  23. 23Anders Hejlsberg: da Turbo Pascal a C# e TypeScript
  24. 24Larry Wall: Perl, il linguaggio che ha collegato gli strumenti di Internet
  25. 25Yukihiro Matsumoto: Ruby e la felicità del programmatore
  26. 26Rasmus Lerdorf: PHP e la democratizzazione del Web dinamico
BiografiaStoria dell’informaticaPrincipiante

Grace Hopper: dai primi compilatori a COBOL

Come Grace Hopper contribuì a trasformare la programmazione facendo tradurre istruzioni più leggibili nel linguaggio delle macchine.

3 agosto 20265 min