Algol 68
Algol 68 ist eine Programmiersprache. Ihr Entwurf beruhte auf den Anforderungen, dass sie geeignet sein soll, Algorithmen darzustellen und zu verbreiten, diese effektiv auf einer Vielzahl unterschiedlicher Rechenanlagen auszuführen und um zu helfen, sie Studenten zu lehren.
Die Sprache Algol 68 stellte einen neuen Anlauf dar, beruhte jedoch auf den Erfahrungen mit Algol 60 und den Prinzipien dieser Sprache. Ziel war ein wesentlich breiterer Anwendungsbereich und eine stringentere Sprachdefinition. Die Definition wurde als Report on the Algorithmic Language ALGOL 68 erstmals 1968 veröffentlicht und 1976 im Revised Report grundlegend revidiert.
Der Bericht nennt als Ziele: Vollständigkeit und Klarheit der Beschreibung, Orthogonalität des Entwurfes, Sicherheit, Effektivität.
Im Vergleich zu Algol 60 wurden einige Konzepte vereinheitlicht; neu eingeführt wurde das Konzept eines Namens, ein Wert, der auf andere Werte referenziert, die Möglichkeit zur Definition von Strukturen und anderer Datentypen. Aus der geringeren Akzeptanz von Algol 60 verglichen mit FORTRAN wurde geschlossen, dass eine Definition von Ein- und Ausgabe die Verbreitung fördern könnte.
Kritiker wandten ein, die Sprache habe nicht mehr die Einfachheit von Algol 60 und sei zu schwierig zu implementieren. Konzepte, die in praktisch erfolgreicheren Sprachen wie C++ weitere Verbreitung fanden, wie Überladen von Operatoren, wurden erstmals syntaktisch definiert. Im Unterschied zu Algol 60 ist die Sprache weitestgehend ausdrucksorientiert, daher auch als frühes Beispiel einer funktionalen Programmiersprache anzusehen.
In der Beschreibung der Programmiersprache wurde ein neuartiges Beschreibungsverfahren, die 2-stufige Grammatik, auch van-Wijngaarden-Grammatik genannt, entwickelt. Diese erlaubte es, alle Kontextbedingungen mit zu formalisieren.
Neu war auch das Konzept PRAGMAT, das Hinweise zur Optimierung für die Compiler erlaubte, ohne die Semantik eines Programms zu ändern, sodass die Programme trotz Optimierung portabel blieben.
Algol 68 wurde von einigen als akademisches Projekt betrachtet, weil längere Zeit brauchbare Compiler fehlten, die den gesamten Sprachstand implementierten.
Inhaltsverzeichnis
Reservierte Symbole
In Algol 68 gibt es 61 reservierte Symbole (für einige Symbole gibt es Abkürzungen):
mode, op, prio, proc, flex, heap, loc, long, ref, short, bits, bool, bytes, char, compl, int, real, sema, string, void, channel, file, format, struct, union, of, at "@", is ":=:", isnt ":/=:", true, false, empty, nil "∘", skip "~", co "¢", comment "¢", pr, pragmat, case in ouse in out esac "( ~ | ~ |: ~ | ~ | ~ )", for from to by while do od, if then elif then else fi "( ~ | ~ |: ~ | ~ | ~ )", par begin end "( ~ )", go to, goto, exit.
Datentypen
Algol 68 bezeichnet Datentypen als modes. Die grundlegenden Datentypen sind real, int, compl, bool, char, bits und bytes. Zum Beispiel:
int n = 2; co n ist eine Konstante mit dem Wert 2. co int m := 3; co m ist eine neu vereinbarte lokale Variable mit dem Anfangswert 3. co co Das ist eine verkürzte Schreibweise für: ref int m = loc int := 3; co real avogadro = 6.0221415⏨23; co Avogadrozahl co long long real pi = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510; compl square root of minus one = 0 ⊥ 1
Die Deklaration real x; ist eine verkürzte Schreibweise für ref real x = loc real;. Das bedeutet: x ist ein konstanter Name für eine Referenz auf eine neu generierte lokale real Variable.
Statt modes wie float
und double
, beziehungsweise int
, long
und short
, etc. gibt es in Algol 68 modifizierer. So wird zum Beispiel long real oder long long real statt double
geschrieben. Typattribute wie max real
und min long int
werden verwendet um Programme an verschiedene Implementierungen anzupassen.
Alle Variablen müssen vereinbart werden. Die Vereinbarung muss nicht vor der ersten Verwendung gemacht werden.
Compiler-Anweisungen und Kommentare
Compiler-Anweisungen werden in das Programm eingefügt. Sie enthalten typischerweise Hinweise für den Compiler. Z.B.:
pragmat heap=32 pragmat pr heap=32 pr
Kommentare können auf verschiedene Arten eingefügt werden:
¢ Der ursprüngliche Weg einen Kommentar hinzuzufügen (analog der englischen Phrase: Adding your 2 cents) ¢ comment "bold" comment comment co Kommentar 1. Form co # Kommentar 2. Form # £ Dieser Kommentar benutzt das hash/pound Zeichen einer UK Tastatur £
Normalerweise können Kommentare in Algol 68 nicht geschachtelt werden. Diese Einschränkung kann umgangen werden, wenn unterschiedliche Kommentarsymbole verwendet werden (z.B. Der Hash wird nur für kurzzeitiges Löschen verwendet).
Literatur
- Adriaan van Wijngaarden et al.: Revised Report on the Algorithmic Language ALGOL 68. In: Acta Informatica. Vol. 5, No. 1/3, 1975, ISSN 0001-5903, S. 1–236, online (PDF, 1,4 MB).
- Andrew S. Tanenbaum: A Tutorial on ALGOL 68. In: ACM Computing Surveys. Vol. 8, No. 2, 1976, ISSN 0360-0300, S. 155–190.
- Sian Leitch: Programming Algol 68. Made Easy (Memento vom 8. Februar 2012 im Internet Archive). (PDF; 1,36 MB).
Weblinks
- Revised Report on the Algorithmic Language ALGOL 68. (Memento vom 17. Oktober 2007 im Internet Archive)
- An ALGOL 68 interpreter
- 99 bottles of beer Beispielprogramm