Fortran

Da Wikipedia, l'enciclopedia libera.
Fortran
Autore John Backus, IBM
Data di origine 1957
Ultima versione Fortran 2008 (ISO/IEC 1539-1:2010) (2010)
Utilizzo General purpose
Paradigmi Programmazione procedurale, a oggetti
Tipizzazione Forte
Estensioni comuni .f, .for, .f90, .f95
Influenzato da Speedcoding
Ha influenzato ALGOL 58, BASIC, C, PL/I, MUMPS, Ratfor
Implementazione di riferimento
Implementazione gfortran

Il Fortran (o FORTRAN: il nome in tutte maiuscole è stato sostituito da quello con la sola iniziale maiuscola a partire dal Fortran 90), è uno dei primi linguaggi di programmazione, essendo stato sviluppato a partire dal 1954, da un gruppo di lavoro guidato da John Backus. Il primo manuale di riferimento per il programmatore del FORTRAN I, "The FORTRAN automatic coding system for the IBM 704 EDPM", scritto dallo stesso Backus, è del 1956; il compilatore fu rilasciato nel 1957.

Il Fortran è un linguaggio quasi sempre compilato, imperativo, con tipizzazione statica delle variabili, progettato principalmente per il calcolo scientifico e numerico; vi sono state però anche implementazioni con codice interpretato. Un tipo particolare di Fortran compilato è il Fortran FLAG (Fortran Load And Go), sviluppato da Bob Richardson, programmatore presso la Rice University, molto usato negli anni '70 per l'esecuzione di programmi non troppo complessi.

Il suo nome deriva da Formula Translation (o Translator), cioè traduzione/traduttore di formule (matematiche) in algoritmi computazionali.

Grazie sia agli innumerevoli programmi applicativi sviluppati nel corso degli anni, sia alle immense librerie di funzioni (richiamabili anche da programmi scritti con altri linguaggi di programmazione), il Fortran è tuttora molto usato.

Di esso esistono varianti per il calcolo parallelo (usate nel calcolo scientifico: simulazione di fluidi, interazioni fra particelle, previsioni meteorologiche, ecc.); inoltre, anche se progettato originariamente come linguaggio procedurale, alcune sue versioni più recenti consentono di usare anche costrutti propri della programmazione orientata agli oggetti.

Esempi di programmi[modifica | modifica sorgente]

Hello, world![modifica | modifica sorgente]

Il seguente esempio stampa il testo "Hello world".

PROGRAM HELLO
 PRINT *, 'Hello, world'
END

Uno dei primi programmi in Fortran[modifica | modifica sorgente]

Il programma seguente, scritto da Backus, è riportato nel manuale per il programmatore del FORTRAN I citato sopra. Il programma legge N numeri e ne calcola il massimo.

   DIMENSION A(999) 
   FREQUENCY 30 (2,1,10), 5(100) 
   READ 1, N, (A(I), I = 1,N) 
 1 FORMAT (I3/(12F6.2)) 
   BIGA = A(1) 
 5 DO 20 I = 2,N 
30 IF (BIGA-A(I)) 10,20,20 
10 BIGA = A(I) 
20 CONTINUE 
   PRINT 2, N, BIGA 
 2 FORMAT (22H1THE LARGEST OF THESE NUMBERS IS F7.2) 
   STOP 77777

Minimo e massimo di un array[modifica | modifica sorgente]

Il seguente programma FORTRAN 90 calcola il valore massimo e il valore minimo di un array con estensione 5

PROGRAM minimo_massimo_array
 
IMPLICIT NONE
INTEGER, PARAMETER :: estensione=5
INTEGER, DIMENSION(estensione) :: array
INTEGER :: i
INTEGER :: Min
INTEGER :: Max
 
WRITE(*,*) 'Inserisci i',estensione,'valori dell''array:'
 DO i=1,estensione
  READ(*,*) array(i)
 END DO
 
min=array(1)
DO i=2,estensione
 IF (array(i)<min) min=array(i)
END DO
 
max=array(1)
DO i=2,estensione
 IF (array(i)>max) max=array(i)
END DO
 
WRITE(*,*) "Il valore minimo dell'array e':",Min
WRITE(*,*) "Il valore massimo dell'array e':",Max
 
STOP
END PROGRAM minimo_massimo_array

La storia del Fortran[modifica | modifica sorgente]

Il primo compilatore FORTRAN fu sviluppato a partire dal 1954 per il calcolatore IBM 704 da un gruppo di lavoro guidato da John Backus. Si trattava di un compilatore ottimizzante (o ottimizzatore), poiché i progettisti ritenevano che nessuno avrebbe usato un linguaggio la cui efficienza non si avvicinasse a quella dei linguaggi assemblatori.

Il linguaggio fu 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 veloce. L'inclusione del tipo numero complesso rese poi il Fortran il linguaggio d'elezione nella comunità scientifica. Al giorno d'oggi vengono ancora progettati nuovi compilatori Fortran, con prestazioni sempre più alte. Non si deve dimenticare poi che molti progressi nella teoria e nel progetto dei compilatori sono proprio derivati dalla necessità di ottenere compilatori Fortran in grado di generare un "buon" codice.

Diverse sono le versioni Fortran apparse: il FORTRAN I nel 1957, il FORTRAN II nel 1958, il FORTRAN III nel 1958 (usato da una ventina di clienti dell'IBM, ma mai rilasciato come prodotto commerciale per la sua mancanza di portabilità), il FORTRAN IV nel 1961 (la versione di maggiore uso e diffusione), il FORTRAN 66 nel 1966, il FORTRAN 77 nel 1977, il Fortran 90 nel 1990, il Fortran 95 nel 1995, il Fortran 2003 nel 2003 e il Fortran 2008 nel 2008.

Il FORTRAN II introdusse la possibilità di compilazioni separate, il FORTRAN III la possibilità di usare espressioni booleane (o logiche) e quella di inserire "in linea" codice in linguaggio assemblatore (cioè di mescolare istruzioni Fortran e istruzioni in linguaggio assemblatore). Fu questo a renderlo non portabile, poiché ciascun assemblatore ovviamente è specifico di un dato calcolatore, non essendo altro, in ultima analisi, che una forma simbolica del suo linguaggio macchina. Le espressioni booleane furono introdotte anche nel FORTAN IV, insieme alla nuova istruzione condizionale IF logico in grado di eseguire un test sulla veridicità di un'espressione booleana, che si aggiungeva alla precedente istruzione condizionale IF aritmetico presente nel FORTRAN II (che a sua volta l'aveva ereditata dal FORTRAN I, come si può vedere nel programma d'esempio, riportato sopra, che calcola il massimo di N numeri). Questa valutava invece un'espressione numerica e prevedeva tre diversi salti a seconda che il suo valore fosse negativo, nullo o positivo.

I primi programmi in FORTRAN venivano perforati per lo più su schede 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 "principale" del linguaggio, queste regole stringenti sono state abbandonate in favore del 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 puntatore e i moduli (questi ultimi consentono di raggruppare sottoprogrammi e dati correlati).

Il Fortran 95, una revisione "minore" del linguaggio, ha introdotto essenzialmente la possibilità delle programmazione parallela.

Lo standard formale più recente del linguaggio è il Fortran 2003 (anche se il documento che lo definisce è stato pubblicato nel 2004). Si tratta di 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.

Caratteristiche[modifica | modifica sorgente]

I primi programmi in Fortran, come già detto, dovevano essere scritti con regole molto stringenti (imposte dall'uso delle schede perforate). Inoltre facevano un uso piuttosto pesante di etichette numeriche e dell'istruzione di salto GOTO. Queste "necessità" sono state eliminate dalle versioni più recenti del linguaggio. Sono stati inoltre introdotti concetti "moderni" di programmazione (ad esempio il costrutto IF-THEN-ELSE, a partire dal FORTRAN 77), sempre tuttavia non perdendo di vista gli obiettivi della sinteticità del codice sorgente e dell'efficienza del codice eseguibile. In Fortran sono anche stati scritti molti linguaggi specializzati, fra cui il SAS, per la generazione di report statistici e il SIMSCRIPT, per la simulazione di sistemi a code.

I fabbricanti di calcolatori scientifici ad alte prestazioni (come ad esempio Burroughs, CDC, Cray, Honeywell, IBM, Texas Instruments, UNIVAC) hanno aggiunto al linguaggio estensioni allo scopo di sfruttare particolari caratteristiche delle proprie macchine (come esempio si possono ricordare il FORTRAN VI G, il FORTRAN IV H e il FORTRAN IV H Extended dell'IBM, o il FORTRAN V dell'UNIVAC).

Il destino delle estensioni è di essere abbandonate o di essere incorporate in versioni successive del linguaggio.

Per finire si può ricordare che si sta sviluppando un nuovo linguaggio, il Fortress, che dovrebbe, nelle intenzioni dei progettisti, sostituire il Fortran.

Sintassi[modifica | modifica sorgente]

Trattandosi del primo linguaggio di programmazione ad alto livello, il Fortran ha una sintassi che può apparire oscura ai programmatori che hanno familiarità solo con linguaggi molto più recenti, come ad esempio il C. Tuttavia le più recenti versioni del linguaggio tengono conto dei progressi compiuti nel campo dei linguaggi di programmazione e cercano di scoraggiare tale sintassi in favore di una più trasparente e robusta. La "vecchia" sintassi infatti rende molto difficile progettare un analizzatore lessicale, e può bastare anche un solo carattere sbagliato a generare errori rilevabili solo in esecuzione, anziché in compilazione. I costrutti introdotti nelle versioni più recenti, così come la possibilità di scrivere codice in formato libero (cioè non più vincolato al rigido formalismo originale imposto dalle schede perforate) hanno molto ridotto i problemi, anche se una buona programmazione rimane sempre il miglior modo di procedere.

Si dovrebbe anche considerare il fatto che le caratteristiche del Fortran sono state ritagliate essenzialmente sul calcolo scientifico e numerico, piuttosto che sullo sviluppo del software. Così nel Fortran 95, ad esempio, esistono comandi molto brevi che consentono di effettuare operazioni matematiche sugli array, che non solo rendono i programmi molto più leggibili, ma sono di ausilio al compilatore, nel caso quest'ultimo sia in grado di generare codice che esegue operazioni matematiche in parallelo. Per i motivi accennati il Fortran, anche se è poco usato per applicazioni estranee al calcolo scientifico e numerico, rimane tuttora il linguaggio d'elezione in tali campi, oltretutto perché anche persone digiune di programmazione possono imparare facilmente a scrivere un codice efficiente.

Dato che il Fortran esiste ormai da mezzo secolo, i programmi scritti in questo linguaggio (specialmente in FORTRAN 77, il suo dialetto più importante) tuttora usati sono innumerevoli. Il Fortran rimane inoltre il linguaggio di prima scelta per i programmi destinati a girare sui supercomputer, come ad esempio quelli usati per le previsioni meteorologiche, basati sui modelli matematici della fisica dell'atmosfera.

Standard[modifica | modifica sorgente]

I documenti elencati nel seguito si riferiscono alle più recenti standardizzazioni del Fortran.

  • ANSI X3.198-1992 (R1997). Titolo: Programming Language "Fortran" Extended. Noto informalmente come Fortran 90. Pubblicato dall'ANSI.
  • ISO/IEC 1539-1:1997. Titolo: Information technology – Programming languages – Fortran – Part 1: Base language. Noto informalmente come Fortran 95. Esistono altre due parti di questo standard. La parte 1 è stata formalmente adottata dall'ANSI.
  • ISO/IEC 1539-1:2004. Titolo: Information technology – Programming languages – Fortran – Part 1: Base language. Noto informalmente come Fortran 2003.

Altri progetti[modifica | modifica sorgente]

Collegamenti esterni[modifica | modifica sorgente]

informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica