FORTRAN
FORTRAN (für FORmula TRANSlation) ist eine Gruppe von Programmiersprachen, die insbesondere in den numerischen Wissenschaften (Mathematik, Physik, Chemie) weitverbreitet sind.Fortran wurde in den 1950er Jahren entwickelt, und hat seitdem mehrere Standardisierungen (FORTRAN I, FORTRAN II, FORTRAN IV, FORTRAN 66, FORTRAN 77, Fortran90 und Fortran95) erlebt, welche die Sprache auch heute noch attraktiv machen. Fortran unterstützt numerische Rechenoperationen, und vermeidet manche Programmierstrukturen moderner Programmiersprachen. Dadurch werden Optimierungen durch den Compiler möglich, die in anderen Programmiersprachen nicht denkbar sind.
Insbesondere für wissenschaftliche und numerische Berechnungen existieren in FORTRAN umfangreiche Bibliotheken, die auch heute noch unentbehrlich sind.
Einige von Fortran abgeleitete Programmiersprachen sind Ratfor, F, ELF und HPF (High Performance Fortran).
Table of contents |
2 Schwächen von Fortran 3 Literatur zur Geschichte von Fortran 4 Weblinks |
Wichtige Neuerungen in Fortran 77
Insbesondere die Standardisierung im Bereich Ein-/Ausgabe und bei internem I/O erleichtern die Portierung auf eine andere Plattform erheblich.
Hier kann man Texte speichern. Außerdem wird dieser Datentyp für internal I/O verwendet - Daten werden statt auf ein Ausgabegerät in einen Hauptspeicherbereich geschrieben beziehungsweise von dort gelesen. In früheren Versionen gab es für internal I/O keinen einheitlichen Standard. Daher schufen verschiedene Hersteller eigene Verfahren für internal I/O. CDC und IBM verwendeten ENCODE/DECODE, HP dagegen CALL CODE gefolgt von einer WRITE- oder READ-Anweisung. Mit FORTRAN 77 erfolgt internal I/O einfach durch WRITE / READ auf eine Variable vom Typ CHARACTER.
Vorher fehlten Standards für Ein- und Ausgabe. Wieder schufen mehrere Hersteller eigene Lösungen. So gab es für den Zugriff auf Direct-Access-Dateien bei IBM die DEFINE FILE Anweisung. Fortran 77 ermöglicht mit der OPEN-Anweisung den Zugriff auf verschiedene Dateitypen. Bei allen I/O-Anweisungen kann man mit IOSTAT= ERR= END= die Fehlerbedingungen oder das Dateiende abfragen und geeignet im Programm verzweigen.
Der Programmierer kann sich nun dazu zwingen, alle Variablen explizit zu deklarieren. Damit erkennt man Schreibfehler bei Variablen (alpha, alhpa) schon beim Compilieren. Dies reduziert die Fehleranfälligkeit und verkürzt eventuell die Testphase. Ohne dieses IMPLICIT NONE-Anweisung wendet Fortran (in allen Versionen) eine implizite Deklaration an: Variablen, die mit "I" - "N" beginnen sind von Typ INTEGER, alle anderen vom Typ REAL. Lediglich die CHARACTER-Variablen müssen explizit deklariert werden. Damit werden Schreibfehler eventuell erst beim Programmtest erkannt.
In früheren Versionen musste man für solche Abfragen mindestens eine GOTO-Anweisung verwenden. Mit der neuen Syntax kann man diese Abfragen übersichtlicher formulieren und gleichzeitig die Anzahl der GOTOs reduzieren.
Mit der PARAMETER-Anweisung kann man symbolische Konstanten definieren. Mit solchen Konstanten lassen sich beispielsweise ARRAYs dimensionieren. Man kann sie auch noch anderswo im Programm verwenden, zum Beispiel bei Schleifen (Anzahl der Schleifendurchläufe). Damit ist es möglich, dass man mit der Änderung der PARAMETER-Anweisung sofort alle betroffenen Dimensionierungen und alle anderen betroffenen Programmstellen anpasst. Symbolische Konstanten haben gegenüber "normalen" Variablen den Vorteil, dass sie nicht versehentlich überschrieben werden können - eine Anweisung Schwächen von Fortran
Gegenüber anderen Programmiersprachen, beispielsweise Pascal, weist Fortran einige Schwächen auf. Der Programmierer hat mehr Möglichkeiten, Fehler zu produzieren. Die Folge sind verlängerte Testphasen und häufig fehlerhafte Programme in der Produktionsphase.
Der Programmierer hat die Möglichkeit, alle Variablen implizit deklarieren zu lassen. (siehe Punkt "IMPLICIT NONE" im Abschnitt "Wichtige Neuerungen in Fortran 77" ). Zwar erspart sich der Programmierer damit die explizite Deklaration, also einige Schreibarbeit, aber damit werden Schreibfehler in Variablennamen eventuell erst in der Testphase erkannt. Pascal erzwingt eine explizite Deklaration. Schreibfehler werden sofort beim Compilieren gemeldet. Durch IMPLICIT NONE kann bei Fortran-90 Programmen der gleiche Effekt erreicht werden.
Fortran prüft nicht, ob ein Unterprogramm formal korrekt aufgerufen wird. Es wird weder die Anzahl der übergebenen Variablen noch deren Datentyp auf Übereinstimmungen mit dem aufgerufenen Unterprogramm verglichen (Typprüfung). Beispielsweise kann man das Unterprogramm SUBROUTINE test (a, b, n) aufrufen mit CALL test (x, 9). In der Regel handelt es sich bei solchen Aufrufen um ungewollte Fehler, die frühestens in der Testphase gefunden werden können. Pascal dagegen prüft die Aufrufe der Unterprogramme. Ist ein Pascalprogramm erfolgreich compiliert, dann weiß man sicher, dass alle Unterprogrammaufrufe formal korrekt sind. Unterprogramme, die in MODULEn (Fortran-90) deklariert sind, können nur mit korrekten Parameterlisten aufgerufen werden.
Die meisten Fortran-Systeme erzeugen keinen Code, der überprüft, ob alle Feld-Indices innerhalb der erlaubten Bereiche liegen. Dies kann allerdings bei allen Fortran-Systemen eingeschaltet werden. Ohne eine solche Überprüfung könnte es passieren, dass ein Feld über seine deklarierte Grenze hinaus beschrieben wird. Dabei kann zum Beispiel vorhandener Programmcode überschrieben werden. Die Folgen sind nicht vorhersehbar, der Fehler ist oft schwer zu finden, weil das Programm zur Laufzeit an einer ganz anderen Stelle abbrechen kann.
Diese Schwäche ist zwar nicht wie die anderen unmittelbares technisches Merkmal von FORTRAN, aber in der Praxis gleichermaßen hinderlich. Typischerweise nach dem beruflichen Umstieg von der Forschung an einer Universität zu Kundenprojekten in einem Industrie-Unternehmen kann es für einen FORTRAN-erfahrenen Wissenschaftler zum Problem werden, dass in seinem neuen beruflichen Umfeld niemand außer ihm FORTRAN kann und schlimmstenfalls noch nicht einmal ein brauchbarer FORTRAN-Compiler verfügbar ist.Literatur zur Geschichte von Fortran
Weblinks