www.wikidata.de-de.nina.az
Fortran ist eine prozedurale seit 2003 auch eine objektorientierte Programmiersprache die insbesondere fur numerische Berechnungen in Wissenschaft Technik und Forschung eingesetzt wird Der Name entstand aus FORmula TRANslation dt Formel Ubersetzung und wurde bis zur Version FORTRAN 77 mit Grossbuchstaben geschrieben FortranBasisdatenParadigmen prozedural imperativ strukturiert objektorientiertErscheinungsjahr 1957Designer John W Backus Harlan HerrickEntwickler John W Backus IBMAktuelle Version Fortran 2018 ISO IEC 1539 2018 1 2018 Typisierung statisch starkWichtige Implementierungen GNU Fortran Intel Flang Open Watcom XL Fortran und andereBeeinflusst von Ratfor Fortran 77 Matlab Ada Fortran 90 Beeinflusste Algol 58 PL I BASIC CLizenz MIT Lizenzfortran lang orgIm August 2021 stand Fortran an dreizehnter Stelle der beliebten Programmiersprachen im TIOBE Index 2 Inhaltsverzeichnis 1 Geschichte 1 1 Versionen 1 2 Sprachelemente 1 3 Varianten 2 Eigenschaften 2 1 Arrays in Zuweisungen und Ausdrucken und intrinsische Array Funktionen 2 2 Implizite Variablendeklaration 2 3 Ubergabe von Argumenten 2 3 1 Bis FORTRAN 77 2 3 2 Modernes Fortran 2 4 Dynamische Speicherallokation 2 5 Coarrays 2 6 Objektorientierung 3 Compiler 3 1 Proprietare Software 3 2 Freie Software 3 3 Transcompiler 3 4 Sprachunterstutzung 4 Verfugbare Software und Programmbeispiele 4 1 Mathematische Bibliotheken 4 2 Programmbeispiele 5 Literatur zur Geschichte von Fortran 6 Literatur zu Fortran 7 Weblinks 8 EinzelnachweiseGeschichte BearbeitenFortran gilt als die erste jemals tatsachlich realisierte hohere Programmiersprache Sie geht zuruck auf einen Vorschlag den John W Backus Programmierer bei IBM 1953 seinen Vorgesetzten unterbreitete Dem Entwurf der Sprache folgte die Entwicklung eines Compilers durch ein IBM Team unter Leitung von Backus Das Projekt begann 1954 und war ursprunglich auf sechs Monate ausgelegt Tatsachlich konnte Harlan Herrick der Erfinder der spater heftig kritisierten Goto Anweisung am 20 September 1954 das erste Fortran Programm ausfuhren Doch erst 1957 wurde der Compiler fur marktreif befunden und mit jedem IBM 704 System ausgeliefert 3 Backus hatte darauf bestanden den Compiler von Anfang an mit der Fahigkeit zu Optimierungen auszustatten Er sah voraus dass sich Fortran nur dann durchsetzen wurde wenn ahnliche Ausfuhrungsgeschwindigkeiten wie mit bisherigen Assembler Programmen erzielt wurden Die Erreichbarkeit dieses Ziels wurde damals allgemein stark bezweifelt 4 Versionen Bearbeiten nbsp Listing eines FORTRAN 77 Programmes mit Compiler Output erstellt 1987 auf einer CDC 175 am Rechenzentrum der RWTH Aachen nbsp Lochkarte mit Vorbedruckung des historischen FORTRAN ZeilenformatsFortran wurde mehrmals erweitert Viele neue Sprachelemente wurden zunachst von einem einzelnen Hersteller eingefuhrt und spater in den internationalen Standard ubernommen Als Versionen folgten aufeinander FORTRAN I FORTRAN II FORTRAN IV FORTRAN 66 FORTRAN 77 Fortran 90 Fortran 95 Fortran 2003 Fortran 2008 und Fortran 2018 Ab FORTRAN 66 ist Fortran durch die ISO standardisiert Die Fortschreibung der Standards ist ein komplizierter Prozess der oft wesentlich langer dauert als zunachst angestrebt Der Nachfolger des 1978 erschienenen Standards FORTRAN 77 der als Fortran 8x bezeichnet wurde war ursprunglich fur das Jahr 1982 geplant spater dann fur das Jahr 1985 und wurde schliesslich unter der Bezeichnung Fortran 90 erst am 11 April 1991 als neuer Standard und Nachfolger von FORTRAN 77 angenommen 5 2018 wurde Fortran 2018 freigegeben Es wurden die Interoperabilitat mit C und Funktionen bezuglich der Parallelprogrammierung verbessert Weitere Neuerungen betreffen die Gleitkommaarithmetik auf Mikroprozessoren und die Ein und Ausgabe von Hexadezimalzahlen 6 Sprachelemente Bearbeiten Im Laufe dieser Erweiterungen wurden zahlreiche Sprachelemente aus spater entstandenen Programmiersprachen ubernommen Fruhe FORTRAN Versionen bis Version 4 hatten als Flusskontrollstruktur nur zwei verschiedene Goto Anweisungen und den Aufruf von Unterprogrammen Strukturierte Programmierung mit Schleifen wurde mit FORTRAN 77 moglich Mit Fortran 90 wurde neben dem aus der Lochkartenzeit stammenden festen Zeilenformat ein von spateren Programmiersprachen verwendetes freieres Format erlaubt Ab Fortran 90 werden Elemente eingefuhrt die auch beispielsweise in Ada vorhanden sind beispielsweise optionale Parameter und die Moglichkeit Prozedurparameter nicht nur uber die Position in der Parameterliste zu identifizieren sondern auch uber ihren Namen Seit Fortran 2003 werden auch polymorphe Datentypen und Vererbung unterstutzt so dass man objektorientiert programmieren kann Seit Fortran 2008 ist mit Coarray Fortran eine Parallelisierung in die Sprache eingebaut die dem PGAS Schema folgt Beispiel subroutine test argument1 argument2 argument3 real intent in argument1 character len intent in argument2 integer intent in optional argument3 Hier etwas Sinnvolles end subroutine test Mogliche Aufrufe sind dann z B call test 1 0 Tach call test argument1 1 0 argument2 Tach auch call test argument2 Tach Auch argument1 1 0 call test argument3 3 argument1 1 0 argument2 Tach auch Wahrend beim ersten Aufruf die Parameterassoziation uber die Reihenfolge der Parameter erfolgt so werden bei den anderen Beispielen die Parameter mittels der Namen identifiziert Bei letzteren spielt die Reihenfolge dann keine Rolle mehr Varianten Bearbeiten Einige von Fortran abgeleitete Programmiersprachen sind Ratfor F und HPF High Performance Fortran Eigenschaften BearbeitenFortran war und ist fur numerische Berechnungen vorgesehen und optimiert Von Anfang an hatte Fortran den Potenz Operator der in vielen anderen Hochsprachen nicht vorhanden ist und einen Datentyp fur komplexe Zahlen Mit Fortran 90 wurden Vektor und Matrix Operationen standardisiert Ausserdem ist Fortran case insensitive d h im Gegensatz zu Sprachen wie C oder C wird vom Compiler nicht zwischen Gross und Kleinschreibung unterschieden Es liegt im Stil des Programmierers ob er gross oder klein schreibt generell sieht man aber immer ofter z B in Lehrbuchern den Trend alles kleinzuschreiben Insbesondere fur wissenschaftliche und numerische Berechnungen gibt es in Fortran umfangreiche Bibliotheken die immer noch weit verbreitet sind auch wenn eine zunehmende Menge an Funktionalitat inzwischen nach C und C portiert wurde Arrays in Zuweisungen und Ausdrucken und intrinsische Array Funktionen Bearbeiten Arrays mit gleicher Zahl von Elementen und gleichem Rang konnen in Ausdrucken und Zuweisungen verwendet werden auch gemischt mit Skalaren real a 10 b 3 12 Deklariere zwei Arrays der Lange 10 read a Lies a ein b 2 a 3 a Elementweise Zuweisung write b Ausgabe von b Verschiedene Array Funktionen werden durch die Sprachnorm vordefiniert So gibt beispielsweise die Funktion MAXVAL den maximalen Wert eines Arrays zuruck und MAXLOC den Index des maximalen Wertes Die intrinsischen Funktionen DOT PRODUCT und MATMUL liefern das Skalarprodukt und die Matrixmultiplikation Implizite Variablendeklaration Bearbeiten In Anlehnung an mathematischen Notationsgebrauch sind Variablen in Fortran ohne Deklaration uber ihren Anfangsbuchstaben deklariert Bezeichner die mit einem der Buchstaben i j k l m n beginnen stehen fur eine Integer Variable oder einen Integer Funktionswert alle ubrigen Bezeichner stehen fur Gleitkommazahlen Diese implizite Typenvereinbarung von Variablen kann durch die Deklaration einzelner Variablen uberschrieben werden sie kann durch eine Zeile wie Alle nichtdeklarierten Bezeichner deren erster Buchstabe c oder z ist bezeichnen komplexe Zahlen implicit complex c z verandert werden und die implizite Vereinbarung kann durch den Befehl implicit none ganz aufgehoben werden was fur alle neuen Programme empfohlen wird In diesem Fall lost die Verwendung eines nichtdeklarierten Bezeichners einen Fehler wahrend der Ubersetzung aus Dadurch vereinfacht sich die Fehlersuche erheblich Ubergabe von Argumenten Bearbeiten Bis FORTRAN 77 Bearbeiten Bis einschliesslich FORTRAN 77 konnten Unterprogramme vor ihrer Verwendung nicht deklariert werden Es konnte durch eine Deklaration nur der Typ des Ruckgabewerts einer Funktion festgelegt werden Der Compiler uberprufte normalerweise nicht ob ein Unterprogrammaufruf mit typrichtigen Argumenten erfolgt Die Ubergabe von Argumenten an Unterprogramme subroutine oder function erfolgt ublicherweise per Adresse Eine automatische Typumwandlung findet nicht statt Die meisten Fortran Systeme fuhren auch keine Typuberprufung zur Laufzeit durch Das ist bei der Verwendung dieses veralteten Programmierstils eine haufige Fehlerquelle Programmbeispiel 1 call drucke zahl 3 14 subroutine drucke zahl meine zahl Im Unterprogramm drucke zahl ist meine zahl weil mit m beginnend implizit als Integer deklariert Zur Laufzeit erfolgt ein Aufruf mit dem real Argument 3 14 Dann wird die Integer Variable meine zahl mit den Bits der Gleitkommadarstellung von 3 14 aufgefullt was auf beliebig abwegige numerische Ergebnisse fuhrt Viele Fortran Compiler ubergeben Parameter per Referenz Das fuhrt teilweise zu nicht beabsichtigten Ergebnissen beispielsweise folgendes Programmbeispiel 2 program bsp bar call bar 4 print 4 end program bsp bar subroutine bar i i 42 end subroutine bar Dieses wurde bei manchen Compilern die Zahl 42 ausgeben Das Programm ist allerdings so nicht korrekt Programmierwerkzeuge wie ftnchek 7 ermoglichen eine separate Prufung der Ubereinstimmung von Argumentlisten und wurden in diesen Fallen warnen Aktuelle Compiler fuhren ebenfalls solche Uberprufungen durch oder erzeugen einen Laufzeitfehler bei der Zuweisung eines Wertes an eine Konstante diese beiden Prufungen waren schon seit 1970 am Rechner TR 440 verfugbar Modernes Fortran Bearbeiten In Fortran 90 und nachfolgenden Versionen besteht die Moglichkeit die Parametertypen der Unterprogramme anhand von Schnittstellen interface und Modulen module zu definieren Der Compiler kann somit uberprufen ob der ubergebene Parametertyp und der erwartete Typ ubereinstimmen Diese Bekanntgabe ist allerdings nicht zwingend wie das in anderen Programmiersprachen beispielsweise Ada der Fall ist Die von Fortran 95 abgeleitete Programmiersprache F erzwingt dieses in F sind nur Aufrufe von Unterprogrammen erlaubt deren Parameterliste beispielsweise durch use Anweisungen bekannt gemacht sind In einem Unterprogramm kann auch festgelegt werden ob ein Parameter Eingabeparameter intent in Ausgabeparameter intent out oder beides intent in out ist In Fortran 90 deklariert man das Unterprogramm bar folgendermassen subroutine bar i integer intent in i end subroutine bar Falls das Unterprogramm versuchen sollte den Wert des Aktualparameter i zu verandern wurde der Compiler einen Fehler anzeigen Weitherhin kann Fortran 90 Arrays einschliesslich ihrer Grossen ubergeben diese konnen dann im Unterprogramm verwendet werden subroutine foo x integer intent in dimension x print size x Gib die Grosse von x aus end subroutine foo Es dann konnen auch Teile von Arrays ubergeben werden z B mit program main integer dimension 20 x call foo x 1 10 2 end program main Dies ubergibt einen Array mit den Elementen x 1 x 3 x 5 x 7 x 9 an foo Dynamische Speicherallokation Bearbeiten Unter dynamischer Speicherallokation versteht man die Moglichkeit Speicher insbesondere fur Felder wie z B fur Matrizen erst zur Laufzeit des Programms anzufordern das heisst dass die Grosse von Arrays nicht bereits zum Zeitpunkt des Ubersetzens des Programms festgelegt zu sein braucht Ein einfaches Beispiel real allocatable a print Zeilen und Spaltenzahl eingeben read m n allocate a m n deallocate a Bis FORTRAN 77 ist eine dynamische Speicherallokation nicht oder nur uber nicht standardisierte Erweiterungen der Compilerhersteller moglich Ab Fortran 90 ist die dynamische Speicherverwaltung im Sprachstandard enthalten Ein anderes Beispiel fur dynamische Speicherreservierung Anlegen und Bearbeiten einer verketteten Liste type element t type element t pointer naechstes real datum end type element t type element t pointer save liste gt null type element t pointer element Anlegen eines Elements und Eintragen am Anfang der Liste allocate element element datum 471 1 0 element naechstes gt liste liste gt element Durchlaufen der Liste element gt liste do while associated element call bearbeiten element datum element gt element naechstes end do Coarrays Bearbeiten Fortran unterstutzt seit der Sprachversion Fortran 2008 Coarrays Ein Programm lauft in unterschiedlichen Instanzen die als images bezeichnet werden Jede Instanz kann auf lokale Variablen zugreifen Zugriff auf Variablen auf anderen Images wird uber Coarrays realisiert die wie ein normaler Array mit einem bestimmten Cosubscript angesprochen werden Bevor der Wert einer Variable verwendet werden kann der von einem anderen Image geschrieben wurde muss synchronisiert werden dies geschieht am einfachsten durch einen SYNC ALL Befehl Ein einfaches Beispiel In diesem Programm schreibt jedes Image eine Nachricht in das Element eines anderen Images program main implicit none character len 30 greetings integer me n you me this image n num images if me n then you me 1 else you 1 end if write unit greetings you fmt A I0 A I0 amp Gruesse von me an you sync all write A trim greetings end program main was dann mit vier Images beispielsweise die Ausgabe Gruesse von 3 an 4 Gruesse von 1 an 2 Gruesse von 2 an 3 Gruesse von 4 an 1 erzeugt Objektorientierung Bearbeiten Vererbung wird in Fortran durch Erweiterung von Typen realisiert In Fortran kann ein Pointer oder ein Argument eines Unterprogrammes ein CLASS Argument sein Falls erforderlich kann der Typ durch SELECT TYPE unterschieden werden type t1 integer i1 end type t1 type extends t1 t2 real r1 end type t2 subroutine foo a class t1 intent in a select type a type is t1 print Type ist t1 Wert ist a i1 type is t2 print Type ist t2 Werte sind a i1 a r1 class default print Das ist ein anderer Wert end select Methoden werden in Fortran als Type bound procedures bezeichnet type foo integer private i contains procedure add gt int add procedure subtract gt int subtract procedure get val gt int read end type foo Ein Benutzer der eine Variable x vom Typ oder der Klasse foo verwendet kann dann die Routinen foo add foo subtract und foo get val aufrufen der direkte Zugriff auf foo i ist durch das Schlusselwort private nicht moglich Compiler Bearbeiten nbsp UCSD FortranFortran Compiler gibt es fur praktisch alle Computer von Arbeitsplatzrechnern bis zu Supercomputern 8 Proprietare Software Bearbeiten Kommerzielle Anbieter von Fortran Compilern sind entweder Computerhersteller wie z B IBM SUN HP Intel oder spezialisierte Softwarehersteller wie Absoft NAG Lahey Salford Reine FORTRAN 77 Compiler werden heute zumeist nicht mehr hergestellt da FORTRAN 77 fast vollstandig im Sprachstandard Fortran 95 enthalten ist nur DO Schleifen mit REAL Iterationsvariablen und Hollerith Edit Deskriptoren sind in Fortran 95 und spater nicht mehr vorhanden Einige der oben genannten Compiler sind fur Privatanwender bzw nichtkommerzielle Nutzung unentgeltlich zum Beispiel die Linux Variante des Intel Fortran Compilers Sun Studio Express mit Fortran C und C Compilern fur Linux und Solaris fur Microsoft Windows der Compiler von Salford und DEC Fortran fur OpenVMS Freie Software Bearbeiten Ab Version 4 0 enthalt die praktisch fur alle Plattformen verfugbare GNU Compiler Collection GCC einen Compiler fur Fortran 95 GNU Fortran Altere Versionen von GCC enthalten noch den FORTRAN 77 Compiler g77 An dem freien Compiler G95 wurden die Arbeiten 2012 eingestellt er ist allerdings weiterhin verfugbar 9 Aus diesem ging 2003 gfortran als neuer GNU Fortran Compiler hervor Ab Version 4 4 Luna existiert eine integrierte Entwicklungsumgebung fur Eclipse 10 Auch die OpenWatcom Entwicklersuite verfugt uber einen FORTRAN 77 Compiler Transcompiler Bearbeiten Es gibt Transcompiler wie beispielsweise f2c zur automatischen Ubersetzung von Fortran 77 in C Der daraus erzeugte Quelltext ist allerdings kaum fur den Menschen lesbar Auch der NAG Compiler verwendet als Zwischensprache C allerdings ist die notige Laufzeitbibliothek nicht im Quelltext erhaltlich Sprachunterstutzung Bearbeiten Die meisten aktuellen Compiler unterstutzen den 2008 oder 2018 Standard 11 12 13 14 Verfugbare Software und Programmbeispiele BearbeitenMathematische Bibliotheken Bearbeiten Die Referenz Implementierung der BLAS Bibliothek die Grundoperationen der linearen Algebra zur Verfugung stellt ist in Fortran geschrieben und verwendet die API von Fortran 15 ebenso wie die auf BLAS aufsetzende LAPACK Bibliothek 16 Zahlreiche der bei Netlib verfugbaren Algorithmen sind in Fortran geschrieben typischerweise in alteren Dialekten Programmbeispiele Bearbeiten Zahlreiche Programmbeispiele finden sich bei den Webseiten Programming Idioms 17 und bei Rosetta Code 18 Literatur zur Geschichte von Fortran BearbeitenAnnals of History of Computing Vol 6 No 1 1984 ISSN 0164 1239 John C McPherson Early Computers and Computing Institutions S 15 16 doi 10 1109 MAHC 1984 10005 Herbert S Bright Early Fortran User Experience S 28 30 doi 10 1109 MAHC 1984 10011 Daniel N Leeson IBM Fortran Exhibit and Film S 41 48 doi 10 1109 MAHC 1984 10000 J A N Lee An Annotated Bibliography of Fortran S 49 58 doi 10 1109 MAHC 1984 10003 History of FORTRAN and FORTRAN II Sammlung prasentiert vom Computer History Museum englisch Saul Rosen Hrsg Programming Systems and Languages McGraw Hill New York NY u a 1967 Richard L Wexelblat Hrsg History of Programming Languages Academic Press New York NY u a 1981 ISBN 0 12 745040 8 S 25 74 FORTRAN Fachworterbuch In Blatter der Deutschen Gesellschaft fur Versicherungsmathematik Band 8 H 3 Oktober 1967 S 499 520 Literatur zu Fortran BearbeitenStephen J Chapman Fortran 90 95 for Scientists and Engineers 2 Auflage McGraw Hill Higher Education Boston MA u a 2004 ISBN 0 07 123233 8 Thomas Kuhme Peter Witschital Die FORTRAN Fibel Strukturierte Programmierung mit FORTRAN 77 Lehr und Arbeitsbuch fur Anfanger 3 durchgesehene Auflage Oldenbourg Munchen u a 1991 ISBN 3 486 22016 0 Michael Metcalf John Reid Malcolm Cohen Fortran 95 2003 Explained Oxford University Press Oxford u a 2004 ISBN 0 19 852693 8 Michael Metcalf John Reid Malcolm Cohen Modern Fortran explained Oxford University Press Oxford u a 2011 ISBN 978 0 19 960142 4 William H Press Saul A Teukolsky William T Vetterling Brian P Flannery Numerical recipes in Fortran 77 The Art of Scientific Computing Numerical recipes in Fortran Vol 1 2 Auflage Cambridge University Press Cambridge u a 1992 ISBN 0 521 43064 X 2 korr Auflage ebenda 2003 William H Press Saul A Teukolsky William T Vetterling Brian P Flannery Numerical Recipes in Fortran 90 The Art of Parallel Scientific Computing Numerical recipes in Fortran Vol 2 2 Auflage Cambridge University Press Cambridge u a 1996 ISBN 0 521 57439 0 2 korr Auflage ebenda 1999 Gunter Schmitt Fortran 90 Kurs technisch orientiert Einfuhrung in die Programmierung mit Fortran 90 Oldenbourg Munchen u a 1996 ISBN 3 486 23896 5 Dragos Chirila Gerrit Lohmann Introduction to Modern Fortran for Earth System Sciences Springer Berlin Heidelberg 2015 ISBN 978 3 642 37008 3 Weblinks Bearbeiten nbsp Wikibooks Fortran Lern und Lehrmaterialien nbsp Wiktionary Fortran Bedeutungserklarungen Wortherkunft Synonyme Ubersetzungen Fortran Wiki Kompendium zu allen Fortran Versionen englisch Fortran de Links und Informationen Fortran Standards Linksammlung auf der GNU Fortran Seite Fortran Store Umfangreiche Informationen inkl Historischem und Standards englisch Einfuhrung in Fortran 90 95 Eine kurze Einfuhrung in Coarrays englisch Einzelnachweise Bearbeiten heise online Programmiersprache Fortran 2018 veroffentlicht Abgerufen am 6 Dezember 2018 TIOBE Software BV TIOBE Index for August 2021 Nicht mehr online verfugbar In TIOBE com TIOBE August 2021 archiviert vom Original am 27 August 2021 abgerufen am 27 August 2021 nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot www tiobe com Vor 60 Jahren IBM veroffentlicht erste Sprachspezifikation fur Fortran In Heise online 17 Oktober 2016 Mark Jones Lorenzo Abstracting Away the Machine The History of the FORTRAN Programming Language FORmula TRANslation 2019 ISBN 978 1 08 239594 9 Vorwort von Michael Metcalf in W H Press S A Teukolsky W T Vetterling B P Flannery Numerical Recipes in Fortran 90 Cambridge University Press 1999 ISBN 0 521 57439 0 Fortran 2018 in Fortran Wiki Abgerufen am 14 Dezember 2018 ftnchek fordham edu Fortran Compilers Fortran Programming Language Abgerufen am 25 November 2021 Andy Vaught The G95 Project Nicht mehr online verfugbar Archiviert vom Original am 24 April 2021 abgerufen am 30 Juli 2021 nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot www g95 org Photran An Integrated Development Environment and Refactoring Tool for Fortran eclipse org Chart of Fortran 2008 Features supported by GNU Fortran In gcc gnu org Free Software Foundation Inc Februar 2019 abgerufen am 21 August 2021 NAG Fortran Compiler In www nag com Numerical Algorithms Group Ltd 2021 abgerufen am 21 August 2021 Cray Fortran Reference Manual 12 0 S 3901 In support hpe com Hewlett Packard Enterprise Development LP 2021 abgerufen am 21 August 2021 Intel Fortran Compiler In software intel com Intel Corporation 2021 abgerufen am 21 August 2021 BLAS Basic Linear Algebra Subprograms Abgerufen am 8 April 2022 LAPACK Linear Algebra PACKage Abgerufen am 8 April 2022 Programming Idioms Fortran cheat sheet Abgerufen am 8 April 2022 Rosetta Code Category Fortran Abgerufen am 8 April 2022 Abgerufen von https de wikipedia org w index php title Fortran amp oldid 238495795