WikiDer > Algol 68

Algol 68
Algol 68
Paradigmaprozedural; insb. Imperativ, mit etwas Unterstützung für parallel und funktionale Programmierung; Multiparadigma
erschien1968
Entworfen vonAdrian van Wijngaarden, Barry J. Mailloux, John E. L. picken, Cornelis H. A. Köster und andere
Aktuelle Versionletzte Überarbeitung 1975 [1]
Typensystemstatisch, stark
Beeinflusst vonAlgol 60, Algol Y
Einfluss aufC, C , Bourne-Schale, bash, ada, Python und andere
WebseiteAlgol 68 Genie [2]
Portal  Portalsymbol  Informatik

Algol 68 ist ein Verfahren Programmiersprache, entworfen 1968 als beabsichtigter Nachfolger von Algol 60, von einer Arbeitsgruppe unter der Leitung von Aad of Vineyards. Ziel war es, eine allgemein verwendbare Programmiersprache zu entwickeln, die vielseitig und gleichzeitig übersichtlich gestaltet und spezifiziert sein sollte. Die Sprache ist umfangreich, mit allerlei innovativen Features, aber gleichzeitig sehr senkrecht. Die sehr detaillierte Spezifikation hat sich seit der Revision von 1975 nicht geändert. Die Syntax der Sprache, einschließlich des nicht kontextfreien Aspekts, ist vollständig in dem speziell entwickelten Van Wijngaarden Grammatik.

Die Komplexität und Ambitionen von Sprache und Spezifikation sorgten bereits während der Entwicklung für Widerstände, auch innerhalb der Arbeitsgruppe: Niklaus Wirth stieg aus und kam mit dem einfacheren Pascal. Außerdem unterstützen die meisten Algol 68-Compiler nicht alle Sprachfeatures, aber sie unterstützen eine reichere und komplexere Sprache als Pascal.

Die Verwendung von Algol 68 beschränkte sich damals hauptsächlich auf den Bildungsbereich, wo Pascal beliebter war; dabei ist auch Pascal im Vergleich zu Sprachen wie lange ein rein akademisches Produkt geblieben fortran, PL/1 und C.

Die Bedeutung von Algol 68 liegt daher vor allem in den innovativen Sprachkonstruktionen und Beschreibungstechniken, von denen viele in späteren Sprachen übernommen wurden.

Orthogonalität

Orthogonalität bedeutet in diesem Zusammenhang, dass Sprachkonstruktionen möglichst allgemeingültig sind. Dies hat den Vorteil, dass der Programmierer nur wenige allgemeine Sprachkonstrukte lernen muss, anstatt viele spezifische Konstrukte für eine bestimmte Situation. Nachteile sind, dass alle Arten von wenig verwendeten Kombinationen gültig sind, was das Auftreten von unerkannten Programmierfehlern begünstigt, und dass alle Kombinationen aller Konstruktionen eine eindeutige Interpretation haben müssen, was die Spezifikation kompliziert macht.

Ein Beispiel ist das in Algol 68 Aussagen und Ausdrücke sind weitgehend austauschbar: Es ist absolut gültig, Dinge zu schreiben als

intich,ja:=3;ich:=ja :=5;#erhöhen, ansteigenjamit5;weisedasWert(8)vonesErgebnis(ja)BitteAufich#(ich:=ja) :=5#weisedasWertvonja(8)BitteAufich;erhöhen, ansteigenesErgebnis(ich)mit5#

tippen

Algol 68 ist stark, statisch typisiert: Jede Variable, oder genauer jeder Ausdruck, der einen Speicherort angibt, hat einen bestimmten Typ, und alle Werte, die der Speicherort annehmen kann, müssen von diesem Typ sein.

Gleichzeitig gibt es jedoch einen komplizierten Zwang (automatische Typkonvertierung) je nach Kontext, in dem ein Ausdruck auftritt. Selbst wenn man den Wert einer Variablen nimmt (wie in ich := j) ist ein Zwang in Algol 68.

Beliebig komplexe Typen können unter anderem mit den Konstruktoren konstruiert werden PROC (um Unterprogramme mit Argumenten und Ergebnis eines bestimmten Typs zu erstellen) und REF (um den Typ anzugeben, in den Werte des angegebenen Typs eingefügt werden können). Dies wurde vielfach nachgeahmt, zum Beispiel in C, während andere Sprachen Funktionen höherer Ordnung und Zeiger von Zeigern einfach mit einem festen . verwenden Zeiger-type "Zeiger" bezeichnen (was in der Praxis durch Gießen, auch viel passiert in C) oder gar nicht zulassen.

Es REFEs wurde festgestellt, dass der Mechanismus aufgrund der automatischen Typerzwingung und anderer syntaktischer Abkürzungen, wie z Tony Hoare schon befürchtet. Das ist bei Pascal und C besser.

Siehe auch

Externe Links

Viele Details zu Algol 68, die Motivation dahinter, Einflüsse von und auf andere Programmiersprachen, persönliche Anekdoten und den dringend benötigten Humor finden sich in

Weitere Referenzen: