Entwicklung eines Jackal-Frontends für die Programmiersprache Fortress

Student:Stefan Hanke
Title:Entwicklung eines Jackal-Frontends für die Programmiersprache Fortress
Type:study thesis
Advisors:Veldema, R.; Klemm, M.; Philippsen, M.
State:submitted on July 6, 2006
Prerequisits:

Die Sprache Fortress ist eine neue Programmiersprache, die vom Programmiersprachen-Labor von SUN Microsystems vorgeschlagen wurde (unter anderen ist auch der Java-Miterfinder Guy. L. Steele Mitglied des Teams). Das Designziel von Fortress ist es dabei das alternde Fortran zu ersetzen. Hierzu sollen Wissenschaftler eine neue Sprache mit moderner Syntax erhalten, wobei die Leistungsfähigkeit von Fortran erhalten werden soll.

Fortran ist zur Zeit immer noch eine der wichtigsten Sprachen im Bereich des Höchstleistungsrechnens und der Berechnung numerischer Probleme. Die veraltete Syntax, die sich seit drei Jahrzehnten nur wenig verändert und keinen Vorteil aus modernen Programmierparadigmen gezogen hat, stellt das Hauptproblem von Fortran dar. Die Einführung einer neuen, mächtigen Syntax erscheint gerade in diesem Bereich notwendig zu sein.

Da die Zielgruppe von Fortress klar abgesteckt ist, wird besonderes Augenmerk darauf verwendet, dass die Benutzer der Sprache eine Syntax erhalten, die es ihnen erlaubt das zu lösende Problem möglichst einfach in der Programmiersprache auszudrücken. Beispielsweise akzeptiert die Sprache eine Syntax, die sich sehr nahe an mathematischen Formeln orientiert.

Unter anderem erlaubt es Fortress, dass Datentypen weitestgehend vom Compiler durch Typinferenz abgeleitet werden, wohingegen Java, C, und C++ explizite Typangaben vom Programmierer erwarten. Ein weiteres Beispiel ist die Verwendung von mathematischen Symbolen wie Alpha, Rho und Omega direkt im Quellcode, die es dem Entwickler erlauben direkt eine mathematische Formel in Fortress umzusetzen. Eine vom Programmierer erweiterbare Syntax rundet das Bild der Programmiersprache ab.

Topic:

Das Ziel der Arbeit ist ein Frontend für den Jackal-Compiler, das Fortress-Quellen in die Zwischensprache (LASM) des Jackal-Compilers übersetzt. LASM ist eine baumbasierte Zwischensprache, die sukzessive vom Backend von einer hohen Abstraktionsebene des Zwischencodes auf Maschinenebene transformiert wird. Dabei entstehen aus komplexen Ausdrucksbäumen in den Zwischencode-Instruktionen, einfache Zwischencodebäume, die direkt die verfügbaren Maschineninstruktionen darstellen. IA32, IA64, AMD64, PowerPC 64 sidn dabei die Zielarchitekturen, die vom Jackal-Compiler unterstützt werden.

Im Rahmen einer Studienarbeit ist das Frontend für Fortress zu entwickeln und ein Teil des nötigen Laufzeitsystems (bspw. Matrix/Vektor-Klassen usw.) zu implementieren. Auf die Unterstützung der erweiterten Eingabemöglichkeiten für mathematische Ausdrücke kann verzichtet werden. Ebenso kann die Möglichkeit zur direkten Anbindung von Datenbanken sowie die Entwicklung einer IDE ausgeklammert werden.

Abschließend soll für diese Studienarbeit eine ausführliche Evaluation der Leistungsfähigkeit des übersetzten Codes erfolgen. Hierzu sind einige ausgewählte Benchmarks für Java, Fortran und Fortress zu nutzen (nötigenfalls auch selbst zu implementieren), die einen Vergleich zwischen diesen drei Sprachen in Bezug auf die Leistungsfähigkeit des erzeugten Codes und des Laufzeitsystems zulassen.

Meilensteine:

  • Entwickung einer Grammatik der Sprache
  • Zerteiler aufbauend auf der Grammatik (ANTLR)
  • Testfälle zur Prüfung der Konformität des Parsers
  • Erzeugung von LASM-Zwischencode für das Jackal-Backend
  • Semantische Analysen
  • Implementierung aussagekräftiger Benchmarks
  • Leistungsmessungen und Beurteilung
  • Ausarbeitung
watermark seal