programmazione,

70 anni di Fortran (più o meno)

Sabino Maggi Sabino Maggi Segui 6-Oct-2024 · 6 minuti di lettura
Condividi

Pochi giorni fa, il 20 settembre per essere precisi, il Fortran ha compiuto 70 anni.1 La data scelta per il compleanno è un po’ anomala, per i software di solito si celebra la data in cui vengono presentati al pubblico,2 mentre per il Fortran è stato scelto il giorno in cui gli sviluppatori dell’IBM hanno eseguito il primo programma scritto in questo linguaggio, ben tre anni prima della presentazione ufficiale.

Ed è una decisione pienamente giustificata, poiché il 20 settembre del 1954 accade qualcosa che avrebbe fatto la storia: per la prima volta un computer esegue un programma scritto in un linguaggio ad alto livello, molto più vicino al modo di pensare di un uomo, invece che in un linguaggio comprensibile solo alle macchine come l’assembler.

Un evento cruciale, che avrebbe reso la programmazione accessibile ad un numero sempre maggiore di persone, aprendo la strada alla diffusione capillare dei computer e innescando una trasformazione radicale della società e della nostra vita quotidiana. Non a caso David Padua3 sostiene che

è quasi universalmente riconosciuto che l’evento più importante del XX secolo nel campo dei compilatori – e in quello dell’informatica [in generale, ndt] – è stato lo sviluppo del primo compilatore Fortran tra il 1954 e il 1957. Dimostrando che è possibile generare automaticamente codice macchina di qualità a partire da descrizioni ad alto livello, il team IBM guidato da John Backus aprì le porte all’era dell’informazione.


Per quanto abbia cercato non sono riuscito a trovare il codice di questo primo programma in Fortran, ma non dovrebbe essere troppo diverso da questo,

IBM 704 Fortran Programmer’s Reference Manual, 1956.

che cerca il numero più grande in una lista di numeri fornita dall’utente. Il programma è molto semplice e può analizzare non più di 999 numeri ma, quando l’unica alternativa era scorrere a mano colonne e colonne di numeri, doveva essere un bel passo in avanti.

Da notare la presenza dell’istruzione FREQUENCY, rimossa nelle versioni successive e più efficienti del compilatore, con la quale il programmatore poteva stimare il numero di volte in cui ciascun ciclo DO o test logico IF poteva essere eseguito, dando modo al compilatore di ottimizzare il codice macchina generato. L’ottimizzazione si basava sul nuovo (per l’epoca) metodo Monte Carlo, che non è per niente difficile da padroneggiare, ma che deve essere piuttosto difficile da programmare in un linguaggio a basso livello come l’assembler. Tanto di cappello per gli sviluppatori del primo Fortran!


La questione dell’ottimizzazione del codice generato dal compilatore era essenziale per il successo del nuovo compilatore Fortran. I computer di allora erano estremamente lenti e costosi, e i programmi dovevano essere molto efficienti per riuscire ad eseguire le operazioni richieste senza inutili sprechi di risorse. Il team IBM era consapevole che

se il Fortran, nei suoi primi mesi di vita, fosse in grado di tradurre qualsiasi programma sorgente scientifico ragionevole in un programma oggetto con una velocità pari alla metà di quella della sua controparte codificata a mano, l’accettazione del nostro sistema sarebbe in serio pericolo.

E ci sono riusciti. Un programma scritto in Fortran e tradotto in codice macchina attraverso il primo compilatore risultava effettivamente più lento di uno equivalente scritto in assembler, ma molto meno di quanto avessero temuto inizialmente gli sviluppatori.

Il grande vantaggio di poter programmare utilizzando un linguaggio ad alto livello, con una sintassi molto vicina all’inglese, compensava ampiamente questa perdita di prestazioni. Non a caso, in pochi anni l’uso dei linguaggi ad alto livello si diffuse così tanto da mandare l’assembler nel dimenticatoio.


Notarelle finali.

Il manuale della prima versione del Fortran era davvero smilzo, appena 54 pagine. Niente a che vedere con i giganteschi tomi odierni, che riempiono 4-500 pagine per insegnare i rudimenti di un linguaggio di programmazione o di uno strumento software.

Negli anni ‘80 il Fortran era così popolare in ambito scientifico che poteva essere usato non solo sui grossi mainframe o sulle workstation e i minicomputer tanto diffusi in ambito universitario, ma perfino sui microcomputer economici come il Commodore 64 e lo Spectrum 48K, oppure (c’è bisogno di dirlo?) sul più potente Apple II. Certo, su queste macchinette non si poteva pensare di far girare una simulazione meteorologica o di generare un frattale in tempo reale, ma per imparare nella comodità di casa propria potevano essere più che sufficienti.

È curioso che i tre principali linguaggi di programmazione sviluppati negli anni ‘50, Fortran (1954), LISP (1958) e COBOL (1959) siano ancora in uso oggi, dividendosi in modo netto i campi di applicazione: il Fortran per il calcolo scientifico ed ingegneristico, il COBOL in campo finanziario e bancario. E il LISP? Beh, il LISP sta ben nascosto in tante cose odierne, fra cui emacs e Julia, e comunque rimane sempre il più affascinante dei tre.

Bibliografia

Qualche link per chi volesse approfondire:

  1. Lo so, ormai non sono più tanto pochi, ma negli ultimi tempi sono stato assorbito dal trasloco imprevisto del nostro istituto a causa di urgenti lavori di ristrutturazione. 

  2. Anche in modo informale, come è successo per Linux, presentato per la prima volta su un newsgroup dedicato ad un sistema operativo ormai dimenticato. 

  3. David Padua è professore emerito presso il Dipartimento di Informatica dell’università dell’Illinois a Urbana-Champaign. 

Sabino Maggi
Pubblicato da Sabino Maggi Segui
Commenti

Aggiungi un commento