Seien Sie neugierig und lernen Sie: Modernes Fortran auf den Punkt gebracht
Fortschritte in Wissenschaft und Technik beruhen nach wie vor mehr als jede andere Sprache auf Fortran. Überrascht? Das sollten Sie nicht sein, obwohl viele Leute, die sich Programmierer nennen, Fortran noch nie gelernt haben. Ich werde dir Fortran in fünf Minuten oder weniger beibringen. Es wird nicht schaden und Sie werden wissen, was möglicherweise die wichtigste und einflussreichste Programmiersprache überhaupt ist.
Informatiker mögen sich so verhalten, als gäbe es Fortran nicht, aber die Populärkultur ( The Simpsons , Staffel 26, Folge 10) schnitt mit der weisen Beobachtung besser ab: „Fortran, die größte der Programmiersprachen!“ Tatsächlich mehr als die Hälfte der Berechnung Die leistungsstärksten Computer der Welt stammen aus Fortran. In einigen großen Systemen kann Fortran-Code für 80-100% der Berechnung verantwortlich sein.
Es ist auch unglaublich einfach zu lernen, wie Sie an dieser kurzen Einführung in die Fortran-Programmierung sehen werden. Ich gehe davon aus, dass Sie bereits wissen, wie man in etwas anderem als Fortran programmiert (wenn Sie mit dem Programmieren völlig neu sind, empfehle ich dringend, Fortran mit „A Fortran Coloring Book“ zu lernen).
Lass uns anfangen
Programm Hallo
print *, "Hallo Welt!"
Programm beenden Hallo
Geben Sie ein (verwenden Sie die Erweiterung .f95 oder .f90 für Ihre Datei), kompilieren Sie diese, führen Sie sie aus und es wird "Hallo Welt!" Das "*" in der print-Anweisung bedeutet im Wesentlichen, dass automatisch formatiert wird .
Mein zweites Beispiel macht einige Berechnungen und endet mit 'if / then / else'-Anweisungen:
Programm mymath
implizit keine
real :: answer, x, y, sum, prod, cubedx, cubedy
print *, 'Geben Sie zwei Zahlen ein (x und y)'
lies *, x
bereit
Summe = x + y
prod = x * y
cubedx = x ** 3;
Würfel = y ** 3;
print *, 'Die Summe x + y ist', Summe
print *, 'Das Produkt x * y ist', Art.-Nr.
print *, 'Cubed x and y', cubedx, cubedy
print *, 'Sinus von x und y', sin (x), sin (y)
wenn (x> y) dann
print *, 'Ich habe festgestellt, dass x größer als y ist'
sonst
print *, 'Es scheint, dass y nicht kleiner als x ist'
ende wenn
Programm beenden mymath
Sie werden vielleicht bemerken, dass ich "implizit keine" eingegeben habe. Das ist im modernen Fortran normal - es weist den Compiler an, dass Variablen explizit deklariert werden müssen, damit unbekannte Variablen als Fehler gekennzeichnet werden. Ohne sie geht Fortran davon aus, dass Variablen, die mit 'i' bis 'n' beginnen (die ersten beiden Buchstaben der Ganzzahl), Ganzzahlen sind und andere Gleitkommazahlen ('Real'). Das reduzierte die Anzahl der Karten, die wir vor Jahrzehnten schlagen mussten, ist aber in diesen modernen Zeiten allgemein verpönt.
Wenn Sie dieses Programm ausführen (und 3.14 und 1.57 eingeben), erhalten Sie Folgendes:
Geben Sie zwei Zahlen ein (x und y)
3.14
1,57
Die Summe x + y beträgt 4.71000004
Das Produkt x * y ist 4.92980051
Würfel x und y 30.9591484 3.86989355
Sinus von x und y 1,59254798E-03 0,999999702
Mir ist aufgefallen, dass x größer als y ist
Fortran wurde für Mathematik (FORmula TRANslation) entwickelt. Beachten Sie, dass „sin (…)“ integriert ist, ohne dass ein Header oder ein Paket enthalten sein muss. Natürlich unterstützt Fortran Gleitkomma- und Ganzzahlzahlen, aber auch komplexe Zahlen. Keine Zusatzstoffe erforderlich.
Mein drittes Beispiel betrifft Schleifen (in Fortran „do“ genannt):
Programmschleife
implizit keine
Ganzzahl :: i, j, behalte (100,2), w
w = 0
do i = 10, 50, 5
do j = i, 20, 5
print *, i, j
w = w + 1
behalte (w, 1) = i
behalte (w, 2) = j
Ende tun
Ende tun
mache ich = 1, w
print *, 'keep:', keep (i, 1), keep (i, 2)
Ende tun
Programmschleife beenden
Die Druckzeile in meinem Beispielprogramm wird nur ausgeführt, wenn die j do-Schleife ausgeführt wird. Die j-Schleife wird überhaupt nicht ausgeführt, wenn i 20 überschreitet. In diesem Beispiel werden auch Arrays mit der Verwendung eines Arrays mit dem Namen 'keep' eingeführt. Fortran beginnt mit der Array-Nummerierung bei '1' anstelle von Null. Dies ist die gleiche Art und Weise, wie Amerikaner Gebäudeetagen nummerieren (Etage 2 bezieht sich auf das Erdgeschoss, das als '1' angenommen wird). Andere Orte auf der Welt verwenden für ihre Gebäude eine auf Null basierende Nummerierung (der „erste Stock“ wird von den Amerikanern als „zweiter Stock“ bezeichnet), wie C und C ++ für Arrays. Die Ausgabe dieses Beispiels für die Programmschleife ist unten dargestellt:
10 10
10 15
10 20
15 15
15 20
20 20
behalten: 10 10
behalten: 10 15
behalten: 10 20
behalten: 15 15
behalten: 15 20
behalten: 20 20
In meinem letzten Beispiel definiere ich eine Unterroutine (Funktion) namens 'ave', um den Durchschnitt von drei Zahlen zu nehmen, die ich statisch definiere. Sie werden feststellen, dass ich faul geworden bin und nach dem Programm und der Funktion nur "Ende" geschrieben habe. Das ist in Ordnung, aber wenn Sie Namen verwenden, wie ich es zuvor getan habe, hilft der Compiler dabei, zu überprüfen, ob das Ende mit dem übereinstimmt, was Sie wollten.
Programmaufruf
implizit keine
real a, b, c
real av, avsq1, avsq2
echte ave
Daten a, b, c / 5,0,2,0,3,0 /
av = ave (a, b, c)
print *, 'Der Durchschnitt von', a, b, c, 'ist:', AV
Ende
reelle Funktion ave (x, y, z)
reelle x, y, z, Summe
Summe = x + y + z
ave = sum / 3.0
Rückkehr
Ende
Dies druckt:
Der Durchschnitt von 5.00000000 2.00000000 3.00000000 beträgt: 3.33333325
Ja, Fortran kann die Ausgabe formatieren. Wenn wir den obigen "Druck" wie folgt ersetzen:
print 8, 'Der Durchschnitt von', a, b, c, 'ist', AV
8 Format (a, 2 (f4.2, ','), f4.2, a, f7.5)
Die Ausgabe wird:
Der Durchschnitt von 5,00, 2,00, 3,00 beträgt 3,33333
Die Fortran-Formatierung kann auch in einer einzelnen Zeile erfolgen und hat dieselbe hübsche Ausgabe:
print "(a, 2 (f4.2, ','), f4.2, a, f7.5)", 'Der Durchschnitt von', a, b, c, 'ist', AV
Wenn Sie glauben gemacht wurden, Fortran sei komisch, wurden Sie in die Irre geführt. Ich habe all diese Beispiele in einer von Fortran-Programmierern als "freie Form" bezeichneten Form geschrieben. Das wurde offiziell Teil von Fortran mit dem 'Fortran 90'-Standard (daher meine Anweisung, .f90 oder .f95 als Dateierweiterungen zu verwenden; diese teilen dem Compiler ohne spezielle Optionsschalter mit, dass wir Freiform verwenden). Denken Sie daran, dass Benutzer 1956 etwas für Kartenstanzen wollten. Ich könnte stundenlang darüber sprechen, wie Fortran dies mit spaltenorientierten Formaten und Fortsetzungszeichen usw. berücksichtigt. Aber wie ich gezeigt habe, müssen Sie das wirklich nicht lernen, um Fortran-Code zu schreiben oder zu lesen.
Warum wird Fortran von Informatikern gemieden? Gute Frage. Fortran ist die älteste Sprache (um 1956). Es begann in einer Ära von Bändern, Lochkarten und dem Ersetzen von menschlichen Computern. Es ist älter als blockstrukturierte Programmierung, Parsing-Theorie und Grafik. Auf dem Weg dorthin erkundeten Informatiker Fortschritte im Computerbereich und führten Tausende von Programmiersprachen ein, von denen sich die meisten nicht durchsetzten. Dennoch ist in jedem Bereich menschlicher Bemühungen „raus mit dem Alten, rein mit dem Neuen“ in Mode. Informatik ist nicht anders.
Aber wenn das Knacken von Zahlen wichtig ist, ist nichts besser oder einfacher als Fortran. Ich schlage vor, wir sollten alle viele Werkzeuge kennen und das beste Werkzeug für den Job verwenden. Nur weil mein zuverlässiger Hammer schon lange in meinem Werkzeugkasten ist, heißt das nicht, dass ich ihn nicht für den richtigen Job brauche. Fortran ist nicht anders.
Fortran ist nicht nur die ursprüngliche Programmiersprache auf hoher Ebene, es ist lebendig, wichtig und weit verbreitet. Wer hat die Gerüchte gestartet, um etwas anderes vorzuschlagen?
Ressourcen
- Intel Fortran - wird häufig für x86 (Intel / AMD) verwendet und bietet hohe Leistung
- Sie können sich für einen kostenlosen Compiler (und andere Tools) qualifizieren.
- Testexemplare mit Option zum späteren Kauf erhältlich
- Die Beta 2018 läuft bis Juli 2018: Probieren Sie diese neueste und beste voll funktionsfähige Beta, einschließlich Fortran und verwandter Tools, bis dahin kostenlos aus: Intel Parallel Studio XE 2018 Beta - Jetzt beitreten
- GNU Fortran - breitere Unterstützung (viele Prozessoren, viele Systeme), geringere Leistung
- Open Source und kostenlos
- auf meinem MacBook Air… Ich musste nur „Brew Install Gcc“ sagen und bekomme Gfortran kostenlos
Klicken Sie hier, um Ihre kostenlose 30-Tage-Testversion von Intel Parallel Studio XE herunterzuladen