Fortran, abbreviazione di "Formula Translation", è un linguaggio di programmazione di alto livello particolarmente adatto per applicazioni scientifiche e ingegneristiche. È stato uno dei primi linguaggi di programmazione sviluppati per computer elettronici e ha subito notevoli evoluzioni dalla sua nascita. Fortran consente una manipolazione efficiente dei dati in array e supporta calcoli matematici complessi, rendendolo una scelta privilegiata per la previsione numerica del tempo, la fisica computazionale e la bioinformatica, tra altri campi.
Fortran è stato sviluppato negli anni '50 da IBM come un linguaggio progettato per il calcolo numerico e l'informatica scientifica. La prima versione, Fortran I, è stata rilasciata nel 1957. L'idea centrale era quella di creare un linguaggio che consentisse a scienziati e ingegneri di scrivere programmi senza dover conoscere le complessità dell'hardware sottostante.
Versioni successive di Fortran sono state introdotte, ognuna delle quali ha aggiunto nuove funzionalità e migliorato l'usabilità. Fortran II è seguito poco dopo, aggiungendo funzionalità di programmazione strutturata. Nel 1966 è stata introdotta la versione Fortran IV, che è diventata uno standard industriale. Fortran 77 (rilasciato nel 1978) ha aggiunto funzionalità come i tipi di dati carattere e migliorato le capacità di input/output.
Dal 1991 in poi, Fortran 90 ha introdotto la programmazione ad array, la programmazione modulare, la ricorsione e l'allocazione dinamica della memoria. Fortran 2003 e Fortran 2008 hanno ulteriormente migliorato il linguaggio con funzionalità come la programmazione orientata agli oggetti e una migliore interoperabilità con il linguaggio di programmazione C. Lo standard più recente, Fortran 2018, ha portato ulteriori miglioramenti, inclusa una maggiore compatibilità e funzionalità per l'elaborazione parallela.
Fortran è ancora attivamente utilizzato in molte discipline scientifiche e ingegneristiche, supportato da compilatori moderni come GNU Fortran (gfortran) e Intel Fortran Compiler. Ha un ampio codice legacy e molte librerie scientifiche sono scritte in Fortran, rendendolo un linguaggio critico in determinati domini.
Fortran è un linguaggio a tipizzazione forte che richiede la dichiarazione esplicita dei tipi di variabili. Ad esempio:
INTEGER :: i
REAL :: x
CHARACTER(len=10) :: name
Fortran eccelle nella gestione degli array, consentendo operazioni su interi array con una sintassi semplice.
REAL, DIMENSION(10) :: A
A = 2.0 * A ! Moltiplica ogni elemento dell'array A per 2
Fortran fornisce strutture di controllo convenzionali come cicli e istruzioni condizionali.
DO i = 1, 10
IF (A(i) > 0) THEN
PRINT *, 'Positivo'
END IF
END DO
Fortran consente la definizione di funzioni e sottoprogrammi per la programmazione modulare.
FUNCTION square(x)
REAL :: square
REAL, INTENT(IN) :: x
square = x * x
END FUNCTION square
Per impostazione predefinita, Fortran ha una regola secondo cui le variabili i cui nomi iniziano con "I", "J", "K", "L", "M" o "N" sono implicitamente INTEGER. Questo può essere sovrascritto per chiarezza.
IMPLICIT NONE ! Disabilita la tipizzazione implicita
INTEGER :: I
REAL :: R
Fortran supporta i cicli do-while per l'esecuzione ripetuta basata su una condizione.
i = 1
DO WHILE (i <= 10)
PRINT *, i
i = i + 1
END DO
Fortran ha potenti tipi definiti dall'utente noti come tipi derivati, che consentono definizioni di dati simili a strutture.
TYPE :: Person
CHARACTER(len=20) :: name
INTEGER :: age
END TYPE Person
TYPE(Person) :: p1
Fortran supporta i moduli per incapsulare dati e procedure, promuovendo il riutilizzo e l'organizzazione del codice.
MODULE myModule
CONTAINS
SUBROUTINE mySubroutine()
! Implementazione
END SUBROUTINE
END MODULE
Fortran supporta i puntatori che facilitano la gestione dinamica della memoria, simile a linguaggi come C.
REAL, POINTER :: pA
ALLOCATE(pA(10)) ! Alloca dinamicamente un array
Fortran ha funzionalità che creano interoperabilità con C, consentendo la programmazione in linguaggi misti.
INTERFACE
FUNCTION c_function(x) BIND(C, NAME="c_function")
INTEGER(C_INT) :: c_function(INTEGER)
END FUNCTION c_function
END INTERFACE
I compilatori Fortran più popolari includono:
Sebbene Fortran non sia comunemente associato a IDE moderni come alcuni altri linguaggi, diversi IDE lo supportano:
La creazione di un progetto Fortran comporta tipicamente la creazione di file sorgente con estensione .f, .f90 o .f95 e la loro compilazione utilizzando un compilatore Fortran. Un comando tipico potrebbe apparire così:
gfortran -o my_program my_source.f90
Fortran è ampiamente utilizzato nell'informatica scientifica, nella previsione numerica del tempo, nella modellazione climatica, nella fisica computazionale, nella chimica computazionale e nella bioinformatica. È particolarmente noto per le sue prestazioni nei calcoli numerici pesanti e nelle simulazioni.
I principali concorrenti di Fortran nel campo della programmazione scientifica e ingegneristica includono:
Fortran ha diversi strumenti di traduzione da sorgente a sorgente che possono aiutare gli sviluppatori a convertire codice legacy in linguaggi più contemporanei o a ottimizzare il codice esistente. Alcuni strumenti includono:
Questi strumenti facilitano la transizione da versioni più vecchie di Fortran o paradigmi di programmazione completamente diversi, mantenendo al contempo prestazioni e funzionalità.