Domanda

Ho lavorato con un sacco di FORTRAN 77 ultimamente, e se ho avuto le prenotazioni in un primo momento, ho ora vedere alcuni grandi qualità del linguaggio. Si tratta di:

  • semplice da imparare (complicazioni object-oriented o funzionali-programmazione)
  • di facile lettura
  • Blazing veloce a elaborazione di calcoli numerici

Queste qualità sono naturalmente attraente per gli ingegneri non programmatori e scienziati che vogliono solo un modo per rendere un computer danno risposte rapidamente. Ma ha un sacco di limitazioni basate sulla sua età e alcuni dei suoi presupposti di base. Sono scettico su quanto facilmente i non programmatori possono capire alcune delle funzionalità aggiuntive di versioni successive di Fortran, pure.

C'è un linguaggio moderno che è così semplice come FORTRAN, altrettanto veloce per applicazioni matematiche, e meno limitato? O è la risposta Fortran 90, 95, 2003. . . ?

È stato utile?

Soluzione

  

In alternativa è la risposta Fortran 90, 95, 2003   . . . ?

Sì. Fortran 95 supportato dalla maggior parte dei compilatori è la lingua che si sta cercando. Tuttavia Fortran 2003 dispone di alcuni importanti miglioramenti (oltre inutili dal punto di vista del supporto OOP), che potrebbe essere utile. supporto del compilatore per il Fortran 2003 Standard .

Altri suggerimenti

Bene, io sono un ingegnere non-programmatore (qualunque cosa significhi, mi sembra di capire che non significa avere molti contatti con gli studi di scienze di computer) e ...

partically in continuazione al commento di JasonFruit sulla risposta di S. Lott:

Sì, lo standard ha aggiunto alcune caratteristiche da F90 al 2003. Ma il "problema", se si può chiamare tale (non riesco a pensare o cura di di una parola più appropriata) è che molte persone che fanno uso di Fortran non lo sanno, salvare le caratteristiche di base di cui hanno bisogno. E 'una benedizione e una maledizione tutto in uno, in un certo senso. Non hanno mai imparato, non ha mai letto un libro su di esso - che genere di appena raccolto in su come sono andati avanti. In questo modo può certamente lavorare per un certo tempo (se strutturare i programmi semplicemente, come molti hanno fatto per secoli, e hanno una sorta di disciplina mentale, questo approccio può durare per tutta la vita / tutta la tua carriera), ma dopo un po 'inizia per mostrare i suoi disadvanages. Provate ad esempio, in seguito ad alcune delle discussioni sulle caratteristiche recenti su comp.lang.fortran per testare la vostra conoscenza.

Quindi, prendere un buon libro (molti raccomandare uno dei tre per i principianti; a) di Chapman J. Stephen b) del Maine, oppure c) Metcalf, Reid e Cohen (noto come il "libro MRC") - dopo di che un gran parte del "più oscuri" non presenta solo diventano più chiare, ma anche "ovvio" (come in un modo;? questo è davvero il modo migliore - perché ho fatto in quel modo ... prima ).

che si occupa di tale questione. Ora, l'altra questione - che certanly sorgere - vale la pena Fortran imparando al giorno d'oggi? ( sempre fa, la fiducia di me su questo:) . Questo è stato coperto numerose volte, quindi mi limiterò a dirigo a la mia posta per quanto riguarda quanto sopra, e il mio post precedente (dovrete scorrere un po 'giù), che riguarda alcuni problemi in confronto con alcuni degli altri langugages menzionati qui.

L'ultima cosa, che è in un certo senso la causa di tutte queste domande nella maggior parte dei casi è la gente parere sul Fortran, con l'accento sulla parere! In linea generale (e siamo in grado di prendere questo forum come un buon campione abbastanza per la nostra analisi) è che non è così buono. Pochi come lui [domande di follow segnate FORTRAN su questo forum per un mese, e imparerai presto chi sono. Btw, a giudicare dalla frequenza il tuo nome è stato comparendo, si sta rapidamente diventando un membro del club :)], la maggior parte sono indifferenti, e altri l'odiano, per pura ignoranza (confrontando F66 con i linguaggi di oggi è spesso usato), alcuni fuori le loro ragioni. Ora, se prendiamo quelli e lo confrontiamo con la popolazione generale, per semplice un account, il risultato è destinato a venire fuori male. Se intervistato solo tecnici tradizionali i risultati sarebbero molto diversi.

Thhhh-aaa-TTT è tutto.

Oh, un'altra cosa - Fortran è / era e rimane ancora in primo luogo rivolto a ingegneri, non matematici. Esso è più adatto per risolvere grandi sistemi, calcolando poi pi di un decimale ka-zi-llionth. Non so se questo era un errore di battitura nella tua domanda, o intenzionale. Per le applicazioni puramente matematici (in senso classico del matematico) vorrei (se fossi una parte di quel campo) probabilmente scegliere, non lo so, Mathematica? O Pascal (non so perché era sempre Pascal, ma sembra terribilmente popolare con quelle screpolature).

Sono sorpreso che il consenso qui è per Fortran moderna, e io sono d'accordo con riluttanza.

Qualunque siano le sue mancanze, Fortran è l'unica lingua fuori essendo progettato esplicitamente per la programmazione scientifica. programmazione scientifica è sia più sottile (per riga) e meno complicato (nella struttura) rispetto, ad esempio, un server web, e ha solo bisogno di strumenti diversi. raccolta dei rifiuti, per esempio, non è quasi mai utile per la soluzione di grande 2d / 3d PDE dove i vostri strutture di dati primari sono fissi.

Ogni linguaggio di programmazione che non ha nemmeno multi-d array come oggetti di prima classe può essere liquidato immediatamente per la programmazione scientifica. e questo è tutto dei linguaggi C-based. Qualsiasi linguaggio di programmazione che è intrinsecamente dio terribile lento - Java, sto guardando a voi - può essere licenziato immediatamente. Qualsiasi linguaggio di programmazione che è proprietario e richiede migliaia di dollari di licenza tasse - Matlab -. Può essere respinta immediatamente

Python e lingue affini sono buone per la prototipazione, e la stampa è facile, e una volta che hai funzionare le cose in grado di scrivere i noccioli numeriche in linguaggi compilati per la velocità; ma soffre ancora della mancanza di matrici reali (Numpy è buona, ma non eccezionale) ed è s..l..o..w.

Tra l'altro - non mai dai libri Numerical Recipes. Sono stronzate, gli algoritmi piantano sono obsolete, e il codice varia da scarsa a male. Prendere un vero e proprio corso di algoritmi numerici - c'è buoni on line - o comprare un vero algoritmi numerici prenotare - e per l'amore di Dio, non digitare il codice da un libro per fare algebra lineare o qualsiasi altra cosa; utilizzare i miliardi di biblioteche, di qualità professionale veri là fuori.

Per la risposta più diretta alla tua domanda, penso che kemiisto 's risposta è corretta, con i caveat identificati da Idigas .

Detto questo, ho trovato più del mio codice numerico che entrano in contatto con le cose come FTP, web, e più vicino alla grafica. Ho visto MATLAB suggerito in un'altra risposta, ma ho scritto sempre più Python (con NumPy) e chiamando a Fortran quando ho bisogno la velocità. Avevo quasi certamente non scrivo un intero sistema (ad esempio un intero modello di previsione del tempo numerico) in questo modo, ma non mi permette di avere il meglio dei due mondi per molti aspetti.

O è la risposta Fortran 90, 95, 2003. . . ? Sì. Per il calcolo scientifico, Fortran> = 90 rimuove le limitazioni di FORTRAN 77. Ulteriori informazioni su come utilizzare le matrici allocatable avere array di considerevoli dimensioni in modo dinamico. Scopri come utilizzare i moduli per organizzare le procedure e le variabili - e facilmente fornire la coerenza tra il controllo automatico argomenti attuali e fittizi. A partire dal 77 FORTRAN, si può gradualmente imparare Fortran 90/95/2003, utilizzando a seconda di quale caratteristiche sembrano utile a voi. Non è necessario imparare le caratteristiche OO e può ignorare quella parte della lingua, fino a quando forse un giorno che offre utility per voi.

Vi consiglio il libro Metcalf, Reid e Cohen.

Si può essere alla ricerca di MATLAB. Molti studenti ingegnere imparano che quindi penso che sia facile per i non programmatori di Grok.

Se si desidera ottenere hardcore, date un'occhiata alla J .

Credo che Fortran 95 dovrebbe essere la vostra scelta sembra più moderno e si estende Fortran 77 in modo significativo. Lo standard Fortran 2003 non è completamente supportato dalla maggior parte dei compilatori. Il grande vantaggio di Fortran è che c'è una subroutine ottimizzata per ogni problema matematico (come constatazione radice, moltiplicazione di matrice, problemi agli autovalori, ecc). Altre persone citate librerie legacy e LAPACK è solo un esempio molto potente. Un grande svantaggio di Fortran è che nessuno sta usando nel mondo reale.

Il miglior libro intorno è il mio parere "Fortran 90/95 per scienziati e ingegneri".

Naturalmente tutti gli altri suggerimenti sono validi, ma MATLAB non è libero mentre Fortran è.

Python è gratuito e ha il supporto per un sacco di applicazioni scientifiche attraverso pacchetti extra come Numpy e SciPy. Pitone è comunque piuttosto lento quando si tratta di prestazioni numerico. E 'probabilmente una buona opzione per progetti di piccole dimensioni che non richiedono un sacco di potenza di calcolo. La sintassi è molto facile da capire.

C è, naturalmente, anche un'opzione gratuita e ha un sacco di (in continuo aggiornamento) biblioteche scientifiche disponibili. Tuttavia, quando si tratta di leggibilità non può battere Fortran. Fortran è ben set-up per il lavoro con i vettori e matrici.

C ++ è un superset di C quindi è sicuramente anche una scelta possibile. Tuttavia, è un linguaggio che potrebbe essere quella complessa per i problemi che si sta guardando. Il numero di librerie scientifiche C ++ è piuttosto limitata. Ci sono alcuni in giro ma non possono battere le versioni Fortran (o sono solo involucri di quelli). E 'probabilmente una buona opzione per molto grandi progetti, ma alcuni molto grandi programmi che girano sui computer più veloci del mondo sono scritti in Fortran. C ++ è sicuramente la pena di apprendimento in quanto è utilizzato per una vasta serie di applicazioni del mondo reale.

Ci sono naturalmente altre lingue o strumenti, ma penso che questi sono i più comunemente utilizzati in discipline scientifiche.

Se sei veramente entusiasti utilizzando Fortran, si potrebbe considerare l'utilizzo di Fortran per Microsoft.NET . L'idea alla base di questo progetto è che permette di utilizzare il Fortran lingua , mentre approfittando di un ambiente di codice mangaged attraverso il Common Language Runtime (CLR).

@ S. Lott: Non può immaginare utenti Fortran, come scienziati, dover passare più e scaricare tutto il loro lavoro Fortran .....: S Il PO è alla ricerca di input su ciò che c'è di nuovo ...

Per l'OP: Hai letto su Wikipedia che dettaglia le modifiche apportate al Fortran, per la versione del 2003, consente l'interoperabilità con C, così forse S. Lott ha ancora un punto, forse, a poco a poco, con delicatezza porta alcune cose sopra o scrivere un wrapper in C per chiamare i moduli Fortran? Io cito da quella pagina di Wikipedia ...

  

L'interoperabilità con il linguaggio di programmazione C.

Ho lavorato di recente con un sacco di Matlab, e posso vedere i suoi benefici oggi. Si è è lento, perché è un linguaggio interpretato, ma è algoritmi di matrice sono veloci. E mi piace esattamente a causa di questo comportamento. La lentezza del per cicli e l'esecuzione delle operazioni di matrice si incoraggiano a pensare in modo più matematico invece di attaccare al ciclo programmazione orientata. Ma posso d'accordo che Matlab può essere respinto, perché non è aperto.

Al momento non vedo l'ora alla lingua Julia. E 'fortemente ispirato Matlab, tranne che non vuole essere veloce. Inoltre ha tipi statici che è anche un vantaggio molto grande. Ma Julia è ancora molto giovane, quindi non aspettatevi che fa già soddisfare tutte le vostre esigenze.

  

semplice da imparare (complicazioni object-oriented o funzionali-programmazione)

     

Di facile lettura

     

Blazing veloce a elaborazione di calcoli numerici

Suoni come C.

Vendo Numerical Recipes in C che praticamente copre tutte le basi di uno stile chiaro e leggibile.

http://www.amazon.com/Numerical-Recipes-Art-Scientific -Computing / dp / 0521431085

presumo che si stanno prendendo in considerazione i piccoli, programmi dedicati scritti per risolvere problemi specifici. In tal caso, se la complessità delle OO davvero infastidito avevo appena scritto un C # o Java app e non uso OO. Visual Basic dovrebbe essere maledettamente veloce in questi giorni pure.

lingue Quasi tutti compilati saranno matematicamente rapido in questi giorni, tutte le operazioni vengono eseguite sul coprocessore matematico - in modo meno che non abbiate trovato qualche lingua da particolarmente carente non vorrei che tutte le lingue "velocità di matematica" mi preoccupa molto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top