Skip to main content
Log in

Dijkstras fruchtbarer, folgenreicher Irrtum

Teil 3: Zu Laufzeitsystemkorrektheit und Auswirkungen von Dijkstras Aussage

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

Zusammenfassung

Weil die realen Probleme um das Implementieren ALGOL-artiger Programmiersprachen mit geschachtelten und formalen Prozeduren durch Korrektheitsbeweise hätten vermieden werden können, bietet Teil 3 des vorliegenden Artikels solche musterhaft, auf passend abstraktem Niveau, an: im Falle der vom ALGOL60-Bericht intendierten Sprachsemantik mit statischer Namensbindung und im Falle der von Dijkstras Laufzeitsystem vorgeschriebenen MR-Semantik mit dynamischer Namensbindung (MR gleich ,,most recent“). Im Grunde arbeitet ein Laufzeitsystem gemäß einer Großschrittkopierregel, während sich der Anwendungsprogrammierer für eigenes Programmverstehen besser an eine Kleinschrittkopierregel hält, die keine Kenntnisse vom Laufzeitsystem verlangt. Die funktionale Programmiersprache Lisp erlebte ein ganz ähnliches Ausspielen dynamischer gegen statische Namensbindung.

Die praktische Weiterentwicklung von Programmiersprachen und -techniken suchte den Problemen der Semantikunterschiede zu entgehen, indem man in wenig organischer Weise formale Prozeduren oder Schachtelung prozedurverwandter Konstrukte ausschloß. Überdies versprachen theoretische Resultate zur Programmspezifikation und -verifikation auf den ersten Blick, generelles dynamisches Binden sei dem statischen wegen des besseren Mechanisierungspotentials überlegen. Solche Maßnahmen und Sichten erschweren dennoch das Softwareverfeinern unter Informationsverbergen und das Softwareverifizieren; statische Namensbindung pflegt zu allgemeineren Gesetzen und Regeln mit klareren Bezügen zur mathematischen Logik zu führen.

Beachtenswerterweise kann nicht einmal objektorientiertes Programmieren mit ungeschachtelten Klassen die inhärente Komplexität der Verweisstrukturen zwischen Prozedurinkarnationen herunterschrauben, Strukturen, wie sie ALGOL-artige Programme mit formalen Prozeduren zur Laufzeit hervorbringen können. Das Verstehen von objektorientierten Programmen ist nicht leichter als das von Programmen mit formalen Prozeduren.

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. Aho AV (1968) Indexed grammars – an extension of context-free grammars. JACM 15(4):647–671

    Article  MATH  MathSciNet  Google Scholar 

  2. Aho AV (1969) Nested stack automata. JACM 16(3):383–406

    Article  MATH  MathSciNet  Google Scholar 

  3. Aho AV, Sethi R, Ullman JD (1989) Compiler-Bau, Teil 1. Addison-Wesley-Verlag GmbH, Bonn. 2. Aufl., Oldenbourg-Verlag, München Wien (1999)

  4. Bauer FL (2008) Persönliche Mitteilung zu Treffen mit E.W. Dijkstra und K. Samelson im ALGOL60-Komitee 1959/60

  5. Büchi JR (1960) Weak second order arithmetic and finite automata. Z Math Logik Grundl Math 6:66–92

    Article  MATH  Google Scholar 

  6. Clarke EM, German SM, Halpern JY (1983) Effektive Axiomatizations of Hoare-Logics. JACM 30:612–636

    Article  MATH  MathSciNet  Google Scholar 

  7. Clarke EM (1979) Programming language constructs for which it is impossible to obtain good Hoare-like axioms. JACM 26:129–147

    Article  MATH  Google Scholar 

  8. Curry HB, Feys R (1968) Combinatory Logic, Vol I. North–Holland, Amsterdam

    Google Scholar 

  9. Dahl O-J, Nygaard K (1968) Class and Subclass Declarations. In: Buxton JN (ed) Simulation Programming Languages. Proc IFIP Work Conf, Oslo 1967, North Holland, Amsterdam, pp 158–174

  10. Damm W, Josko B (1983) A sound and relativlely* complete Hoare-logic for a language with higher type procedures. Acta Informatica 20:59–101

    Article  MATH  MathSciNet  Google Scholar 

  11. Damm W (1982) The IO- and OI-hierarchies. Theor Comput Sci 20:95–207

    Article  MATH  MathSciNet  Google Scholar 

  12. Dijkstra EW (1960) Recursive programming. Num Math 2:312–318

    Article  MATH  MathSciNet  Google Scholar 

  13. Floyd RW (1967) Assigning meaning to programs. In Schwartz JT (ed) Mathematical Aspects of Computer Science. Proc Symp Applied Math 19, American Math Soc, Providence RI, pp 19–32

  14. 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 

  15. Goerigk W (2005) On Simulating Nested Procedures by Nested Classes. In: Czaja L (ed) Proc Worksh Concurrency, Specification & Programming 2005, Ruciane-Nida 2005, Vol 1, Warsaw University, pp 125–135

  16. Goerigk W, Langmaack H (2006) Formal Procedures versus Classes and Objects – On K. Nygaards Thesis concerning Program Structuring. In: Festschrift zur Emeritierung von G. Goos, Univ. Karlsruhe

  17. Goldberg A, Robson D (1989) Smalltalk-80, the Language. Addison-Wesley, Boston, MA

    MATH  Google Scholar 

  18. Gosling J, Joy B, Steele G (1996) The Java Language Specification, 1st edn. Addison-Wesley, Boston, MA

    MATH  Google Scholar 

  19. Gosling J, Joy B, Steele G, Bracha G (2000) The Java Language Specification, 2nd edn. Addison-Wesley, Boston, MA

    Google Scholar 

  20. Harel D (1979) First-Order-Dynamic Logic. LNCS 68, Springer, Berlin Heidelberg New York

  21. Hoare CAR (1969) An axiomatic basis for computer programming. Commun ACM 12:576–580

    Article  MATH  Google Scholar 

  22. Hoare CAR (2001) Personal communications. EU-ESPRIT-BRA-Projekt ,,Provably Correct Systems – ProCoS“, Oxford 1990, Cambridge

  23. van den Hove G (2009) Edsger Wybe Dijkstra – First Years in the Computing Science (1951–1968). Master Thesis, Univ Namur, Fac Comp Science

  24. Ichbiah JD (1980) Ada Reference Manual. LNCS 106, Springer, Berlin Heidelberg New York

  25. Igarashi A, Pierce B (2002) On inner classes. Informa Comput 177:56–89

    Article  MATH  MathSciNet  Google Scholar 

  26. Jensen K, Wirth N (1975) PASCAL User Manual and Report. Springer, Berlin Heidelberg New York

    MATH  Google Scholar 

  27. 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. Springer, Berlin Heidelberg New York, pp 97–111

  28. Kernighan BW, Ritchie DM (1978) The C programming language. Prentice Hall, Englewood Cliffs

    Google Scholar 

  29. Klein H-J (1980) Zur Modularitätseigenschaft von Programmen ALGOL-ähnlicher Programmiersprachen. Ber. 8001, Inst Inform Prakt Math, Univ Kiel

  30. Klein H-J (1980) Zur Charakterisierung von Programmen mit endlichen Arten. Dissertation Math-Nat Fak, Univ Kiel

  31. Kreczmar A, Salwicki A, Warpechowski M (1990) Loglan’88 – Report on the Programming Language, LNCS 414. Springer, Berlin

    Google Scholar 

  32. Langmaack H (1973) On correct procedure parameter transmission in higher programming languages. Acta Inform 2(2):110–142

    Article  MATH  MathSciNet  Google Scholar 

  33. Langmaack H (1974) On procedures as open subroutines I, II. Acta Inform 2:311–333 (1973) and Acta Informat 3:227–241 (1974)

    Google Scholar 

  34. Langmaack H (1974) Zum Begriff der Modularität von Programmiersprachen. In: Schlender B, Frielinghaus W (Hrsg) 3. GI-Fachtag ü Programmiersprachen, Kiel. LNCS 7:1–12, Springer

  35. Langmaack H (1982) On termination problems for finitely interpreted ALGOL-like programs. Acta Inform 18:79–108; auch Inst Informatik Prakt Math, Univ Kiel, Ber 7904 (1979)

    Article  MATH  MathSciNet  Google Scholar 

  36. Langmaack H (1985) A new transformational approach to partial correctness proof calculi for ALGOL68-like programs with finite modes and simple sideeffects. Ann Discr Math 24:73–102

    MathSciNet  Google Scholar 

  37. Langmaack H (2007) On revival of ALGOL-concepts in modern programming and specification languages. In: Jones CB, Lin Z, Woodcock J (eds) Bjørner/Zhou Festschrift. LNCS 4700, Springer, Berlin Heidelberg, pp 414–434

  38. Langmaack H, Kröger H, Kölsch R-T (1976) Scriptum zum Compilerbau-Praktikum SS 1975 u. WS 1975/76. Inst f Informatik u Prakt Math, CAU zu Kiel

  39. Langmaack H, Lippe WM, Wagner F (1979) The formal termination problem for programs with finite ALGOL68-modes. Inform Process Lett 9:155–159

    Article  MATH  MathSciNet  Google Scholar 

  40. Langmaack H, Olderog E-R (1980) Present-day Hoare-like systems for programming languages with procedures: power, limits and most likely extensions. In: de Bakker JW, van Leeuwen J (eds) Proceed Autom Lang Progr, 7th Coll, Noordwijkerhout, July 1980. Springer LNCS 85:363–373

  41. Langmaack H, Salwicki A, Warpechowski M (2009) On an algorithm determining direct superclasses in Java-like languages with inner classes – its correctness, completeness and uniqueness of solutions. Inform Comput 207:389–410

    Article  MATH  MathSciNet  Google Scholar 

  42. Lippe WM, Simon F (1978) A formal notion for equivalence of ALGOL-like programs. In: Robinet B (ed) Program transformations. Proc 3-rd Internat Symp on Programming, Paris, March 1978. Dunod, Paris, pp 140–197

    Google Scholar 

  43. Lipton RJ (1977) A necessary and sufficient condition for the existence of Hoare Logics. In: Proc 18th IEEE Symp on Foundations of Computer Science, Providence RI, Oct 1977. IEEE, New York, pp 1–6

  44. Loeckx J, Sieber K (1984) The Foundations of Program Verification. Wiley-Teubner, Chichester Stuttgart

    Google Scholar 

  45. Madsen OL, Møller-Pedersen B, Nygaard K (1993) Object Oriented Programming in the BETA Programming Language. Addison Wesley/ACM Press, New York

    Google Scholar 

  46. Maslov AN (1974) The hierarchy of indexed languages of an arbitrary level. Doklady Akademii Nauk SSSR 217(5):1013–1016

    MathSciNet  Google Scholar 

  47. Maslov AN (1976) Multilevel stack automata. Problemy Peredachi Informatsii 12(1):55–62

    MathSciNet  Google Scholar 

  48. McCarthy J et al (1965) Lisp 1.5 Programmer’s Manual. MIT Press, Cambridge, MA

    Google Scholar 

  49. McGowan CL (1972) The ,,most recent“ error: its causes and correction. In: Proc ACM Conf on Proving Assertions About Programs. SIGPLAN Notices 7(1), SIGACT News 14:191–202

    Article  Google Scholar 

  50. Milner R, Tofte M, Harper R (1990) The Definition of ML. MIT Press, Cambridge

    Google Scholar 

  51. Naur P (ed) et al (1960) Report on the algorithmic language ALGOL60. Num Math 2:106–136

    Google Scholar 

  52. Olderog E-R (1981) Sound and complete Hoare-like calculi based on copy rules. Acta Inform 16:161–197

    Article  MATH  MathSciNet  Google Scholar 

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

  54. Olderog E-R (1984) Correctness of programs with Pascal-like procedures without global variables. Theor Comput Sci 30:49–90

    Article  MATH  MathSciNet  Google Scholar 

  55. Salwicki A (1970) Formalized algorithmic languagees. Bull Acad Pol Sci Ser Sci Math Astr Phys 18(5):227–232

    MATH  MathSciNet  Google Scholar 

  56. Stärk R, Schmid J, Börger E (2001) Java and the Java Virtual Machine – Definition, Verification, Validation. Springer, Berlin Heidelberg New York

    MATH  Google Scholar 

  57. Steele Jr GL (1984) Common Lisp: the Language. Digital Press, Bedford, MA

    Google Scholar 

  58. Stroustrup B (1991) The C++ Programming Language, 2nd ed. Addison-Wesley, Reading MA

    Google Scholar 

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

    MATH  Google Scholar 

  60. Wilhelm R, Maurer D (1997) Übersetzerbau. Theorie, Konstruktion, Generierung, 2. Aufl. Springer, Berlin Heidelberg New York

    MATH  Google Scholar 

  61. Winklmann KA (1977) A theoretical study of some aspects of parameter passing in ALGOL60 and in similar programming languages. PhD Thesis, Purdue Univ, Lafayette, IN

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, 634–646 (2010). https://doi.org/10.1007/s00287-010-0466-y

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s00287-010-0466-y

Navigation