Acta Informatica

, Volume 8, Issue 2, pp 97–112 | Cite as

Language design methods based on semantic principles

  • R. D. Tennent
Article

Summary

Two language design methods based on principles derived from the denotational approach to programming language semantics are described and illustrated by an application to the language Pascal. The principles are, firstly, the correspondence between parametric and declarative mechanisms, and secondly, a principle of abstraction for programming languages adapted from set theory. Several useful extensions and generalizations of Pascal emerge by applying these principles, including a solution to the array parameter problem, and a modularization facility.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Ammann, U., Wirth, N.: Advantages of the value parameter over the constant parameter. Unpublished memo, Eidgenössische Technische Hochschule, Zürich, 1972Google Scholar
  2. 2.
    Birtwistle, G.M., Dahl, O.J., Myrhaug, B., Nygaard, K.: SIMULA BEGIN. Philadelphia: Auerbach 1973. Also Lund: Studentlitteratur 1974Google Scholar
  3. 3.
    Brinch Hansen, P.: Universal types in Concurrent Pascal. Information Processing Letters 3, 165–166 (1975)CrossRefGoogle Scholar
  4. 4.
    Bron, C., de Vries, W.: A Pascal compiler for PDP-11 mini-computers. Software Practice and Experience 6, 109–116 (1976)Google Scholar
  5. 5.
    Church, A.: The calculi of lambda conversion. Princeton: Princeton University Press 1941Google Scholar
  6. 6.
    Dijkstra, E.W.: Goto statement considered harmful. Comm. ACM 11, 147–148, 538, 541 (1968)CrossRefGoogle Scholar
  7. 7.
    Dijkstra, E.W.: Notes on structured programming. In: Structured programming (O.J. Dahl, E.W. Dijkstra, C.A.R. Hoare, eds.). London: Academic Press 1972Google Scholar
  8. 8.
    Dijkstra, E.W.: Guarded commands, non-determinacy, and formal derivation of programs. Comm. ACM 18, 453–457 (1975)CrossRefGoogle Scholar
  9. 9.
    Evans, A.: PAL — a language for teaching programming linguistics. Proc. 23rd ACM National Conference, Princeton: Brandin Systems Press 1968Google Scholar
  10. 10.
    Grosse-Lindemann, C.O., Nagel, H.H.: Postlude to a Pascal compiler bootstrap on a DEC system 10. Software Practice and Experience 6, 29–42 (1976)Google Scholar
  11. 11.
    Habermann, A.N.: Critical comments on the programming language Pascal. Acta Informatica 3, 47–57 (1973)Google Scholar
  12. 12.
    Hoare, C.A.R.: Procedures and parameters: an axiomatic approach. In: Symposium on Semantics of Algorithmic Languages (E. Engeler, ed.), Lecture Notes in Mathematics, Vol. 188. Berlin-Heidelberg-New York: Springer 1971Google Scholar
  13. 13.
    Hoare, C.A.R.: A note on the for statement. BIT 12, 334–341 (1972)Google Scholar
  14. 14.
    Hoare, C.A.R.: Notes on data structuring. In: Structured programming (O.J. Dahl, E.W. Dijkstra, C.A.R. Hoare, eds.). London: Academic Press 1972Google Scholar
  15. 15.
    Hoare, C.A.R.: Hints on programming language design. Computer Science Department, Stanford University, CS-403, 1973Google Scholar
  16. 16.
    Hoare, C.A.R.: Recursive data structures. International J. Computer and Systems Sciences 4, 105–132 (1975)Google Scholar
  17. 17.
    Hoare, C.A.R., Wirth, N.: An axiomatic definition of the programming language Pascal. Acta Informatica 2, 335–355 (1973)Google Scholar
  18. 18.
    Jensen, K., Wirth, N.: Pascal: User manual and report. Lecture Notes in Computer Science, Vol. 18. Berlin-Heidelberg-New York: Springer 1974Google Scholar
  19. 19.
    Knobe, B., Yuval, G.: Towards Pascal II. The Hebrew University of Jerusalem, 1974Google Scholar
  20. 20.
    Knuth, D.E.: Structured programming with goto statements. Computing Surveys 6, 261–301 (1974)CrossRefGoogle Scholar
  21. 21.
    Landin, P.J.: The mechanical evaluation of expressions. Computer J. 6, 308–320 (1964)Google Scholar
  22. 22.
    Landin, P.J.: Getting rid of labels. Univac Systems Programming Research Report, New York, 1965Google Scholar
  23. 23.
    Landin, P.J.: The next 700 programming languages. Comm. ACM 9, 157–164 (1966)CrossRefGoogle Scholar
  24. 24.
    Lecarme, O., Desjardins, P.: More comments on the programming language Pascal. Acta Informatica 4, 231–243 (1975)Google Scholar
  25. 25.
    Ligler, G.T.: A mathematical approach to language design. Conference Record of the Second ACM Symposium on Principles of Programming Languages, Palo Alto, 1975Google Scholar
  26. 26.
    McCarthy, J.: A basis for a mathematical theory of computation. In: Computer programming and formal systems (P. Braffort, D. Hirschberg, eds.). Amsterdam: North-Holland 1963Google Scholar
  27. 27.
    Milne, R.E.: The formal semantics of computer languages and their implementations. Oxford University Computing Laboratory, Programming Research Group, technical microfiche TCF-2, 1974Google Scholar
  28. 28.
    Milne, R.E., Strachey, C.: A theory of programming language semantics. London: Chapman and Hall. Also New York: Wiley 1976Google Scholar
  29. 29.
    Mosses, P.: The mathematical semantics of ALGOL 60. Oxford University Computing Laboratory, Programming Research Group, technical monograph PRG-12, 1974Google Scholar
  30. 30.
    Quine, W.O.: Set theory and its logic. Cambridge (Mass.): Harvard University Press 1963Google Scholar
  31. 31.
    Reynolds, J.C.: Gedanken — a simple typeless language based on the principle of completeness and the reference concept. Comm. ACM 13, 308–319 (1970)CrossRefGoogle Scholar
  32. 32.
    Schuman, S.A.: Towards modular programming in high-level languages. ALGOL Bulletin 37, 12–23 (1974)Google Scholar
  33. 33.
    Stoll, R.R.: Set theory and logic. San Francisco: Freeman 1963Google Scholar
  34. 34.
    Strachey, C.: Towards a formal semantics. In: Formal language description languages (T. Steel, ed.). Amsterdam: North-Holland 1966Google Scholar
  35. 35.
    Tennent, R.D.: Mathematical semantics and design of programming languages. University of Toronto, Ontario, Canada, Ph. D. thesis, 1973Google Scholar
  36. 36.
    Tennent, R.D.: The denotational semantics of programming languages. Comm. ACM 19, 437–453 (1976)CrossRefGoogle Scholar
  37. 37.
    Wang, A.: Generalized types in high-level programming languages. Institute of Mathematics, University of Oslo, Norway, Research Reports in Informatics, No. 1, 1975Google Scholar
  38. 38.
    Wichmann, B.A.: ALGOL 60: Compilation and assessment. London: Academic Press 1973Google Scholar
  39. 39.
    van Wijngaarden, A., et al.: Report on the algorithmic language ALGOL 68. Numer. Math. 14, 79–218 (1969)Google Scholar
  40. 40.
    Wirth, N.: The programming language Pascal. Acta Informatica 1, 35–63 (1971)Google Scholar
  41. 41.
    Wirth, N.: Systematic programming — an introduction. Englewood Cliffs(N. J.): Prentice-Hall 1973Google Scholar
  42. 42.
    Wirth, N.: On the design of programming languages. In: Proc. IFIP Congress 74 (J.L. Rosenfeld, ed.), Stockholm. Amsterdam: North-Holland 1974Google Scholar
  43. 43.
    Wirth, N.: An assessment of the programming language Pascal. IEEE Trans. Software Engineering 1, pp. 192–198 (1975)Google Scholar
  44. 44.
    Wirth, N., Hoare, C.A.R.: A contribution to the development of ALGOL. Comm. ACM 9, 413–431 (1966)CrossRefGoogle Scholar
  45. 45.
    Zahn, C.J.: A control statement for natural top-down structured programming. In: Programming Symposium Proceedings, Colloque sur la Programmation, Paris (1974). Lecture Notes in Computer Science, Vol. 19. Berlin-Heidelberg-New York: Springer 1974Google Scholar

Copyright information

© Springer-Verlag 1977

Authors and Affiliations

  • R. D. Tennent
    • 1
  1. 1.Department of Computing and Information ScienceQueen's UniversityKingstonCanada

Personalised recommendations