Algol 60

Algol 60

Die Programmiersprache Algol 60 wurde 19581963 unter der Führung der Association for Computing Machinery (ACM) und der Gesellschaft für Angewandte Mathematik und Mechanik (GAMM), später dann der International Federation for Information Processing (IFIP), entwickelt. Beteiligt waren unter anderem John Backus, Friedrich Ludwig Bauer, John McCarthy, Peter Naur, Alan J. Perlis, Heinz Rutishauser und Klaus Samelson. Der Name Algol ist eine Kurzform für Algorithmic Language, 60 steht für das Jahr der »Fastfertigstellung« (ein Diskussionsentwurf wurde als International Algorithmic Language (IAL) oder Algol 58 bekannt; die endgültige Fassung (als »Revised Report« tituliert) stammt aus dem Jahre 1963).

Inhaltsverzeichnis

Der Sprachentwurf

Algol 60 war als international entwickelte, von kommerziellen Interessen unabhängige, portable, prozedurale Programmiersprache in erster Linie für wissenschaftliche, das hieß damals numerische, Zwecke gedacht. Es gab aber auch wichtige nichtnumerische Anwendungen, weil ihre Einfachheit und für damalige Verhältnisse weitgehende Freiheit von Restriktionen sie angenehm zu benutzen machte.

So wurde das Betriebssystem der Burroughs-B5000-Rechner in einer ALGOL-Version (ESPOL) programmiert; ein anderes Beispiel ist ein bibliothekarisches Katalogsystem für die Telefunken TR 4. Vgl. auch die Sprache JOVIAL, von ALGOL 58 abgeleitet, die jahrzehntelang zur Programmierung von Prozessrechnern in der Luft- und Raumfahrt (Avionik) diente.

Algol 60 war ein Meilenstein in der Geschichte der Programmiersprachen:

  • Mit ihr begann die saubere Definition von Spracheigenschaften unabhängig von (und vor) jeder Implementierung (anders als dies noch bei LISP war[1]).
  • Der Algol 60 Report führte die formale Definition der Syntax mit Hilfe der Backus-Naur-Form ein, die bald allgemein üblich wurde.[2]
  • ALGOL zeigte den Wert eines klaren und einfachen Sprachkerns auf, eine Erfahrung, die bald Peter Landin zu seinem Sprachentwurf ISWIM inspirieren und so die meisten nach ALGOL entwickelten Programmiersprachen beeinflussen sollte.
  • ALGOL schrieb – gegen den Trend der Zeit – Laufzeitprüfungen vor, eine Entscheidung, die erst langsam gewürdigt und nachgeahmt wurde.
  • Auch die Unterscheidung zwischen der Sprache an sich und ihrer technischen (Eingabe-) Darstellung (die auf vorhandenen Geräte Rücksicht nehmen musste) fand Beifall, aber nur wenige Nachfolger.[3]

Als (unerwartet) großes Problem erwies sich, dass die Ein-/Ausgabe nicht geregelt worden war, so dass deren Implementierungen stark zwischen den Compilern variieren. Beispielsweise wird ein Text einmal mit dem OUTSTRING- und einmal mit dem WRITETEXT-Befehl (beispielsweise bei der Electrologica X1) ausgegeben.

Eigenschaften

Die Methode der sequentiellen Formelübersetzung von Bauer und Samelson ermöglichte es, auf viele Restriktionen zu verzichten, wie sie etwa FORTRAN kannte. Die darin enthaltene Idee des Stapelspeichers ermöglichte dann auch rekursive Prozeduren (Dijkstra).

Vom λ-Kalkül inspiriert war die Möglichkeit innerer Prozedurdefinitionen (»Blockstruktur«). ‚begin‘-Blöcke (anonyme Prozeduren) wurden vor allem dazu benutzt, Felder mit variablen Grenzen im Kellerspeicher anzulegen. Sichtbarkeit und Gültigkeitsbereich der Variablen waren dabei korrekt lexikalisch definiert. Vorgesehen waren auch ‚own‘-Variablen, deren Lebensdauer der Programmlauf sein sollte (vgl. ‚static‘ in C); gerade dies wurde aber häufig nicht implementiert.


Ebenfalls vom λ-Kalkül waren die Parameterübergabe-Modi genommen:

  • Wertparameter (Schlüsselwort ‚value‘) wurden vor dem Aufruf ausgewertet (Strikte Auswertung – »erst Auswerten, dann Einsetzen«).
  • Für Namensparameter, default, war die Semantik einer textuellen Einsetzung vorgeschrieben (Nichtstrikte (lazy) Auswertung – »erst Einsetzen, dann Auswerten«). Dies führte im Zusammenhang mit Speichervariablen zu gewissen Schwierigkeiten, erlaubte im Prinzip aber eine elegante Formulierung von Integralen und ähnlichen Aufgaben:
   integriere (alpha*x*x, x, a, b)
(Jensen's device). Zur Implementierung verwandte man thunks, Closures von anonymen Funktionen (und benannt »nach dem Geräusch, das sie auf der 7090 machten«).

Algol führte mit LISP das Prinzip der Formatfreiheit in Programmiersprachen ein. Dabei hat ein Schlüsselwort immer dieselbe Bedeutung, unabhängig von der Position im Programm. Außerdem ist der Beginn einer neuen Zeile dem Leerzeichen gleichgestellt. In den damals vorherrschenden Sprachen FORTRAN und COBOL war die Positionierung der Anweisungen auf den Lochkarten dagegen entscheidend – ein Schlüsselwort konnte je nach Position eine andere Bedeutung haben. Auch die Zeileneinteilung war bei diesen Sprachen nicht frei.

Beispiel

Das folgende (vollständige) Algol-60-Programm gibt HALLO, WELT auf dem Ausgabekanal 2 aus:

   'COMMENT' HALLO, WELT PROGRAMM IN ALGOL 60;
   'BEGIN'
      OUTSTRING(2,'('HALLO, WELT')');
   'END'

Wirkungen/Bedeutung/Nachfolger

„ALGOL war ein Fortschritt gegenüber den meisten seiner Nachfolger.“

C. A. R. Hoare

In der Praxis fand Algol weniger Anwendung als FORTRAN oder COBOL; das minderte aber nicht seinen langfristigen Einfluss (s. o.). Lange Zeit war Algol 60 im akademischen Bereich vorbildlich.

Der wichtigste Nachfolger war Simula 67.

Nach John C. Reynolds folgten die meisten Sprachen nicht Algol 60, sondern ISWIM; er selbst stellte mit Forsythe eine Fortentwicklung in der Algol-Tradition vor.[4]

Algol 68 war dem Namen zum Trotz ein völliger Neuentwurf, der ein geteiltes Echo fand. Niklaus Wirth entwickelte alternativ Algol W, woraus in der Weiterentwicklung Pascal werden sollte.

Siehe auch

Literatur

  • H.T. de Beer: The History of the ALGOL Effort. (PDF) 2006. – vi, 97 pp. (M.Sc. thesis, TU Eindhoven)
  • Heinz Rutishauser: Description of Algol 60. – Berlin 1967. (Handbook for automatic computation; 1,a)
  • Albert A. Grau, U. Hill, Hans Langmaack: Translation of Algol 60. – Berlin 1967. (Handbook for automatic computation; 1,b)
  • Rudolf Herschel: Anleitung zum praktischen Gebrauch von ALGOL 60, 4. Auflage, 1969, R. Oldenbourg Verlag, München

Weblinks

Einzelnachweise und Anmerkungen

  1. Erst mit Scheme wurde das anders; später wurde auch in Common-Lisp der Geburtsfehler des dynamischen Geltungsbereichs (dynamic scope) korrigiert.
  2. J. W. Backus et al, Revised Report on the Algorithmic Language Algol 60, Numerische Mathematik 4, S. 420–453 (1963)
  3. Etwa Fortress. Vgl. ISWIM und Pepper, Hofstedt: Funktionale Programmierung (2006), Jenseits von ASCII (S. 4)
  4. CiteSeerX

Wikimedia Foundation.

Игры ⚽ Нужна курсовая?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • algol — algol …   Dictionnaire des rimes

  • ALGOL — (langage) Pour les articles homonymes, voir Algol. Algol est un langage de programmation. Il a été créé à la fin des années 1950. Son nom est l acronyme d algorithmic oriented language (avec un clin d œil à l étoile β Persei). Son objectif était… …   Wikipédia en Français

  • ALGOL X — was the code name given to the programming language which the Working Group 2.1 on ALGOL of the International Federation for Information Processing was to develop as a successor to ALGOL 60. It attempted to find a short term solution to existing… …   Wikipedia

  • 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… …   Deutsch Wikipedia

  • ALGOL W — is a programming language. It was Niklaus Wirth s proposal for a successor to ALGOL 60 in the ALGOL 68 committee. It represented a relatively conservative modification of ALGOL 60; Wirth added string, bitstring, complex number and reference to… …   Wikipedia

  • 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… …   Deutsch Wikipedia

  • Algol 68 — est un langage de programmation dérivé du langage Algol 60. L objectif des concepteurs d Algol 68 était d offrir un langage de programmation universel et résolument innovateur. Pour cela, sa syntaxe a été définie à l aide d une grammaire… …   Wikipédia en Français

  • Algol W — est une version du langage Algol due à Niklaus Wirth, proposée au comité Algol 68 pour succéder à Algol 60. Bien qu antérieure au Pascal, elle était plus puissante à certains points de vue. En particulier toute expression ou tout bloc, en Algol W …   Wikipédia en Français

  • ALGOL — (eine Abkürzung für „Algorithmic Language“), meist Algol geschrieben, ist der Name einer Familie von Programmiersprachen, die ab Ende der 1950er Jahre bis in die 1980er Jahre Verwendung fanden. Trotz etlicher Gemeinsamkeiten in Struktur, Syntax… …   Deutsch Wikipedia

  • ALGOL — (algorithmic oriented language) Langage algorithmique utilisé pour le traitement des problèmes à caractère scientifique. Sa vocation essentiellement mathématique fait qu’il a joué un rôle important dans la définition et dans le développement des… …   Encyclopédie Universelle

  • ALGOL Y — was the name given to a speculated successor for the ALGOL 60 programming language that incorporated some radical features that were rejected for ALGOL 68 and ALGOL X. ALGOL Y was intended to be a radical reconstruction of ALGOL.One such feature… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”