Welche Version von Fortran soll ich lernen?

17

Ich bin ein Maschinenbaustudent, der sich für den Bereich Luft- und Raumfahrttechnik interessiert, in dem Fortran noch immer gebräuchlich ist.

In welche Fortran-Version soll ich meine Zeit investieren, um zu lernen?

user26358
quelle
Keine vollständige Antwort wert, aber es ist erwähnenswert, dass die Compiler-Unterstützung für die neuesten Fortran-Funktionen stark fehlt. Siehe fortranwiki.org/fortran/show/Fortran+2003+status und fortranwiki.org/fortran/show/Fortran+2008+status. Ich beginne mit 90/95 und arbeite mich nach Bedarf vor.
Doug Lipinski
Nachdem Sie einige Gedanken zu diesem Thema geschrieben haben, lesen Sie bitte stackoverflow.com/questions/953869/… stackoverflow.com/questions/3549702/…, ob dies von Nutzen sein kann. Abgesehen von den oben genannten würde ich empfehlen, F90 dann Funktionen zu lernen, wie Sie sie benötigen.
Turm
1
Beachten Sie, dass Matlab aus Fortran stammt. Aufgrund Ihrer Kommentare würde ich Ihnen empfehlen, diese Option zu bewerten.
Dennis Jaheruddin
2
Solltest du Fortran überhaupt lernen ? Dies hängt möglicherweise von der Menge des zu verwendenden Legacy-Codes ab, der auch die Version von Fortran vorgibt, die Sie lernen sollten.
Damien

Antworten:

27

Es ist ein bisschen eine populäre Fehlbezeichnung, dass es eine "Version" von Fortran zu wissen gibt. Mit seltenen Ausnahmen behalten die neuesten Fortran-Standards (und Compiler) eine hervorragende Abwärtskompatibilität mit älteren Standards bei. Dies hat einen guten Grund: Nicht viele Menschen würden Fortran heute verwenden, wenn nicht die große Menge an noch verwendetem Legacy-Code vorhanden wäre. Das heißt, ein standardkonformer Fortran77-Code funktioniert fast immer noch mit den neuesten Compilern.

Sie sollten lernen, die modernste Version der verfügbaren Sprache zu verwenden. F2008 hat einem Anfänger vielleicht nichts fürchterliches Nützliches hinzugefügt, aber die Einführung objektorientierter Konzepte durch F2003 ist definitiv eine große Sache. "Modern Fortran Explained" ist ein guter Anfang, und "Scientific Software Design: Der objektorientierte Weg" ist auch ziemlich gut, um zu lernen, wie man es in die Praxis umsetzt.

Wenn Sie an Legacy-Code (z. B. F77 oder früher) arbeiten möchten, müssen Sie an einem bestimmten Punkt einige der Funktionen kennenlernen, die aufgrund fehlender F90 + -Funktionen ausgeführt wurden. Wenn Sie beispielsweise Fortran-Code für etwas schreiben, sollten Sie niemals einen so genannten "COMMON-Block" verwenden, aber Sie werden sie immer in F77-Code sehen, den Sie möglicherweise verwenden müssen.

Ich würde niemals jemandem empfehlen, in Fortran zu arbeiten, ohne zumindest die F90 / 95-Features zu haben.

Das heißt, wenn Sie nicht in einer anderen Sprache programmieren können, werden Sie wahrscheinlich einen Konsens darüber finden, dass Fortran nicht die beste Sprache ist, die Sie als erstes lernen können, selbst wenn Sie sich für die Luft- und Raumfahrt interessieren. (Und ich sage das als jemand in der Luft- und Raumfahrt, der Fortran regelmäßig verwendet und es als meine Muttersprache hatte).

Aurelius
quelle
2
+1 "Ich würde niemals jemandem empfehlen, in Fortran zu arbeiten, ohne zumindest die F90 / 95-Features." . Ich stimme dem zu. Beginnen Sie mit F90, lernen Sie alle grundlegenden Funktionen kennen, üben Sie ein paar Programme und fahren Sie dann mit neueren Releases fort
Tymric
Wenn nicht Fortran, welche Sprache ist es wert, gelernt zu werden, und wird es praktisch sein, sie im Ingenieurwesen zu verwenden? Wie geht es Matlab? Ich brauche es für einen Kurs, an dem ich nächstes Semester teilnehme.
User26358
@ user26358 Python für die allgemeine Programmierung hat in der Wissenschaftsgemeinschaft eine Menge Zugkraft. R zur statistischen Auswertung. MATLAB, Mathematica oder Maple (unabhängig von Ihrer Klasse) für das numerische Rechnen. SQL für relationale Datenbanken. Javascript für das Internet und weil es zur Verkehrssprache wird. Ich würde mich nicht mit Fortran beschäftigen, bis einer von denen den Job nicht erledigt hat. Es ist keine angenehme Sprache, als erster zu lernen.
Schwern,
@ Aurelius, ich stimme deinem letzten Absatz zu. Ich glaube, der richtige Weg, um wissenschaftliches Programmieren zu lernen, ist genau das Gegenteil, das ich erlebt habe: Python-> C ++ und für den Fall, dass Sie es brauchen, Fortran.
Nicola Cavallini
@ user26358 Matlab ist gut und du wirst es wahrscheinlich verdammt oft in der Schule benutzen. Python ist ein guter Ort, um mit der allgemeinen Programmierung zu beginnen, und seine Numpy / Scipy-Module können die meisten Dinge tun, die Sie wahrscheinlich in Matlab tun werden, und es ist ein guter Ort, um die Grundlagen des Schreibens von Software zu erlernen. Sie sollten auf jeden Fall auch mindestens eine kompilierte Sprache dabei haben. C ++ wäre die beliebteste Wahl.
Aurelius
1

Ich bin mit euch beiden nicht einverstanden. C ++ und Python sind immer noch nicht so optimiert wie FORTRAN. Ich würde definitiv zustimmen, dass FORTRAN 90/95 das Minimum ist. Es ist jedoch immer nützlich, andere modernere Versionen zu verwenden. Die Herausforderung bei FORTRAN besteht darin, dass es einfach zu verstehen ist, wenn Sie es lernen, bevor Sie objektorientierte Sprachen lernen. Es ist viel schwieriger zu lernen, wenn Sie es gewohnt sind, mit Objekten zu denken. Ich unterrichte hier die Supercomputing-Klasse und zwinge meine Schüler, FORTRAN zu verwenden. Es zwingt sie, beim Programmieren eine andere Art von Logik zu verwenden. Sie mögen es nicht, weil es nicht wie Python oder C ++ "denkt". Es kommt wirklich darauf an, was Sie vorhaben und wie viel Parallisierung und Leistung von Bedeutung sind.

tmwitten
quelle
Willkommen bei SciComp.SE. Dies ist eher eine Meinung als eine Frage für die Website. Wenn Sie der Meinung sind, dass Fortran [...] sie zwingt, bei der Programmierung eine andere Art von Logik zu verwenden, sollten Sie das Argument ausarbeiten und uns mitteilen, warum dies so ist. Und auch, was ist diese "Art von Logik", die Sie erwähnen.
nicoguaro
2
@tmwitten: Soll diese Antwort ein Kommentar sein? Es ist wahrscheinlich zu lang, um ein Kommentar zu sein, und sieht aus dem Zusammenhang heraus wie eine Nicht-Sequenzierung aus (z. B. werden C ++ und Python in der Frage nicht erwähnt, "Sie beide" scheinen sich auf Nicola und Aurelius zu beziehen).
Geoff Oxberry