21.01.2013 Aufrufe

Programmiersprache - Retroware.de

Programmiersprache - Retroware.de

Programmiersprache - Retroware.de

MEHR ANZEIGEN
WENIGER ANZEIGEN

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.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!