Learning Fortran


9

Mi chiedevo qual è il modo migliore per imparare a programmare in Fortran?

Ho cercato libri, gli esempi che mi sono sembrati OK erano "Fortran 95/2003 Explained" e "Fortran For Scientists And Engineers" .

Non so cosa ne pensiate di questi ragazzi?

Un'altra cosa che mi chiedo è quale compilatore dovrei usare? Lavoro su una macchina Windows 7 (64 bit).

Spero che mi potete aiutare su questo!

Quindi per la mia esperienza con la programmazione:

  1. Matlab e acero sono stati gentili con le mie prime presentazioni nel mondo della programmazione. Matlab è un programma in cui in realtà sono abbastanza bravo, ho imparato a lavorare con i loop e come combinarli per creare programmi più efficienti. Maple è più nella fase di base (so come cercare la soluzione per integrali semplici ecc.).
  2. Un anno dopo abbiamo avuto un'introduzione al C ++ in Visual Basic. Il professore in realtà è andato veloce su questo, dopo 2 mesi stavamo già discutendo puntatori ed eredità. Sono in grado di scrivere semplici programmi in questa lingua, solo lavorare con le classi è qualcosa che rimane una difficoltà, ma credo che sia solo una questione di pratica.
  3. E un anno dopo avevo bisogno di imparare Mathematica 8, che oggi sto anche diventando bravo.

Quindi ho un po 'di esperienza di programmazione, ma non dirò che è una quantità incredibile!

Il motivo per cui voglio imparare Fortran è principalmente perché non puoi fare fisica teorica da sola, devi testare le tue teorie e per questo dovrai essere in grado di scrivere programmi che potrebbero essere in grado di testare quelle teorie numericamente. Ho sentito che Fortran è una specie di lingua da usare quando si tratta di matematica numerica, quindi penso che sarebbe utile conoscere questa lingua.

ps: qual è la differenza tra Fortran95 e Fortran 2003?


3
Puoi essere un po 'più specifico su da dove vieni e dove vuoi andare? Sai già come programmare, ovvero quali altri linguaggi di programmazione conosci? E cosa vuoi fare a Fortran?
Pedro,

Sì, forse avrei dovuto menzionarlo nella mia domanda, permettimi di modificare :) @Pedro
Nick

1
So che non risponde alla domanda, ma devo consigliare vivamente di usare Python su Fortran se non hai esigenze prestazionali specifiche come principiante. Avrai meno mal di testa a che fare con la matematica e la teoria attuali poiché Python ti urlerà meno. Ha anche pacchetti incredibili che rendono molto semplice la matematica numerica (ricerca SciPy, Numpy, Matplotlib). Questi strumenti rendono Python molto simile a MATLAB nel suo utilizzo, ma hai anche un intero linguaggio per costruire un buon software intorno a come ewll. Per non parlare del fatto che è open source.
avuto il

1
Fortran 95 è anche simile a Matlab e uno standard ISO. Molte persone che usano Python scrivono kernel computazionalmente pesanti in C / C ++ (anche Fortran), il che significa che ora devi imparare non una ma due lingue. Uno per le prestazioni e l'altro per comodità / facilità d'uso.
stali,

Risposte:


4

Vado alla seconda raccomandazione di Stali sul libro di Chapman. Ho imparato dal libro Chapman's Fortran 90 ed è stato molto utile. Ti insegnerà la lingua Fortran. Non ti insegnerà i buoni flussi di lavoro per la programmazione, e per questo, dovresti cercare altrove dopo aver imparato un po 'di Fortran e programmato per un po'.

La maggior parte delle risorse online per aiutarti con la programmazione Fortran sarà basata su Linux. Allo stesso modo, nella scienza computazionale, la maggior parte dei materiali scritti sarà orientata verso gli utenti Linux. Per questo motivo, ti consiglio vivamente di installare VirtualBox (o una sorta di software che ti consenta di eseguire sistemi operativi virtuali) e quindi di installare un po 'di distribuzione Linux su di esso. Se non hai mai usato Linux prima, una distribuzione facile da usare come Ubuntu, Mint o Fedora sarà probabilmente la soluzione migliore. Queste distribuzioni richiedono una quantità minima di configurazione se eseguite in un ambiente virtuale e hanno una buona interfaccia grafica per aiutarti a navigare nel sistema operativo. Ognuna di queste distribuzioni ha un gestore di pacchetti che è possibile utilizzare per installare software aggiuntivo. Utilizzando il gestore pacchetti, è possibile installare gfortran.

Avrai voglia di sviluppare software in un editor di testo (o un IDE), quindi probabilmente vale la pena imparare le basi della riga di comando. Software Carpentry ha buone risorse per questo compito. (Dichiarazione di non responsabilità: ho insegnato parte di un seminario per Software Carpentry.) Quindi dovresti essere in grado di andare avanti con l'apprendimento di scrivere programmi semplici e compilarli dalla riga di comando, quindi imparare come usare Makefile.

Il problema con qualsiasi cosa basata su Windows è che la maggior parte dei materiali online che vedrai quando fai la scienza computazionale supporranno che stai usando Linux, e il consiglio (se fosse buono per cominciare) si romperà giù e ti costa tempo. Cygwin è un livello API che aggiunge più funzionalità simili a Linux, ma la corrispondenza con Linux non è perfetta e il software compilato per Linux non funzionerà sulla tua macchina; dovrai comunque ottenere versioni native di Windows o ricompilare il software per Windows. Un compilatore Fortran nativo di Windows come Visual Fortran costerà denaro e continuerai ad avere il problema che la maggior parte degli utenti Fortran e degli scienziati computazionali usano Linux per il loro sviluppo software, il che significa che dovrai andare avanti sul tuo proprio. Tuttavia, se è davvero necessariodistribuire software basato su Windows per qualche motivo, quindi ha senso compiere tutti gli sforzi per capire come usare qualcosa come Visual Fortran.


Grazie per il consiglio! Ma mi chiedo, al posto della macchina virtuale, non posso creare una sorta di meccanismo a doppio avvio in cui posso scegliere se avviare prima Windows7 o Linux Ubuntu? Credo che potrebbe davvero farmi risparmiare un sacco di tempo! E se avessi bisogno di andare su Windows, allora avrò l'esperienza di programmazione della versione Linux che mi permette di seguire i passaggi su Windows molto più velocemente!
Nick,

Potresti, se lo desideri. Penso che la configurazione a doppio avvio sia meno flessibile e richieda più conoscenza tecnica e tempo (potrebbe essere necessario ridimensionare le partizioni, impostare un boot loader nel modo giusto, ecc.). Penso anche che le macchine virtuali siano più facili da migrare su una nuova macchina, il che può essere utile se vuoi condividere il tuo lavoro con un collega o se acquisisci un nuovo computer e vuoi migrare tutto il tuo lavoro lì.
Geoff Oxberry,

Alla fine ho trovato un po 'di tempo per passare attraverso tutti i passaggi necessari. Ho VirtualBox e Linux (Ubuntu) installato. Ora mi chiedevo quale potrebbe essere il miglior compilatore? Non riesco a trovare molto online su quella parte: s. Ho sentito qualcuno dire gfortran?
Nick,

2
gfortran è gratuito e probabilmente il percorso di minor resistenza. La maggior parte degli altri compilatori richiede l'acquisto di una licenza, con possibili eccezioni per uso personale o accademico. (So ​​che il compilatore Intel può essere scaricato e utilizzato per uso personale solo su base gratuita, ad esempio; dovrai leggere le licenze per i dettagli.) HighPerformanceMark collegato a un sito Web che ha confronti delle prestazioni per i compilatori.
Geoff Oxberry,

6

Penso che il libro Metcalfe sia una buona guida annotata alle funzionalità moderne di Fortran, molto utile se conosci già una versione precedente del linguaggio ma non una buona introduzione alla programmazione nel linguaggio.

Per i miei soldi, il libro di Chiver e Sleightholme e il libro di Brainerd sono entrambi abbastanza buoni, anche se non penso che sia buono come il libro di Ellis et al che, sfortunatamente, non è stato aggiornato per Fortran 2003 o versioni successive.

Ho una forte avversione per il libro di Chapman. Non ricordo perché non ho apprezzato così tanto l'edizione 90/95, quindi non posso più giustificare questa avversione, puoi scartarla come un pregiudizio.

Ma l'unico libro che raccomando senza esitazione è il libro di Arjen Markus . Probabilmente non è un'introduzione ideale per qualcuno che sta ancora cercando di capire le caratteristiche di base del linguaggio, ma una volta che hai imparato quelle valgono il peso in una sostanza preziosa.

Per quanto riguarda quale compilatore usare, io uso il compilatore Intel e sono generalmente soddisfatto. Si integra con Visual Studio, che potrebbe essere importante per te. Il compilatore NAG ha migliori messaggi di errore e di avviso ma produce eseguibili più lenti (in generale e l'esperienza potrebbe essere diversa). Il compilatore gfortran è gratuito e ottiene recensioni abbastanza buone ma non è quello che uso. Se vuoi sapere di più, il poliedro te lo dirà.


Il libro Markus ha un ottimo sommario.
AlexE

Sì, il libro Markus sembra davvero un grande libro, quindi è quello che prenderò sicuramente in considerazione! Per il compilatore ho solo bisogno di qualcosa con eseguibili veloci (non è necessaria l'integrazione con Visual Studio).
Nick,

Penso che il compilatore Intel sia generalmente considerato veloce.
AlexE,

3

Per i libri, consiglio "Modern Fortran Explained" di Metcalf / Reid / Cohen. È più un riferimento che un libro di testo, ma ti servirà bene se hai già avuto una certa esposizione alla programmazione in generale (diciamo C).

Oltre a quel libro, consiglio vivamente il sito Web di Ondřej Čertík http://fortran90.org/ . In primo luogo non ti insegnerà Fortran, ma ti fornirà una serie di migliori pratiche. Fortran offre vari modi per programmare: dopo tutto è compatibile verso il basso. Le migliori pratiche fornite ti aiuteranno a sviluppare uno stile Fortran moderno e coerente. Inoltre, le FAQ trovate potrebbero interessarti.


2
È stato votato per la pagina delle migliori pratiche F90, anche per me è stato di grande aiuto.
Daniel Shapero,

2

Penso che il libro di Chapmans sia più adatto ai principianti e sia un buon riferimento. Gli autori del secondo sono tutti esperti, ma penso che il libro sarà una buona aggiunta alla tua biblioteca in un secondo momento.

Per iniziare, suggerirei di attenersi a Fortran 95 e successivamente (se necessario) passare a Fortran 2003. Fortran 95 è facile da imparare (quasi come Matlab) e sarai produttivo molto rapidamente.

Su Linux hai un certo numero di compilatori Fortran gratuiti (GNU, Solaris Studio, Open64 ecc.) Oltre a un set più ricco di strumenti come valgrind, gdb, gnuplot, (per una rapida visualizzazione), svn / hg ecc. Inoltre l'installazione di pacchetti precompilati che includono librerie numeriche (blas / lapack / netcdf / fftw ecc.) sono a distanza di comando (almeno su Debian con apt-get).

Su Windows potresti essere meglio con cygwin in quanto ti dà un accesso facile e veloce ad alcuni dei suddetti strumenti / librerie oltre al compilatore GNU Fortran. Quindi sì, vai su cygwin.com e installa il pacchetto principale insieme a gfortran e un editor preferito (vim è buono). Questo dovrebbe essere un buon inizio. Più tardi, se non altro, suggerirei di usare il pacchetto apt-cyg per installare roba.


1
Non consiglio vim (o, del resto, emacs) come primo editor di testo. Ci sono troppe funzioni essenziali (taglia, copia, incolla, trova, trova / sostituisci) che coinvolgono combinazioni di tasti non intuitive per usarlo come primo editor di testo e tutti quei passaggi extra e sconosciuti che un nuovo studente deve compiere per fare qualcosa di semplice è scoraggiante e distrae da qualsiasi cosa stiano cercando di fare (il che, se stai raccomandando un editor di testo, è probabilmente una forma di sviluppo software).
Geoff Oxberry,

1
Come primo editore raccomando uno strumento che ha la capacità di essere l'unico editore di cui tu abbia mai bisogno, non uno che supererai in 3 settimane, 3 mesi o anche 3 anni. Per questo motivo sia Emacs che Vim sono i primi editor adatti. Certo, potrebbero avere una curva di apprendimento inizialmente più ripida rispetto ad altri, ma moltissimi programmatori hanno pagato quel prezzo e hanno trovato le ricompense degne di nota.
Mark ad alte prestazioni

Il tuo commento crea una scelta falsa: impara vim / emacs e disponi di un editor che puoi usare per tutta la vita, nonostante la ripida curva di apprendimento, o usa qualche altro strumento inferiore di facile apprendimento che supererai. Molti programmatori professionisti usano altri strumenti con curve di apprendimento meno ripide, come gedit, Sublime Text, TextMate, TextWrangler e altri, e vanno d'accordo. Vim ed emacs sono grandi editor - io uso entrambi - ma non sono le uniche, scelte chiaramente superiori là fuori per la programmazione (WolfgangBangerth è un buon caso anche per gli IDE).
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.