Programmiersprache - Retroware.de
Programmiersprache - Retroware.de
Programmiersprache - Retroware.de
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Algol 60 3<br />
Algol 60<br />
Die <strong>Programmiersprache</strong> Algol 60 wur<strong>de</strong> von 1958–1963 unter <strong>de</strong>r Führung <strong>de</strong>r Association for Computing<br />
Machinery (ACM) und <strong>de</strong>r Gesellschaft für Angewandte Mathematik und Mechanik (GAMM), später dann <strong>de</strong>r<br />
International Fe<strong>de</strong>ration for Information Processing (IFIP), entwickelt. Beteiligt waren unter an<strong>de</strong>rem John Backus,<br />
Friedrich Ludwig Bauer, John McCarthy, Peter Naur, Alan J. Perlis, Heinz Rutishauser und Klaus Samelson. Der<br />
Name Algol ist eine Kurzform für Algorithmic Language, 60 steht für das Jahr <strong>de</strong>r »Fastfertigstellung« (ein<br />
Diskussionsentwurf wur<strong>de</strong> als International Algorithmic Language (IAL) o<strong>de</strong>r Algol 58 bekannt; die endgültige<br />
Fassung (als »Revised Report« tituliert) stammt aus <strong>de</strong>m Jahre 1963).<br />
Der Sprachentwurf<br />
Algol 60 war als international entwickelte, von kommerziellen Interessen unabhängige, portable, prozedurale<br />
<strong>Programmiersprache</strong> in erster Linie für wissenschaftliche, das hieß damals numerische, Zwecke gedacht. Es gab aber<br />
auch wichtige nichtnumerische Anwendungen, weil ihre Einfachheit und für damalige Verhältnisse weitgehen<strong>de</strong><br />
Freiheit von Restriktionen sie angenehm zu benutzen machte.<br />
So wur<strong>de</strong> das Betriebssystem <strong>de</strong>r Burroughs B5000 Rechner in einer ALGOL-Version (ESPOL)<br />
programmiert; ein an<strong>de</strong>res Beispiel ist ein bibliothekarisches Katalogsystem für die Telefunken TR 4. Vgl.<br />
auch die Sprache JOVIAL, von ALGOL 58 abgeleitet, die jahrzehntelang zur Programmierung von<br />
Prozessrechnern in <strong>de</strong>r Luft- und Raumfahrt (Avionik) diente.<br />
Algol 60 war ein Meilenstein in <strong>de</strong>r Geschichte <strong>de</strong>r <strong>Programmiersprache</strong>n:<br />
• Mit ihr begann die saubere Definition von Spracheigenschaften unabhängig von (und vor) je<strong>de</strong>r Implementierung<br />
(an<strong>de</strong>rs als dies noch bei LISP war [1] ).<br />
• Der Algol 60 Report führte die formale Definition <strong>de</strong>r Syntax mit Hilfe <strong>de</strong>r Backus-Naur-Form ein, die bald<br />
allgemein üblich wur<strong>de</strong>.<br />
• ALGOL zeigte <strong>de</strong>n Wert eines klaren und einfachen Sprachkerns auf, eine Erfahrung, die bald Peter Landin zu<br />
seinem Sprachentwurf ISWIM inspirieren und so die meisten nach ALGOL entwickelten <strong>Programmiersprache</strong>n<br />
beeinflussen sollte.<br />
• ALGOL schrieb – gegen <strong>de</strong>n Trend <strong>de</strong>r Zeit – Laufzeitprüfungen vor, eine Entscheidung, die erst langsam<br />
gewürdigt und nachgeahmt wur<strong>de</strong>.<br />
• Auch die Unterscheidung zwischen <strong>de</strong>r Sprache an sich und ihrer technischen (Eingabe-) Darstellung (die auf<br />
vorhan<strong>de</strong>nen Geräte Rücksicht nehmen musste) fand Beifall, aber nur wenige Nachfolger. [2]<br />
Als (unerwartet) großes Problem erwies sich, dass die Ein-/Ausgabe nicht geregelt wor<strong>de</strong>n war, so dass <strong>de</strong>ren<br />
Implementierungen stark zwischen <strong>de</strong>n Compilern variieren. Beispielsweise wird ein Text einmal mit <strong>de</strong>m<br />
OUTSTRING- und einmal mit <strong>de</strong>m WRITETEXT-Befehl (beispielsweise bei <strong>de</strong>r Electrologica X1) ausgegeben.<br />
Eigenschaften<br />
Die Metho<strong>de</strong> <strong>de</strong>r sequentiellen Formelübersetzung von Bauer und Samelson ermöglichte es, auf viele Restriktionen<br />
zu verzichten, wie sie etwa FORTRAN kannte. Die darin enthaltene I<strong>de</strong>e <strong>de</strong>s Stapelspeichers ermöglichte dann auch<br />
rekursive Prozeduren (Dijkstra).<br />
Vom λ-Kalkül inspiriert war die Möglichkeit innerer Prozedur<strong>de</strong>finitionen (»Blockstruktur«). ‚begin‘-Blöcke<br />
(anonyme Prozeduren) wur<strong>de</strong>n vor allem dazu benutzt, Fel<strong>de</strong>r mit variablen Grenzen im Kellerspeicher anzulegen.<br />
Sichtbarkeit und Gültigkeitsbereich <strong>de</strong>r Variablen waren dabei korrekt lexikalisch <strong>de</strong>finiert. Vorgesehen waren auch<br />
‚own‘-Variablen, <strong>de</strong>ren Lebensdauer <strong>de</strong>r Programmlauf sein sollte (vgl. ‚static‘ in C); gera<strong>de</strong> dies wur<strong>de</strong> aber häufig<br />
nicht implementiert.