Quale versione di Fortran dovrei imparare?


17

Sono uno studente di ingegneria meccanica interessato al campo dell'ingegneria aerospaziale dove, mi viene detto, Fortran è ancora comunemente usato.

Quale versione di Fortran dovrei investire il mio tempo per imparare?


Non vale una risposta completa, ma vale la pena notare che il supporto del compilatore per le funzionalità Fortran più recenti è gravemente carente. Vedi fortranwiki.org/fortran/show/Fortran+2003+status e fortranwiki.org/fortran/show/Fortran+2008+status Comincerei con 90/95 e procederei come necessario.
Doug Lipinski,

Dopo aver scritto alcune riflessioni sull'argomento, consultare stackoverflow.com/questions/953869/… stackoverflow.com/questions/3549702/… se può essere di qualche utilità. A parte quanto sopra, consiglierei F90 quindi apprendere le funzionalità di cui avrete bisogno.
Rook,

1
Nota che Matlab proviene da Fortran. Sulla base dei tuoi commenti, ti consiglio di valutare questa opzione.
Dennis Jaheruddin,

2
Dovresti anche imparare Fortran a tutto tondo ? Questo potrebbe essere dettato dalla quantità di codice legacy che devi usare, che detterebbe anche la versione di Fortran che dovresti imparare.
Damien,

Risposte:


27

È un po 'un termine improprio che esiste una "versione" di Fortran. Con una rara eccezione, gli ultimi standard Fortran (e compilatori) mantengono un'eccellente compatibilità con le versioni precedenti. Questo è per una buona ragione: non molte persone userebbero Fortran oggi se non fosse per le grandi quantità di codice legacy ancora in uso. Vale a dire, un codice Fortran77 conforme agli standard funzionerà quasi sempre con gli ultimi compilatori.

Dovresti imparare a usare la versione più moderna della lingua disponibile. F2008 potrebbe non aver aggiunto nulla di terribile utile a un principiante, ma l'introduzione di F2003 di concetti orientati agli oggetti è sicuramente un grosso problema. "Modern Fortran Explained" è un buon punto di partenza e "Scientific Software Design: The Object Oriented Way" è anche abbastanza buono per imparare davvero a metterlo in pratica.

Pragmaticamente, se stai lavorando su un codice legacy (ad esempio F77 o precedente), a un certo punto dovrai imparare alcune delle cose che hanno fatto a causa della mancanza delle funzionalità di F90 +. Ad esempio, se stai scrivendo il codice Fortran per qualcosa, non dovresti mai usare quello che viene chiamato un "blocco COMUNE", ma invariabilmente li vedrai comparire nel codice F77 che potresti dover usare.

Non consiglierei mai a qualcuno di iniziare a lavorare in Fortran senza almeno i set di funzionalità F90 / 95.

Detto questo, se non sei esperto nella programmazione in un'altra lingua, probabilmente troverai un consenso sul fatto che Fortran non è la lingua migliore da imparare come prima, anche se stai cercando l'aerospazio. (E lo dico come qualcuno nel settore aerospaziale che usa regolarmente Fortran e lo ha usato come prima lingua).


2
+1 "Non consiglierei mai a nessuno di iniziare a lavorare in Fortran senza almeno i set di funzionalità F90 / 95." . Sono d'accordo con questo. Inizia con F90, scopri tutte le funzionalità di base,
fai

Se non Fortran quale lingua vale la pena imparare e sarà pratico da usare in ingegneria? Come sta Matlab? Ne ho bisogno per un corso che seguirò il prossimo semestre.
user26358

@ user26358 Python per la programmazione generale, ha molta trazione nella comunità scientifica. R per analisi statistiche. MATLAB, Mathematica o Maple (qualunque sia la tua classe) per il calcolo numerico. SQL per database relazionali. Javascript per roba web e perché sta diventando la lingua franca. Non mi preoccuperei di Fortran fino a quando uno di quelli non riuscirà a fare il lavoro, non è una lingua piacevole da imparare come prima.
Schwern,

@Aurelius, sono d'accordo con il tuo ultimo paragrafo. Credo che il modo giusto di imparare la programmazione scientifica sia esattamente l'opposto che ho sperimentato: python-> C ++ e nel caso in cui ne abbiate bisogno Fortran.
Nicola Cavallini,

@ user26358 Matlab è buono e probabilmente lo userai moltissimo a scuola. Python è un buon punto di partenza con la programmazione di uso generale, ed i suoi moduli intorpiditi / scipy possono fare la maggior parte delle cose che probabilmente farai in Matlab, ed è un buon posto per imparare i fondamenti del software di scrittura. Dovresti sicuramente avere almeno una lingua compilata anche sotto la cintura; Il C ++ sarebbe la scelta più popolare.
Aurelio,

1

Non sono d'accordo con entrambi. C ++ e Python non sono ancora ottimizzati come FORTRAN. Sono assolutamente d'accordo sul fatto che FORTRAN 90/95 sia il minimo. Tuttavia, è sempre utile utilizzare altre versioni più moderne. La sfida con FORTRAN è che se lo impari prima di imparare linguaggi orientati agli oggetti, è facile da capire. È molto più difficile imparare se sei abituato a pensare con gli oggetti. Insegno qui al corso di supercalcolo e costringo i miei studenti a usare FORTRAN. Li costringe a utilizzare un diverso tipo di logica nella programmazione. A loro non piace perché non "pensa" come Python o C ++. Tutto si riduce davvero a ciò che si intende fare e alla quantità di parallelizzazione e prestazioni importanti.


Benvenuti in SciComp.SE. Questo sembra più un'opinione che una domanda per il sito. Se consideri che Fortran "[...] li costringe a utilizzare un diverso tipo di logica nella programmazione", dovresti elaborare l'argomento e dirci perché. Inoltre, qual è questo "tipo di logica" di cui parli.
Nicoguaro

2
@tmwitten: questa risposta dovrebbe essere un commento? Probabilmente è troppo lungo per essere un commento, e fuori dal contesto, sembra un non sequitur (ad esempio, C ++ e Python non sono menzionati nella domanda, "entrambi" sembra riferirsi a Nicola e Aurelius).
Geoff Oxberry,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.