10.12.2012 Aufrufe

40 Jahre Informatik in München - Fakultät für Informatik - TUM

40 Jahre Informatik in München - Fakultät für Informatik - TUM

40 Jahre Informatik in München - Fakultät für Informatik - TUM

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.

lückenlosen Programmkorrektheitsbeweisens. Das Gegenargument, Programm<strong>in</strong>spektion<br />

sei wegen des monoton sich wiederholenden Räsonnierens<br />

extrem ermüdend und deshalb fehleranfällig, lasse ich nicht gelten.<br />

E<strong>in</strong> <strong>Informatik</strong>er, der an sicher laufenden Programmen wirklich <strong>in</strong>teressiert<br />

ist, verscheucht se<strong>in</strong> Ermüden durch se<strong>in</strong>e E<strong>in</strong>sicht, dass Inspektion<br />

pr<strong>in</strong>zipiell nicht völlig umgangen werden kann.<br />

Weil nichtrekursive Prozeduraufrufe gleich hohe Laufzeiteffizienz wie im<br />

ALCOR MAINZ 2002 behalten sollten, zwang uns die Rechnerstruktur<br />

der 2002, von der üblichen Gestaltung des Prozedurlaufzeitstacks<br />

– wie etwa von Dijkstra 1960 beschrieben – abzuweichen: Parameter<br />

und e<strong>in</strong>fache Variablen, lokal wie global, blieben absolut, direkt, ohne<br />

Modifikation adressiert, so dass wir Prozeduraufrufe quasi an die Deklarationen<br />

herantransportierten, während die ALGOL 60-Kopierregel den<br />

umgekehrten Weg nahelegt. Weil das implizite Namensumbenennen,<br />

um B<strong>in</strong>dungen nicht zu verfälschen (um statische B<strong>in</strong>dung zu erzielen),<br />

uns zu genauem Kopierregelstudium zwang, entdeckten wir ALGOL 60-<br />

Programme, deren statische Zeiger nicht der von Dijkstra beschriebenen<br />

“most recent”-Eigenschaft oder -Vorschrift genügen (deren Befolgung dynamische<br />

Namensb<strong>in</strong>dung be<strong>in</strong>haltet). Das unerwartete Laufzeitverhalten<br />

solcher Programmbeispiele legten wir im Vere<strong>in</strong> mit e<strong>in</strong>em musterhaftem<br />

Übersetzer und Prozedurlaufzeitsystem – <strong>in</strong> ALGOL-artiger Sprache<br />

– nieder im Buch A. A. Grau, U. Hill, H. Langmaack “Translation of AL-<br />

GOL 60” .<br />

Diskrepanzen zwischen anderweitigen Implementierungen, die der Devise<br />

“most recent”-B<strong>in</strong>dung folgten, und der im ALGOL 60-Bericht festgelegten<br />

Semantik statischer B<strong>in</strong>dung wirkten fatal e<strong>in</strong>schränkend auf die<br />

spätere Programmiersprachentwicklung. Die Laufzeitrechenstrukturen<br />

etwa von C und ADA s<strong>in</strong>d gegenüber ALGOL 60 (auch ALGOL 68 und<br />

PASCAL) deutlich reduziert, weil C und ADA nur reguläre formale Aufrufbäume<br />

gestatten. ALGOL 60 wie 68 dagegen können durch bloße<br />

Programmstrukturierung beliebig rekursiv aufzählbare, reguläre wie irreguläre<br />

formale Aufrufbäume generieren und damit das Laufzeitverhalten<br />

ohne Abfrage von Daten zusätzlich steuern (Langmaack, Hauptvortrag,<br />

1. GI-<strong>Jahre</strong>stagung, <strong>München</strong> 1971). Leider entwickelte die Firma Siemens<br />

ab Ende 1964 die 2002 nicht weiter. Aber gerade unsere Arbeit am<br />

ALCOR MÜNCHEN 2002 ist reiche Quelle <strong>für</strong> Erforschung korrekter<br />

Programm-, <strong>in</strong>sbesondere Prozedurimplementierungen gewesen.<br />

[Hans Langmaack]<br />

75

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!