Informatik-Spektrum

, Volume 33, Issue 3, pp 302–308

Dijkstras fruchtbarer, folgenreicher Irrtum

Teil 1: Die Kopenhagener Diskussion und deren Folgen
HISTORISCHE NOTIZEN DIJKSTRAS FOLGENREICHER IRRTUM

DOI: 10.1007/s00287-010-0433-7

Cite this article as:
Langmaack, H. Informatik Spektrum (2010) 33: 302. doi:10.1007/s00287-010-0433-7
  • 75 Downloads

Zusammenfassung

Der informatikgeschichtliche Artikel, dessen Titel durch eine Arbeit von C. L. McGowan angeregt ist, behandelt ein Problem, das E. W. Dijkstra nicht bewußt gestellt hat, sondern das er irrtümlicherweise 1960 in einer Aussage bzw. Vorschrift zur Implementierung rekursiver Prozeduren der blockstrukturierten Programmiersprache ALGOL60 aufgeworfen hat. Die irrtümliche ,,most recent“-Aussage warb implizit für dynamische statt ALGOL-intendierter statischer Namensbindung. Dieses Propagieren verursachte Irritationen beim Programmverstehen und -implementieren zwischen Anwendungsprogrammierern und Übersetzerkonstrukteuren und führte zu nichttreffenden und fehlleitenden Darstellungen in der Fachliteratur. Erstaunlicherweise erlebte das funktionale Programmieren mit Lisp eine ganz ähnliche Geschichte.

Organische Weiterentwicklung von praxisrelevanten Programmiersprachen wurde durch Dijkstras Aussage deutlich gehemmt. Man suchte den genannten Irritationen zu entgehen, indem man das Auftreten formaler Prozeduren ausschloß, ungeschachteltes Programmieren forcierte oder dynamische Namensbindung als generelles semantisches Prinzip propagierte. Solche Maßnahmen erschweren allerdings das Verfeinern und Verifizieren von Software; insbesondere pflegt statische Namensbindung zu allgemeineren Gesetzen und Regeln mit klareren Bezügen zur mathematischen Logik zu führen, die man bei Programmspezifikation und -verifikation braucht.

Bemerkenswerterweise kann nicht einmal objektorientiertes Programmieren mit ungeschachtelten Klassen die inhärente Komplexität der Verweisstrukturen zwischen Prozedurinkarnationen herunterschrauben, Strukturen, wie sie blockstrukturierte ALGOL-artige Programme mit formalen Prozeduren zur Laufzeit hervorbringen können. Das Verstehen objektorientierter Programme ist also durchaus nicht leichter als das von Programmen mit formalen Prozeduren. Der Weg etwa vom originalen, flachen Java hin zu Java mit inneren Klassen im Jahre 2000 ist konsequent und macht das Einbetten ALGOL-artiger Sprachen durchsichtiger.

Copyright information

© Springer-Verlag 2010

Authors and Affiliations

  1. 1.Institut für InformatikChristian-Albrechts-Universität zu KielKielDeutschland

Personalised recommendations