Skip to main content
Log in

Dijkstras fruchtbarer, folgenreicher Irrtum

Teil 1: Die Kopenhagener Diskussion und deren Folgen

  • HISTORISCHE NOTIZEN
  • DIJKSTRAS FOLGENREICHER IRRTUM
  • Published:
Informatik-Spektrum Aims and scope

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

References

  1. Allen FE (1969) Program Optimization. Ann. Rev. Autom. Programming, Vol. 5. Pergamon Press, New York

    Google Scholar 

  2. Aho AV, Sethi R, Ullman JD (1989) Compiler-Bau, Teil 1. Addison-Wesley, Bonn

    Google Scholar 

  3. Bauer FL, Samelson K (1957) Verfahren zur automatischen Verarbeitung von kodierten Daten und Rechenmaschinen zur Ausübung des Verfahrens. Patentanmeldung Deutsches Patentamt

  4. Bauer FL (2008) Persönliche Mitteilung zum Kopenhagener Treffen 1959 mit E. W. Dijkstra und K. Samelson

  5. Cocke J, Kennedy K (1977) An Algorithm for Reduction of Operator Strength. Commun ACM 20(11):850–856

    Article  MATH  Google Scholar 

  6. Dijkstra EW (1960) Recursive Programming. Num Math 2:312–318

    Article  MATH  MathSciNet  Google Scholar 

  7. Grau AA, Hill U, Langmaack H (1967) Translation of ALGOL60. In: Samelson K (chief ed.) Handbook for Automatic Computation Ib. Springer, Berlin Heidelberg New York

    Google Scholar 

  8. Gries D (1971) Compiler Construction for Digital Computers. Wiley, New York London Sydney Toronto

    MATH  Google Scholar 

  9. Hill U, Langmaack H, Schwarz HR, Seegmüller G (1962) Efficient handling of subscripted variables in ALGOL60-compilers. Proceedings of the Symposium on Symbolic Languages in Data Processing, Rome. Gordon & Breach, New York, pp 333–340

  10. Hill U (1962) Der ALGOL-Übersetzer ALCOR MAINZ 2002. Diplomarbeit, Inst. f. Angew. Math. Univ. Mainz

  11. Hill U, Langmaack H (1964) ALGOL-Manual. Spezielle Anhänge 1–6, Beilagen 1–3. Übersetzer ALCOR MAINZ 2002, 2K und 5K für die Siemens-DV-Anlage 2002. Beschr. NV Bs 36/1, 33 pp. Siemens & Halske AG, Wernerwerk, München

    Google Scholar 

  12. Hill U, Langmaack H (1965) Spezielle Anhänge zum ALGOL-Manual für den Übersetzer ALCOR MÜNCHEN 2002 für die Siemens-DV-Anlage 2002. Spezielle Anhänge 1–7, Beilagen 1–4, 50 pp. Siemens & Halske AG, München

    Google Scholar 

  13. Kandzia P, Langmaack H (1974) On a theorem of McGowan concerning the “most recent”-property of programs. Bericht A 74/07, Fachb. Ang. Math. Inf., Univ. Saarland, 19 pp

  14. Kandzia P (1974) On the “most recent”-property of ALGOL–like programs. In: Loeckx J (ed) Proc. 2nd Coll. Automata, Languages and Programming. LNCS 14, 97–111. Springer, Berlin Heidelberg New York

  15. Langmaack H (1964) Der Übersetzer ALCOR MUENCHEN 2002. Bericht, Tagung der ALCOR-Gruppe, Bad Soden/Taunus, 19./20. Oktober 1964. Manuskript, 22 pp. TH München

  16. Langmaack H (1973) On Correct Procedure Parameter Transmission in Higher Programming Languages. Acta Inform 2(2):110–142

    Article  MATH  MathSciNet  Google Scholar 

  17. Langmaack H (2002) Klaus Samelsons frühe Beiträge zur Informatikentwicklung. Informatik-Spektrum 18:132–137

    Article  Google Scholar 

  18. McGowan CL (1972) The “most recent” error: its causes and correction. In: Proc. ACM Conf. on Proving assertions about programs. SIGPLAN Notices 7, No. 1, SIGACT News 14:191–202

    Article  Google Scholar 

  19. Naur P et al. (eds) (1960) Report on the Algorithmic Language ALGOL60. Num Math 2:106–136

    Article  MathSciNet  Google Scholar 

  20. Naur P et al. (eds) (1963) Revised Report on the Algorithmic Language ALGOL60. Num Math 4:420–453

    MathSciNet  Google Scholar 

  21. Olderog E-R (1981) Sound and Complete Hoare-like Calculi Based on Copy Rules. Acta Inform 16:161–197

    Article  MATH  MathSciNet  Google Scholar 

  22. Olderog E-R (1981) Charakterisierung Hoarescher Systeme für ALGOL-ähnliche Programmiersprachen. Dissertation. Bericht 5/81, Inst. Informatik Prakt. Math., Univ. Kiel, 185 pp

  23. Paul M (2009) Persönliche Mitteilung zu ALGOL58 und dessen Interpretierer

  24. Perlis AJ, Samelson K (eds.) (1959) ACM Committee on Programming Languages and GAMM Comittee on Programming. Report on the Algorithmic Language ALGOL. Num Math 1:41–60

    Article  MATH  MathSciNet  Google Scholar 

  25. Randell B, Russell LJ (1964) ALGOL60 Implementation. Academic Press, London New York

    Google Scholar 

  26. Rutishauser H (1951) Über automatische Rechenplanfertigung bei programmgesteuerten Rechenanlagen. Z Angew Math Mech 31:255

    Article  Google Scholar 

  27. Samelson K, Bauer FL (1959) Sequentielle Formelübersetzung. Elektr Rechenanl 1(4):176–182

    MATH  Google Scholar 

  28. Samelson K (1957) Probleme der Programmierungstechnik. In: Int. Koll. ü. Probleme d. Rechentechnik, Dresden 1955. VEB Deutscher Verlag der Wissenschaften, Berlin, S 61–68

    Google Scholar 

  29. van der Poel WL (1952) Dead Programmes for a Magnetic Drum Automatic Computer. Appl Sci Res B 3:190–198

    Google Scholar 

  30. Waite WM, Goos G (1984) Compiler Construction. Springer, New York Berlin Heidelberg Tokyo

    MATH  Google Scholar 

  31. Wilhelm R, Maurer D (1992) Übersetzerbau. Theorie, Konstruktion, Generierung. Springer, Berlin Heidelberg New York

    MATH  Google Scholar 

  32. Wilhelm R, Maurer D (1997) Übersetzerbau. Theorie, Konstruktion, Generierung. 2. Auflage. Springer, Berlin Heidelberg NewYork

    MATH  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Hans Langmaack.

Rights and permissions

Reprints and permissions

About this article

Cite this article

Langmaack, H. Dijkstras fruchtbarer, folgenreicher Irrtum. Informatik Spektrum 33, 302–308 (2010). https://doi.org/10.1007/s00287-010-0433-7

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s00287-010-0433-7

Navigation