Fortran im Wandel der Zeit

Trotz ihres stolzen Alters von knapp sechzig Jahren ist Fortran heute noch an allerlei Orten anzutreffen. Besonders für Simulationsaufgaben steht die Sprache aufgrund ihres guten Performance noch immer hoch im Kurs.

In Pocket speichern vorlesen Druckansicht 32 Kommentare lesen
Fortran im Wandel der Zeit
Lesezeit: 34 Min.
Von
  • Thomas Slawig
Inhaltsverzeichnis

Wer heute Informatik-Studenten mit der Programmiersprache Fortran kommt, erntet Unwissen und – wenn er ein typisches Legacy-Codebeispiel zeigt – Gelächter. Konstrukte wie arithmetisches if, eine Menge von goto-Anweisungen und obskure Schleifen in do-continue-Form wirken wie aus der Zeit gefallen und widersprechen nahezu allen Paradigmen guter, strukturierter oder gar objektorientierter Softwareentwicklung.

Wer auf der anderen Seite die Liste der Codes in der aktuellen Benchmark-Sammlung der Standard Performance Evaluation Corporation (SPEC) für Gleitkommaarithmetik CFP2006 [1] studiert, findet dort zur Hälfte Fortran-Codes, neben solchen in C und C++. Noch Ende der Achtzigerjahre galten Fortran-Codes beziehungsweise die entsprechenden Compiler mit numerischen Rechnungen (also vorwiegend in Gleitkommaarithmethik) den entsprechenden C-Varianten in der Performance als überlegen. Konsequenterweise hat, wer mit eher technischen oder naturwissenschaftlichen Anwendungen wie Strömungs- oder Klimasimulationen arbeitet, fast zwangsläufig mit Fortran-Legacy-Code zu tun.

Fortran, der "Formula Translator", war die erste höhere Programmiersprache und wurde von John Backus entwickelt, auch bekannt durch die Backus-Naur-Form der Beschreibung von Programmiersprachen. Die erste Version erschien bereits 1957. Die Idee hinter der Sprache war, Programmierern, die Formeln implementieren wollten, eine komfortablere Schnittstelle zur Verfügung zu stellen als sie Assembler-Anweisungen darstellen. Der treibende Gedanke lässt sich daher mit der von späteren numerischen Lineare-Algebra-Paketen wie LINPACK/LAPACK und Matlab vergleichen: Komplexe Algorithmen und Bibliotheken sollten sich durch einfache Schnittstellen nutzen lassen, vor allem um den Nutzern die Programmierung zu vereinfachen. Auf höherer Abstraktionsebene verfolgen die Entwickler unterschiedlicher Domain Specific Languages (DSL) dieses Anliegen noch heute. Die Bedeutung von Fortran wird in der Wahl des optimierenden Fortran-Compilers als einem der zehn besten Algorithmen des 20. Jahrhunderts durch die Society for Industrial and Applied Mathematics [2] deutlich.

Wenn man das Veröffentlichungsdatum von Fortran berücksichtigt und sich in die Computerwelt von damals hineinversetzt, lassen sich viele heute seltsam wirkende Sprachelemente besser verstehen: Es war die Zeit der Lochkarten. Feste Formatierung (die besondere Bedeutung, die die ersten sechs Spalten jeder Zeile in alten Fortran-Dialekten haben und die maximale Zeilenlänge von 72) sowie implizite Typisierung von Variablen und das erwähnte arithmetische if sind durch das Einsparen von Zeilen und Zeichen im Code motiviert.

Ihre Verbreitung und die Bedeutung der Sprache für numerische Simulationen hat allerdings dazu geführt, dass Fortran kontinuierlich weiterentwickelt und wiederholt neu standardisiert wurde. Heute verfügt sie über nahezu alle Eigenschaften einer modernen und objektorientierten Sprache, und noch einige praktische mehr.

Insofern gibt es zwei Sichtweisen auf Fortran. Bei Code kommt es wesentlich darauf an, wann beziehungsweise nach welchem Standard er entstanden ist. Wegen der Kompatibilität treten unterschiedliche Dialekte der Sprache oft gemischt in Legacy-Code auf, was nicht gerade zur Klarheit und Lesbarkeit beiträgt. Man kann grob in Code bis einschließlich Fortran 77 und ab Fortran 90 einteilen, weil dort der größte Umbruch im Standard stattfand. Ganz alter Code im Standard vor Fortran 77, bei dem es teilweise noch keine Schleifen gab, ist vergleichsweise selten. Wenn man hingegen ein neues Programm oder ein ergänzendes, sauber getrenntes Modul schreiben will, ist die Historie unbedeutend. Es kommt dann nur darauf an, welche Möglichkeiten Fortran im aktuellen Standard bietet.