Fortran lernen

9

Ich habe mich gefragt, wie ich am besten lernen kann, wie man in Fortran programmiert.

Ich habe nach Büchern gesucht. Die Beispiele, die mir in Ordnung erschienen, waren "Fortran 95/2003 Explained" und "Fortran For Scientists And Engineers" .

Ich weiß nicht, was ihr darüber denkt?

Eine andere Sache, über die ich mich frage, ist, welchen Compiler ich verwenden soll? Ich arbeite auf einem Windows 7-Computer (64-Bit).

Ich hoffe ihr könnt mir dabei helfen!

Also für meine Erfahrung mit der Programmierung:

  1. Matlab und Maple waren nett von meinen ersten Einführungen in die Programmierwelt. Matlab ist ein Programm, in dem ich eigentlich ziemlich gut bin. Ich habe den Dreh raus, mit Loops zu arbeiten und wie man diese kombiniert, um effektivere Programme zu erstellen. Maple befindet sich eher in der Grundphase (ich weiß, wie man die Lösung für einfache Integrale usw. sucht).
  2. Ein Jahr später erhielten wir eine Einführung in C ++ in Visual Basic. Der Professor ging tatsächlich zu schnell, nach 2 Monaten diskutierten wir bereits über Hinweise und Vererbung. Ich kann einfache Programme in dieser Sprache schreiben, nur die Arbeit mit Klassen ist eine Schwierigkeit, aber ich glaube, das ist nur eine Frage der Übung.
  3. Und ein Jahr später musste ich Mathematica 8 lernen, was ich heutzutage auch sehr gut kann.

Ich habe also ein bisschen Programmier-Erfahrung, aber ich werde nicht sagen, dass es eine unglaubliche Menge ist!

Der Grund, warum ich Fortran lernen möchte, ist hauptsächlich, dass Sie theoretische Physik nicht alleine machen können, dass Sie Ihre Theorien testen müssen und dass Sie in der Lage sein müssen, Programme zu schreiben, die diese Theorien möglicherweise numerisch testen können. Ich habe gehört, dass Fortran eine gute Sprache für die numerische Mathematik ist, daher denke ich, dass es nützlich wäre, diese Sprache zu kennen.

ps: was ist der unterschied zwischen fortran95 und fortran 2003?

Nick
quelle
3
Können Sie etwas genauer sagen, woher Sie kommen und wohin Sie wollen? Wissen Sie bereits, wie man programmiert, dh welche anderen Programmiersprachen kennen Sie? Und was möchten Sie in Fortran tun können?
Pedro
Ja, vielleicht hätte ich es in meiner Frage erwähnen sollen, erlaube mir zu bearbeiten :) @Pedro
Nick
1
Ich weiß, dass es die Frage nicht beantwortet, aber ich muss Ihnen dringend empfehlen, Python über Fortran zu verwenden, wenn Sie als Anfänger keine besonderen Leistungsanforderungen haben. Sie werden weniger Kopfschmerzen haben, wenn Sie sich mit der eigentlichen Mathematik und Theorie befassen, da Python Sie weniger anschreit. Es hat auch unglaubliche Pakete, die viel numerische Mathematik sehr einfach machen (Suche SciPy, Numpy, Matplotlib). Diese Tools machen Python in seiner Verwendung MATLAB sehr ähnlich, aber Sie haben auch eine ganze Sprache, um eine gute Software als ewll zu erstellen. Ganz zu schweigen davon, dass es Open Source ist.
Hadesed
1
Fortran 95 ist ebenfalls Matlab-ähnlich und ein ISO-Standard. Viele Leute, die Python verwenden, schreiben rechenintensive Kernel in C / C ++ (sogar Fortran), was bedeutet, dass Sie jetzt nicht nur eine, sondern zwei Sprachen lernen müssen. Eine für die Leistung und die andere für die Bequemlichkeit / Benutzerfreundlichkeit.
stali

Antworten:

4

Ich gehe auf die Empfehlung von Stali zu Chapmans Buch ein. Ich habe aus Chapmans Fortran 90-Buch gelernt und es war sehr hilfreich. Es wird Ihnen die Fortran-Sprache beibringen. Es wird Ihnen nichts über gute Workflows für das Programmieren beibringen, und dafür sollten Sie sich anderswo umsehen, nachdem Sie Fortran gelernt und ein wenig programmiert haben.

Die meisten Online-Ressourcen, die Sie bei der Fortran-Programmierung unterstützen, werden Linux-basiert sein. In ähnlicher Weise werden in der Computerwissenschaft die meisten schriftlichen Materialien auf Linux-Benutzer ausgerichtet sein. Aus diesem Grund empfehle ich dringend, VirtualBox (oder eine Software, mit der Sie virtuelle Betriebssysteme ausführen können) zu installieren und dort eine Linux-Distribution zu installieren. Wenn Sie noch nie Linux verwendet haben, ist eine benutzerfreundliche Distribution wie Ubuntu, Mint oder Fedora wahrscheinlich die beste Wahl. Diese Distributionen erfordern ein Mindestmaß an Konfiguration, wenn sie in einer virtuellen Umgebung ausgeführt werden, und verfügen über eine gute Benutzeroberfläche, mit der Sie im Betriebssystem navigieren können. Jede dieser Distributionen verfügt über einen Paketmanager, mit dem Sie zusätzliche Software installieren können. Mit dem Paketmanager können Sie gfortran installieren.

Sie möchten Software in einem Texteditor (oder einer IDE) entwickeln, daher lohnt es sich wahrscheinlich, die Grundlagen der Befehlszeile zu erlernen. Software Carpentry verfügt über gute Ressourcen für diese Aufgabe. (Haftungsausschluss: Ich habe einen Teil eines Workshops für Software Carpentry unterrichtet.) Dann sollten Sie in der Lage sein, das Schreiben einfacher Programme zu erlernen und diese über die Befehlszeile zu kompilieren und dann die Verwendung von Makefile zu lernen.

Das Problem bei Windows-basierten Aktionen besteht darin, dass die meisten Online-Materialien, die Sie bei der Durchführung von Computerwissenschaften sehen, davon ausgehen, dass Sie Linux verwenden, und dass der Rat (wenn er von Anfang an gut war) nicht mehr funktioniert runter und kostet dich Zeit. Cygwin ist eine API-Schicht, die mehr Linux-ähnliche Funktionen hinzufügt, aber die Korrespondenz mit Linux ist nicht perfekt, und für Linux kompilierte Software funktioniert auf Ihrem Computer nicht. Sie müssen weiterhin Windows-native Versionen herunterladen oder die Software für Windows neu kompilieren. Ein Windows-nativer Fortran-Compiler wie Visual Fortran wird Geld kosten, und Sie werden immer noch das Problem haben, dass die meisten Fortran-Benutzer und Computerwissenschaftler Linux für ihre Softwareentwicklung verwenden, was bedeutet, dass Sie Ihre Fortschritte vorantreiben müssen besitzen. Allerdings, wenn Sie wirklich müssenVerteilen Sie Windows-basierte Software aus irgendeinem Grund. Dann ist es sinnvoll, alle Anstrengungen zu unternehmen, um herauszufinden, wie Sie etwas wie Visual Fortran verwenden können.

Geoff Oxberry
quelle
Danke für den Hinweis! Aber ich frage mich, ob ich anstelle einer virtuellen Maschine nicht einen Dual-Boot-Mechanismus erstellen kann, bei dem ich wählen kann, ob ich zuerst Windows 7 oder Linux Ubuntu starte. Ich glaube, es könnte mir tatsächlich viel Zeit sparen! Und wenn ich zu Windows wechseln musste, habe ich die Programmiererfahrung der Linux-Version, mit der ich die Schritte unter Windows viel schneller ausführen kann!
Nick
Sie könnten, wenn Sie dies wünschen. Ich denke, das Dual-Boot-Setup ist weniger flexibel und erfordert mehr technisches Wissen und Zeit (möglicherweise müssen Sie die Größe von Partitionen ändern, einen Bootloader richtig einrichten usw.). Ich denke auch, dass virtuelle Maschinen einfacher auf eine neue Maschine zu migrieren sind. Dies kann hilfreich sein, wenn Sie Ihre Arbeit mit einem Kollegen teilen möchten oder wenn Sie einen neuen Computer erwerben und Ihre gesamte Arbeit dort migrieren möchten.
Geoff Oxberry
Ich fand endlich etwas Zeit, um alle notwendigen Schritte durchzugehen. Ich habe VirtualBox und Linux (Ubuntu) installiert. Jetzt habe ich mich gefragt, welcher der beste Compiler sein könnte. Ich kann nicht viel online über diesen Teil finden: s. Ich hörte jemanden Gfortran sagen?
Nick
2
Gfortran ist frei und wahrscheinlich der Weg des geringsten Widerstands. Die meisten anderen Compiler erfordern den Kauf einer Lizenz, mit möglichen Ausnahmen für den persönlichen oder akademischen Gebrauch. (Ich weiß, dass der Intel-Compiler beispielsweise nur kostenlos heruntergeladen und für den persönlichen Gebrauch verwendet werden kann. Einzelheiten müssen Sie über Lizenzen lesen.) HighPerformanceMark ist mit einer Website verknüpft, die Leistungsvergleiche für Compiler enthält.
Geoff Oxberry
6

Ich denke, dass das Metcalfe-Buch eine gute kommentierte Anleitung zu den modernen Funktionen von Fortran ist, sehr nützlich, wenn Sie bereits eine frühere Version der Sprache kennen, aber keine gute Einführung in die Programmierung in der Sprache.

Für mein Geld sind das Buch von Chiver und Sleightholme sowie das Buch von Brainerd beide gut genug, obwohl ich auch nicht denke, dass es so gut ist wie das Buch von Ellis et al. , Das leider nicht für Fortran 2003 oder später aktualisiert wurde.

Ich habe eine starke Abneigung gegen das Chapman-Buch. Ich kann mich nicht erinnern, warum ich die 90/95-Ausgabe so wenig mochte, also kann ich diese Abneigung nicht länger rechtfertigen, man kann sie als Vorurteil abwerten.

Aber das einzige Buch, das ich ohne zu zögern empfehle, ist das Buch von Arjen Markus . Es ist wahrscheinlich keine ideale Einführung für jemanden, der immer noch versucht, die Grundfunktionen der Sprache herauszufinden, aber wenn Sie diese beherrschen, lohnt es sich, eine wertvolle Substanz zu verwenden.

Was den zu verwendenden Compiler betrifft, verwende ich den Intel-Compiler und bin im Allgemeinen damit zufrieden. Es lässt sich in Visual Studio integrieren, was für Sie möglicherweise wichtig ist. Der NAG-Compiler hat bessere Fehler- und Warnmeldungen, erzeugt jedoch langsamere (im Allgemeinen und nach Ihrer Erfahrung abweichende) ausführbare Dateien. Der Gfortran-Compiler ist kostenlos und erhält genügend Bewertungen, aber ich verwende ihn nicht. Wenn Sie mehr wissen möchten, wird Polyhedron es Ihnen sagen.

Hochleistungsmarke
quelle
Das Markus-Buch hat ein großartiges Inhaltsverzeichnis.
AlexE
Ja, das Markus-Buch scheint in der Tat ein großartiges Buch zu sein, also werde ich es auf jeden Fall in Betracht ziehen! Für den Compiler brauche ich nur etwas mit schnellen ausführbaren Dateien (keine Integration mit Visual Studio erforderlich).
Nick
Ich denke, der Intel-Compiler wird allgemein als schnell angesehen.
AlexE
3

Für Bücher empfehle ich "Modern Fortran Explained" von Metcalf / Reid / Cohen. Es ist eher eine Referenz als ein Lehrbuch, aber es wird Ihnen gute Dienste leisten, wenn Sie bereits mit der Programmierung im Allgemeinen vertraut waren (z. B. C).

Neben diesem Buch empfehle ich dringend die Website von Ondřej Čertík http://fortran90.org/ . Es wird Ihnen Fortran nicht in erster Linie beibringen, aber es wird Ihnen eine Reihe von Best Practices bieten. Fortran bietet verschiedene Programmiermöglichkeiten - es ist schließlich abwärtskompatibel. Die dort angegebenen Best Practices helfen Ihnen dabei, einen konsistenten, modernen Fortran-Stil zu entwickeln. Auch die dort gefundenen FAQ werden Sie interessieren.

AlexE
quelle
2
Upvoted für die F90 Best Practices-Seite, das war auch für mich sehr hilfreich.
Daniel Shapero
2

Chapmans Buch ist meiner Meinung nach für Neulinge freundlicher und eine gute Referenz. Die Autoren des zweiten sind alle Experten, aber ich denke, das Buch wird zu einem späteren Zeitpunkt eine gute Ergänzung Ihrer Bibliothek sein.

Für den Anfang würde ich vorschlagen, dass Sie sich an Fortran 95 halten und später (falls erforderlich) zu Fortran 2003 wechseln. Fortran 95 ist leicht zu erlernen (fast wie Matlab) und Sie werden sehr schnell produktiv sein.

Unter Linux gibt es eine Reihe kostenloser Fortran-Compiler (GNU, Solaris Studio, Open64 usw.) sowie eine umfangreichere Reihe von Tools, z. B. valgrind, gdb, gnuplot (für schnelle Informationen), svn / hg usw. vorkompilierte Pakete mit numerischen Bibliotheken (blas / lapack / netcdf / fftw usw.) sind nur einen Befehl entfernt (zumindest unter Debian mit apt-get).

Unter Windows sind Sie mit Cygwin möglicherweise besser dran, da Sie zusätzlich zum GNU Fortran-Compiler einfach und schnell auf einige der oben genannten Tools / Bibliotheken zugreifen können. Also ja, gehen Sie zu cygwin.com und installieren Sie das Kernpaket zusammen mit gfortran und einem Editor Ihrer Wahl (vim ist gut). Das sollte ein guter Anfang sein. Wenn Sie später noch etwas anderes haben, würde ich vorschlagen, das apt-cyg- Paket für die Installation zu verwenden.

stali
quelle
1
Ich empfehle vim (oder auch emacs) nicht als ersten Texteditor. Es gibt zu viele wesentliche Funktionen (Ausschneiden, Kopieren, Einfügen, Suchen, Suchen / Ersetzen), die nicht intuitive Tastenkombinationen beinhalten, um sie als ersten Texteditor zu verwenden, und all diese zusätzlichen, ungewohnten Schritte, die ein neuer Lernender unternehmen muss, um etwas Einfaches zu tun ist sowohl entmutigend als auch ablenkend von allem, was sie versuchen (was, wenn Sie einen Texteditor empfehlen, wahrscheinlich eine Form der Softwareentwicklung ist).
Geoff Oxberry
1
Als erster Editor empfehle ich ein Tool, das der einzige Editor sein kann, den Sie jemals benötigen, und nicht eines, aus dem Sie in 3 Wochen, 3 Monaten oder sogar 3 Jahren herauswachsen werden. Aus diesem Grund sind sowohl Emacs als auch Vim geeignete Ersteditoren. Sicher, sie haben vielleicht eine anfänglich steilere Lernkurve als andere, aber sehr viele Programmierer haben diesen Preis bezahlt und fanden, dass sich die Belohnungen lohnen.
High Performance Mark
Ihr Kommentar führt zu einer falschen Wahl: Lernen Sie vim / emacs und haben Sie einen Editor, den Sie trotz der steilen Lernkurve lebenslang verwenden können, oder verwenden Sie ein anderes leicht zu erlernendes minderwertiges Tool, aus dem Sie herauswachsen werden. Viele professionelle Programmierer verwenden andere Tools mit weniger steilen Lernkurven wie gedit, Sublime Text, TextMate, TextWrangler und andere und kommen gut miteinander aus. Vim und Emacs sind großartige Editoren - ich benutze beide -, aber sie sind nicht die einzigen, eindeutig überlegenen Optionen für die Programmierung (WolfgangBangerth ist auch ein gutes Argument für IDEs).
Geoff Oxberry