31/07/2025
Vecchi tempi..
Breve storia del linguaggio di programmazione Fortran
Fortran (o FORTRAN) è l'acronimo di FORmula TRANslation che significa traduttore di formule ed è uno dei primi linguaggi di programmazione.
Alla fine del 1953, John W. Backus presentò una proposta ai suoi superiori presso IBM per sviluppare un'alternativa più efficiente al linguaggio assembly per la programmazione del loro computer mainframe IBM 704. Lo storico gruppo FORTRAN di Backus era composto dai programmatori Richard Goldberg, Sheldon F. Best, Harlan Herrick, Peter Sheridan, Roy Nutt, Robert Nelson, Irving Ziller, Lois Haibt e David Sayre.
Il primo manuale di riferimento per i programmatori FORTRAN I, The FORTRAN automatic coding system for the IBM 704 EPDM, scritto dallo stesso Backus, è del 1956 mentre il compilatore sopracitato fu pubblicato nel 1957.
Grazie agli innumerevoli programmi applicativi sviluppati nel corso degli anni ed alle immense librerie di funzioni richiamabili anche da programmi scritti con altri linguaggi, Fortran è tuttora un linguaggio usato.
Esistono delle sue varianti per supportare il calcolo parallelo, utili alla simulazione di fluidi, interazioni fra particelle, previsioni meteorologiche, ecc... Progettato originariamente come linguaggio procedurale, alcune sue versioni più recenti consentono di usare costrutti derivati della programmazione orientata agli oggetti.
Veniva usato su larga scala soprattutto per scrivere programmi che eseguivano molti calcoli matematici e questo incoraggiò i progettisti a creare compilatori che generavano codice molto velocemente. L'inclusione di un tipo apposito per la rappresentazione dei numeri complessi, rese Fortran il linguaggio de facto della comunità scientifica.
Al giorno d'oggi vengono ancora progettati nuovi compilatori Fortran con prestazioni sempre più alte. Non si deve dimenticare che molti progressi nella teoria e nella progettazione di traduttori/compilatori, sono proprio derivati dalla necessità di ottenere compiler Fortran in grado di generare codice migliore.
Diverse sono le versioni nate: FORTRAN I nel 1957, FORTRAN II nel 1958, FORTRAN III nel 1958, usato da una ventina di clienti di IBM ma mai pubblicato come prodotto commerciale per la sua mancanza di portabilità, FORTRAN IV nel 1961, ad oggi la versione più conosciuta e diffusa, FORTRAN 66 nel 1966, FORTRAN 77 nel 1977, Fortran 90 nel 1990, Fortran 95 nel 1995, Fortran 2003 nel 2003 e Fortran 2008 nel 2008 (praticamente la stessa creatività che hanno quelli di EA sports nello scegliere i nomi per FIFA).
FORTRAN II introdusse la possibilità di poter avere compilazioni separate, FORTRAN III la possibilità di usare espressioni booleane (o logiche) e di inserire codice assembly in line (cioè di poter mescolare istruzioni Fortran e istruzioni in linguaggio assembly).
Proprio questa ultima modifica lo rese non portabile poiché, come forse saprete, ciascun linguaggio assembly è specifico di un dato calcolatore, non essendo altro che una forma simbolica del suo linguaggio macchina.
Le espressioni booleane furono mantenute anche in FORTAN IV, mentre vide la luce un nuovo costrutto condizionale chiamato IF logico, in grado di eseguire un test sulla veridicità di un'espressione booleana. Quest'ultimo si aggiungeva alla già presente istruzione di IF aritmetico, introdotta in FORTRAN I, capace di valutare un'espressione numerica, prevedendo tre diversi salti a seconda che il suo valore fosse negativo, nullo o positivo.
I primi programmi in FORTRAN erano creati su schede perforate a 80 colonne, con regole molto stringenti sul formato della singola istruzione. In particolare: una riga di codice non poteva superare i 72 caratteri, che venivano perforati nelle colonne da 1 a 72, se la colonna 1 conteneva una C i caratteri successivi costituivano un commento, le colonne da 1 a 5 erano riservate ad un'etichetta numerica che identificava l'istruzione e che poteva essere usata per saltare all'istruzione stessa da un altro punto del programma, le colonne da 7 a 72 contenevano l'istruzione vera e propria, la colonna 6 (normalmente vuota) se conteneva un carattere qualsiasi (spesso un *) indicava che l'istruzione era il seguito dell'istruzione perforata nella scheda precedente. D'altra parte, le colonne da 73 a 80 venivano spesso usate per numerare le schede e permettere così di riordinarle nel caso fossero state accidentalmente mescolate.
Con l'avvento del Fortran 90, una revisione massiccia del linguaggio sino a quel momento esistente, queste regole stringenti furono abbandonate in favore di codice in formato libero. Altre notevoli innovazioni introdotte dal Fortran 90 sono l'allocazione dinamica della memoria, le operazioni sugli array, i tipi di dati astratti, l'overloading (o sovraccarico) degli operatori, i puntatori e i moduli (quest'ultimi consentono di raggruppare sottoprogrammi e dati correlati).
Il Fortran 95, una revisione minore del suo predecessore, ha introdotto essenzialmente la possibilità di effettuare programmazione parallela.
Fortran 2003 (anche se il documento che lo definisce è stato pubblicato nel 2004) è un'estensione propria del Fortran 95, che include l'aritmetica in virgola mobile IEEE 754, la gestione delle eccezioni, costrutti per la programmazione orientata agli oggetti e una migliorata interoperabilità col linguaggio C.
La bozza finale dello standard di Fortran 2008 è stata rilasciata il 7 giugno 2010 ed introduce parecchie novità mentre lo standard formale più recente del linguaggio è il Fortran 2018, ed è nuovamente una revisione minore del fratello nato 10 anni prima.
Nel 2017 la NASA aveva annunciato una specie di hackaton lanciando una sfida da risolvere in Fortran, per poi annullarlo poco dopo.
Vi era una semplice regola: esiste un risolutore (sotto determinate condizioni) per le equazioni di Navier-Stokes, le quali sono un sistema di equazioni differenziali alle derivate parziali che descrivono il comportamento di un fluido dal punto di vista macroscopico e, in sostanza, chi riusciva ad eseguirlo in modo più veloce sul supercomputer Pleiades, avrebbe vinto il primo premio.