WikiDer > Fortran

Fortran
fortran
fortran
ParadigmaImperativ, strukturiert
erschien1957
Entworfen vonJohn Backus
Entwickelt vonJohn Backus und IBM
Typensystemstatisch, stark
ImplementierungenGNU Fortran, Intel Fortran-Compiler, Watcom Fortran . öffnen, Microsoft FORTRAN[1] und andere
Einfluss aufalgol-58, PL/1
Portal  Portalsymbol  Informatik

fortran ist ein Programmiersprache die speziell für Berechnungen entwickelt wurde und hauptsächlich in der exakte Wissenschaften. Das Wort Fortran (ehemals FORTRAN) ist a Akronym abgeleitet von Die IBM Mathematik zummula tranSchlagsystem. Fortran ist aus mehreren Gründen wichtig. Erstens war es die erste höhere Programmiersprache, die allgemein verwendet wurde, so dass allein Fortran alle anderen Programmiersprachen geprägt hat. Zweitens war es die erste Sprache, die von den ANSIAstandardisiert Die Entwicklung war und ist an einer Reihe aufeinanderfolgender Standards (FORTRAN 66, FORTRAN 77, Fortran 90, Fortran 95 und Fortran 2003) ablesbar, wobei die Kompatibilität zu Vorgängerversionen weitestgehend erhalten blieb. Schließlich war es jahrzehntelang die am weitesten verbreitete Sprache für technisch, Naturwissenschaft und ökonometrisch Probleme. Damals war es die Sprache für Supercomputer, denn dort Matrixberechnungen mit gemacht werden kann.

Frühe Geschichte

EIN IBM-704-Großrechner, die Plattform, für die FORTRAN ursprünglich entwickelt wurde

Die erste Version wurde von mehreren Mitarbeitern von . entwickelt IBM geführt von John Backus. Der erste Bericht über FORTRAN stammt aus dem Jahr 1954, der erste funktionierende Compiler, für den IBM-704, wurde Anfang 1957 fertiggestellt. Sein Nachfolger, FORTRAN II, war bereits 1958 erhältlich. In den folgenden Jahren erschienen viele Versionen von Fortran, auch von anderen Anbietern als IBM. Dies machte die Standardisierung durch die ANSIA notwendig, der 1966 den Standard FORTRAN 66 veröffentlichte. FORTRAN 66 hatte zwei Versionen, nämlich Basic FORTRAN, das ungefähr FORTRAN II entsprach, und volles FORTRAN, das der damals neuesten Version, FORTRAN IV, am ähnlichsten war. Da spätere Versionen von Fortran nicht mehr innovativ waren, sondern Entwicklungen in anderen Programmiersprachen mit Abstand folgten, wird hier eine Beschreibung von Basic FORTRAN 66 gegeben.

Eigenschaften von FORTRAN 66

Beispiel für eine Zeile FORTRAN in Lochkarte. Beachten Sie, dass alle in Großbuchstaben und dies ist ein Kommentar, die Zeile beginnt mit einem 'C'. Die Karte ist mit verschiedenen Zonen vorbedruckt, die Zeilennummernzone (letzte acht Spalten) wird hier nicht verwendet.

Die Schreibweise basiert auf der Annahme, dass Programme auf Lochkarten werden dem Computer präsentiert. Der Programmierer hat seine Arbeit an a . eingereicht FORTRAN-Kodierungsformular, ein standardisiertes Formular, an einen Mitarbeiter. Dieser Mitarbeiter übertrug dann den Code auf Lochkarten. Von den 80 Spalten der Lochkarte wurden die letzten acht für eine Zeilennummer verwendet. Dies ist nützlich, falls ein Stapel Lochkarten fallen gelassen wird; die Karten können dann mit einer Sortiermaschine nach Seriennummer sortiert werden. In Spalte 1 zeigt ein „C“ an, dass die Karte nur Kommentare enthält und jedes Zeichen außer einem Leerzeichen in Spalte 6 bedeutet, dass die Karte als Fortsetzung der vorherigen Karte betrachtet werden sollte: Der normale Zustand ist also, dass eine Karte eine ist Aussage in den Spalten 7 bis 72 enthalten. Die Spalten 2 bis 5 werden für Zahlen verwendet, die als Beschriftungen dienen; diese Zahlen können in beliebiger Reihenfolge sein. Wie bei der Lochkarteneingabe üblich, verwendet FORTRAN nur Großbuchstaben.

Leerzeichen sind in FORTRAN nicht von Bedeutung: Wörter können zusammen oder getrennt geschrieben werden. Außerdem hat FORTRAN keine reservierten Wörter: Namen von Anweisungen können auch als Namen von verwendet werden Variablen. Diese Regeln machen wenig Sinn, weil sie das Schreiben eines Compilers erschweren und dem Benutzer wenig Nutzen bringen.

Einfache Variablen müssen nicht deklariert werden; Integer-Variablen (die ganze Zahlen darstellen) haben einen Namen, der mit einem der Buchstaben I bis N beginnt, reelle Variablen haben einen Namen, der mit einem anderen Buchstaben beginnt. EIN Array muss mit der DIMENSION-Anweisung deklariert werden. Arrays haben höchstens zwei Dimensionen und die untere Grenze des Index ist immer 1. In der COMMON-Anweisung deklarierte Variablen sind global; Sie können sowohl im Hauptprogramm als auch in . verwendet werden Unterprogramme und Funktionen verwendet werden. Alle anderen Variablen sind lokal; lokale Variablen in Unterprogrammen und Funktionen haben bei neuem Aufruf ihren alten Wert, genau wie die besitzen variabel in Algol-60.

Die Zuordnungserklärung hat die Form

Variable=Formel

Besonderheiten sind, dass eine Potenzierung mit ** gekennzeichnet ist und eine Formel entweder nur ganzzahlige Werte oder nur reelle Werte enthalten darf. Das Ergebnis einer Division (/) hängt also von der Art des Divisors und Dividenden ab: Das Ergebnis von 3/2 ist 1, das Ergebnis von 3,0/2,0 ist 1,5. Kommen in einer Formel ganzzahlige und reelle Werte vor, muss für die notwendige Umrechnung die Funktion FLOAT oder IFIX verwendet werden. Bei der Zuweisung wird wieder eine automatische Umrechnung durchgeführt: Bei der Umrechnung in einen Integer-Wert wird das Ergebnis abgeschnitten und nicht gerundet.

Es sind nur drei Kontrollstrukturen, nämlich der DO-Befehl, der IF-Befehl und der GOTO-Befehl;

Der DO-Befehl hat die Form:

TUN EtiketteVariable=Ursprünglicher Wert,Endwert,Schrittlänge

Die Variable muss einfach und ganzzahlig sein und eine Schrittweite von 1 kann weggelassen werden. Ein DO-Befehl bewirkt, dass die Befehle bis einschließlich des Befehls mit dem angegebenen Label wiederholt werden, bis der Endwert erreicht ist.

Es gibt keine Anweisung, die das Ende des zu wiederholenden Blocks angibt (wie NEXT in BASIC). Stattdessen enthält die DO-Anweisung das Label, das der letzten Anweisung des Blocks zugeordnet ist. Die meisten Programmierer setzen hier eine Anweisung, die nichts tut, also die leere Anweisung CONTINUE.

Die Syntax von DO ist für den Compiler-Builder schwierig, teilweise weil Leerzeichen ignoriert werden. Dies ist eine DO-Anweisung:

TUN 13ich=5,8

und dies ist eine Zuweisung, die der Variablen DO13I einen Wert zuweist:

TUN 13ich=5

Die IF-Anweisung hat eine merkwürdige Form, nämlich

WENN(Formel)Etikett1,Etikett2,tag3

Das bedeutet, dass das Programm zu Label1 springt, wenn das Ergebnis der Formel negativ ist, zu Label2, wenn es Null ist, und zu Label3, wenn es positiv ist. Auch hier ist die Formulierung in BASIC eleganter:

FORTRANBASIC
WENN(ich-3)100,110,110100...110
WENNich>=3DANN110...110

Der reguläre GOTO-Befehl hat die Form

GEHE ZU Etikette

Die berechnete GOTO-Anweisung hat die Form:

GEHE ZU(Etikett1,Etikett2,Etikette),Variable

Hier bestimmt der Wert der gesamten Variablen, bei welchem ​​Label das Programm fortgesetzt wird. Dieser Befehl ist daher vergleichbar mit dem AUF LOSZU in Basic oder mit dem Schalter im Algol-60.

Programme, Unterprogramme und Funktionen enden mit END. Das Hauptprogramm stoppt bei Erreichen von END, Unterprogramme und Funktionen kehren bei RETURN zum Hauptprogramm zurück. In einer Formel wird eine Funktion aufgerufen, mit CALL ein Unterprogramm.

Die Art und Weise, wie Daten gedruckt werden, wird in einer FORMAT-Anweisung festgelegt, auf die in der READ-, WRITE- oder PRINT-Anweisung verwiesen wird. Es können auch nicht-numerische Daten gedruckt werden, die übrigens nicht verarbeitet werden können. Dazu werden sogenannte Hollerith-Konstanten verwendet, bei denen die Anzahl der Zeichen sorgfältig gezählt werden muss.

Hallo Welt

Hello World-Programm in FORTRAN 66:

DRUCKEN 101011HHALLOWELTENDE

Vor-und Nachteile

Ein wichtiger Vorteil ist die Portabilität von Fortran-Standardcode zwischen verschiedenen Maschinen, da in der Sprache keine maschinenspezifischen Befehle definiert wurden. Es gab Dialekte, die von bestimmten Computerherstellern mit nicht tragbaren Erweiterungen erstellt wurden. Außerdem sind Fortran-Compiler oft sehr stabil und liefern sehr schnellen Code; aufgrund der fehlenden Zeiger kann ein Fortran-Compiler mehr Optimierungen durchführen als beispielsweise ein C-Compiler.

Fortran hatte ursprünglich nur wenige Einrichtungen, um auf niedriger Ebene damit zu arbeiten Betriebssystem sich zu unterhalten, und lange wusste es nein Zeiger. Dies erschwerte den Einsatz von Fortran für Systemaufgaben, der Einsatz höherwertiger Programmiersprachen für diesen Zweck entstand jedoch erst in den 1970er Jahren.

Die formale Nichtexistenz von Zeigern könnte bezüglich Variablen in der Sprache durch die Definition von Arrays umgangen werden; der Name eines Arrays verhält sich wie ein Zeiger. Dies wurde oft verwendet, um die virtuelle dynamische Speichernutzung zu simulieren, die für viele wissenschaftliche Programme bei der relativ geringen Speicherkapazität erforderlich war. Der Nachteil war, dass Programme sehr undurchschaubar und schwer zu warten wurden. Viele Programme stürzten ab, weil auf diese Weise regelmäßig Adressen außerhalb des deklarierten Speicherplatzes angesprochen wurden.

Spätere Entwicklungen

FORTRAN 77

FORTRAN 77 wurde in beiden Punkten verbessert: Es gab mehr Kontrollstrukturen und Charakterdaten wurden eingeführt.

Fortran 90

Fortran 90 hat Zeiger eingeführt. Dies geschah zu einer Zeit, als bereits regelmäßig auf die Probleme bei der Verwendung von Pointern in Pascal und C hingewiesen wurde.

Eine wesentliche Verbesserung, die die Zuverlässigkeit der Software erhöhen konnte, war, dass in dieser Version die Schnittstelle (Aufrufargumente zu einer Unterroutine oder Funktion) aufgezeichnet werden konnte.

In FORTRAN 77 könnten Sie beispielsweise den folgenden Fehler machen:

Anruf my_subroutine(2.1)Subroutine my_subroutine(nein)nein=nein1Rückkehr
  • Der 1. Fehler ist: Unterprogramm my_subroutine erhält hier die reelle Konstante 2.1, während my_subroutine eine ganze Zahl erwartet.
  • Der zweite Fehler ist: my_subroutine wird die Konstante anpassen.

In Fortran 90 kann der Compiler dies erkennen, wenn Sie a Modul schafft, wo alle Schnittstellen sind; ungefähr so:

benutzen alle_schnittstellenAnruf my_subroutine(2.1)Subroutine my_subroutine(nein)benutzen alle_schnittstellenganze Zahl,Absicht(inout)::neinnein=nein1Rückkehr Unterprogramm beenden my_subroutineModul alle_schnittstellenSchnittstelle Subroutine my_subroutine(nein)ganze Zahl,Absicht(inout)::neinUnterprogramm beenden my_subroutineEndschnittstelle Endmodul alle_schnittstellen

Weitere Verbesserungen sind:

  • Logische Operatoren wie .lt., .gt. .eq. usw. kann in Fortran 90 im Stil <, > und == erfolgen.
  • Freie Formatierung bezüglich der Spalten, auf denen der Code stehen soll. Es gibt keinen obligatorischen Labelnummernbereich mehr und auch Spalte 6 für Folgezeilen entfällt.
  • Die Array-Manipulation wurde stark verbessert. Wenn Sie beispielsweise in FORTRAN 77 ein Array xx(100) mit 0 füllen möchten, benötigen Sie a tun- einen Lauf machen. In Fortran 90 schreibst du xx = 0.
  • Dynamische Zuweisung und Freigabe von Arrays.
  • Unterstützung von rekursiv Verfahren.
  • Funktions- und Variablennamen können bis zu 31 Zeichen lang sein (vorherige Versionen waren 6 Zeichen).

Fortran 95

In dieser Version wurde die Möglichkeit auch hinzugefügt Typen die aus Kombinationen von Standardtypen bestehen. Das sieht aus wie ein Struktur in dem Programmiersprache C. Beispielsweise:

Art name_of_this_typeganze Zahl::zuerstganze Zahl::zweiteCharakter::Text*20Endtyp name_of_this_typeArt(name_of_this_type)::ein_selbstdefinierter_Typ,und noch einerein_selbstdefinierter_Typ%zuerst=1ein_selbstdefinierter_Typ%Text='Text'und noch einer=ein_selbstdefinierter_Typ

Quellen

  • Davis, GB, Eine Einführung in elektronische Computer, McGraw-Hill, New York, 1965.
  • Sammet, J. R., Programmiersprachen: Geschichte und Grundlagen, Prentice-Hall, Englewood Cliffs N.J., 1969.
  • Zander, Carol, Kunst und Schönheit der Informatik & Mathematik