Fortran Indice Storia | Caratteristiche | Esempi di programmi | Note | Altri progetti |...


Linguaggi di programmazione orientati agli oggetti


acronimolinguaggi di programmazione1954John Backusprogrammatoricompilatore1957programmiapplicativilibrerie di funzionicalcolo parallelocalcolo scientificosimulazionefluidiparticelleprevisioni meteorologichelinguaggio proceduraleprogrammazione orientata agli oggetticompilatore1954IBM 704John Backuscompilatore ottimizzantelinguaggi assemblatoritiponumero complessoespressioni booleanelinguaggio macchinaschedeallocazione dinamica della memoriaarraytipi di dati astrattioverloadingpuntatoriIEEE 754linguaggio Ccompilatoimperativotipizzazione staticacalcolo scientificonumericointerpretatoRice Universityanni settantaGOTOSASSIMSCRIPTBurroughsCDCCrayHoneywellIBMTexas InstrumentsUNIVACFortressALTRANlinguaggio di programmazione ad alto livelloCanalizzatore lessicalearraysupercomputermodelli matematiciHello, world!

















































Fortran

Fortran acs cover.jpeg

The Fortran Automatic Coding System for the IBM 704 (1956), la prima guida all'uso del linguaggio 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

Fortran (o FORTRAN[1]) - acronimo di FORmula TRANslation (o TRANslator) ovvero "traduzione (o traduttore) di formule[2]" - è uno dei primi linguaggi di programmazione, sviluppato a partire dal 1954 da un gruppo di lavoro guidato da John Backus. Il primo manuale di riferimento per i programmatori in FORTRAN I, The FORTRAN automatic coding system for the IBM 704 EPDM, scritto dallo stesso Backus, è del 1956; il compilatore fu pubblicato nel 1957.


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 un linguaggio molto usato[3].


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.




Indice






  • 1 Storia


  • 2 Caratteristiche


    • 2.1 Standard


    • 2.2 Varianti e estensioni


    • 2.3 Sintassi




  • 3 Esempi di programmi


    • 3.1 Hello, world!


    • 3.2 Uno dei primi programmi in Fortran


    • 3.3 Minimo e massimo di un array




  • 4 Note


  • 5 Altri progetti


  • 6 Collegamenti esterni





Storia |


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 pubblicato 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 sotto, 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 puntatori 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 |


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 settanta per l'esecuzione di programmi non troppo complessi.


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.



Standard |


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.

  • ISO/IEC 1539-1:2010. Titolo: Information technology – Programming languages – Fortran – Part 1: Base language. Noto informalmente come Fortran 2008.



Varianti e estensioni |


ALTRAN era un'estensione al linguaggio che aggiungeva a quest'ultimo l'algebra razionale, sviluppata da W.S. Brown ai Laboratori Bell intorno al 1968.



Sintassi |


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.



Esempi di programmi |



Hello, world! |


Il seguente esempio stampa il testo "Hello, world!".


PROGRAM HELLO
PRINT *, 'Hello, world!'
END


Uno dei primi programmi in Fortran |


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 |


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)
max=array(1)
DO i=2,estensione
IF (array(i)<min) min=array(i)
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


Note |




  1. ^ Il nome maiuscolo è stato sostituito da quello con la sola iniziale maiuscola a partire dal Fortran 90.


  2. ^ intese come formule matematiche in algoritmi computazionali


  3. ^ Eugene Loh, The Ideal HPC Programming Language, in Queue, vol. 8, nº 6, Association of Computing Machines, 18 giugno 2010.



Altri progetti |



Altri progetti



  • Wikizionario

  • Wikimedia Commons





  • Collabora a Wikizionario Wikizionario contiene il lemma di dizionario «FORTRAN»


  • Collabora a Wikimedia CommonsWikimedia Commons contiene immagini o altri file su Fortran



Collegamenti esterni |



  • USER NOTES ON FORTRAN PROGRAMMING (UNFP), su ibiblio.org.


  • Fortran II su l'IBM 704 (storico, 1958)


  • National Bureau of Standard Handbook: Using ANS FORTRAN (Fortran 66 e Fortran 77)


  • Professional Programmer's Guide to Fortran77 (di Clive Page)


.mw-parser-output .navbox{border:1px solid #aaa;clear:both;margin:auto;padding:2px;width:100%}.mw-parser-output .navbox th{padding-left:1em;padding-right:1em;text-align:center}.mw-parser-output .navbox>tbody>tr:first-child>th{background:#ccf;font-size:90%;width:100%}.mw-parser-output .navbox_navbar{float:left;margin:0;padding:0 10px 0 0;text-align:left;width:6em}.mw-parser-output .navbox_title{font-size:110%}.mw-parser-output .navbox_abovebelow{background:#ddf;font-size:90%;font-weight:normal}.mw-parser-output .navbox_group{background:#ddf;font-size:90%;padding:0 10px;white-space:nowrap}.mw-parser-output .navbox_list{font-size:90%;width:100%}.mw-parser-output .navbox_odd{background:#fdfdfd}.mw-parser-output .navbox_even{background:#f7f7f7}.mw-parser-output .navbox_center{text-align:center}.mw-parser-output .navbox .navbox_image{padding-left:7px;vertical-align:middle;width:0}.mw-parser-output .navbox+.navbox{margin-top:-1px}.mw-parser-output .navbox .mw-collapsible-toggle{font-weight:normal;text-align:right;width:7em}.mw-parser-output .subnavbox{margin:-3px;width:100%}.mw-parser-output .subnavbox_group{background:#ddf;padding:0 10px}




.mw-parser-output .CdA{border:1px solid #aaa;width:100%;margin:auto;font-size:90%;padding:2px}.mw-parser-output .CdA th{background-color:#ddddff;font-weight:bold;width:20%}



Controllo di autorità
LCCN (EN) sh85050987 · GND (DE) 4017984-9 · BNF (FR) cb11931442r (data)


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



Popular posts from this blog

Szabolcs (Ungheria) Altri progetti | Menu di navigazione48°10′14.56″N 21°29′33.14″E /...

Discografia di Klaus Schulze Indice Album in studio | Album dal vivo | Singoli | Antologie | Colonne...

How to make inet_server_addr() return localhost in spite of ::1/128RETURN NEXT in Postgres FunctionConnect to...