Skip to main content
Log in

Language design methods based on semantic principles

  • Published:
Acta Informatica Aims and scope Submit manuscript

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.

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.

Similar content being viewed by others

References

  1. Ammann, U., Wirth, N.: Advantages of the value parameter over the constant parameter. Unpublished memo, Eidgenössische Technische Hochschule, Zürich, 1972

    Google Scholar 

  2. Birtwistle, G.M., Dahl, O.J., Myrhaug, B., Nygaard, K.: SIMULA BEGIN. Philadelphia: Auerbach 1973. Also Lund: Studentlitteratur 1974

    Google Scholar 

  3. Brinch Hansen, P.: Universal types in Concurrent Pascal. Information Processing Letters 3, 165–166 (1975)

    Article  Google Scholar 

  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. Church, A.: The calculi of lambda conversion. Princeton: Princeton University Press 1941

    Google Scholar 

  6. Dijkstra, E.W.: Goto statement considered harmful. Comm. ACM 11, 147–148, 538, 541 (1968)

    Article  Google Scholar 

  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 1972

    Google Scholar 

  8. Dijkstra, E.W.: Guarded commands, non-determinacy, and formal derivation of programs. Comm. ACM 18, 453–457 (1975)

    Article  Google Scholar 

  9. Evans, A.: PAL — a language for teaching programming linguistics. Proc. 23rd ACM National Conference, Princeton: Brandin Systems Press 1968

    Google Scholar 

  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. Habermann, A.N.: Critical comments on the programming language Pascal. Acta Informatica 3, 47–57 (1973)

    Google Scholar 

  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 1971

    Google Scholar 

  13. Hoare, C.A.R.: A note on the for statement. BIT 12, 334–341 (1972)

    Google Scholar 

  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 1972

    Google Scholar 

  15. Hoare, C.A.R.: Hints on programming language design. Computer Science Department, Stanford University, CS-403, 1973

  16. Hoare, C.A.R.: Recursive data structures. International J. Computer and Systems Sciences 4, 105–132 (1975)

    Google Scholar 

  17. Hoare, C.A.R., Wirth, N.: An axiomatic definition of the programming language Pascal. Acta Informatica 2, 335–355 (1973)

    Google Scholar 

  18. Jensen, K., Wirth, N.: Pascal: User manual and report. Lecture Notes in Computer Science, Vol. 18. Berlin-Heidelberg-New York: Springer 1974

    Google Scholar 

  19. Knobe, B., Yuval, G.: Towards Pascal II. The Hebrew University of Jerusalem, 1974

  20. Knuth, D.E.: Structured programming with goto statements. Computing Surveys 6, 261–301 (1974)

    Article  Google Scholar 

  21. Landin, P.J.: The mechanical evaluation of expressions. Computer J. 6, 308–320 (1964)

    Google Scholar 

  22. Landin, P.J.: Getting rid of labels. Univac Systems Programming Research Report, New York, 1965

  23. Landin, P.J.: The next 700 programming languages. Comm. ACM 9, 157–164 (1966)

    Article  Google Scholar 

  24. Lecarme, O., Desjardins, P.: More comments on the programming language Pascal. Acta Informatica 4, 231–243 (1975)

    Google Scholar 

  25. Ligler, G.T.: A mathematical approach to language design. Conference Record of the Second ACM Symposium on Principles of Programming Languages, Palo Alto, 1975

  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 1963

    Google Scholar 

  27. Milne, R.E.: The formal semantics of computer languages and their implementations. Oxford University Computing Laboratory, Programming Research Group, technical microfiche TCF-2, 1974

  28. Milne, R.E., Strachey, C.: A theory of programming language semantics. London: Chapman and Hall. Also New York: Wiley 1976

    Google Scholar 

  29. Mosses, P.: The mathematical semantics of ALGOL 60. Oxford University Computing Laboratory, Programming Research Group, technical monograph PRG-12, 1974

  30. Quine, W.O.: Set theory and its logic. Cambridge (Mass.): Harvard University Press 1963

    Google Scholar 

  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)

    Article  Google Scholar 

  32. Schuman, S.A.: Towards modular programming in high-level languages. ALGOL Bulletin 37, 12–23 (1974)

    Google Scholar 

  33. Stoll, R.R.: Set theory and logic. San Francisco: Freeman 1963

    Google Scholar 

  34. Strachey, C.: Towards a formal semantics. In: Formal language description languages (T. Steel, ed.). Amsterdam: North-Holland 1966

    Google Scholar 

  35. Tennent, R.D.: Mathematical semantics and design of programming languages. University of Toronto, Ontario, Canada, Ph. D. thesis, 1973

    Google Scholar 

  36. Tennent, R.D.: The denotational semantics of programming languages. Comm. ACM 19, 437–453 (1976)

    Article  Google Scholar 

  37. Wang, A.: Generalized types in high-level programming languages. Institute of Mathematics, University of Oslo, Norway, Research Reports in Informatics, No. 1, 1975

    Google Scholar 

  38. Wichmann, B.A.: ALGOL 60: Compilation and assessment. London: Academic Press 1973

    Google Scholar 

  39. van Wijngaarden, A., et al.: Report on the algorithmic language ALGOL 68. Numer. Math. 14, 79–218 (1969)

    Google Scholar 

  40. Wirth, N.: The programming language Pascal. Acta Informatica 1, 35–63 (1971)

    Google Scholar 

  41. Wirth, N.: Systematic programming — an introduction. Englewood Cliffs(N. J.): Prentice-Hall 1973

    Google Scholar 

  42. Wirth, N.: On the design of programming languages. In: Proc. IFIP Congress 74 (J.L. Rosenfeld, ed.), Stockholm. Amsterdam: North-Holland 1974

    Google Scholar 

  43. Wirth, N.: An assessment of the programming language Pascal. IEEE Trans. Software Engineering 1, pp. 192–198 (1975)

    Google Scholar 

  44. Wirth, N., Hoare, C.A.R.: A contribution to the development of ALGOL. Comm. ACM 9, 413–431 (1966)

    Article  Google Scholar 

  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 1974

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Tennent, R.D. Language design methods based on semantic principles. Acta Informatica 8, 97–112 (1977). https://doi.org/10.1007/BF00289243

Download citation

  • Received:

  • Issue Date:

  • DOI: https://doi.org/10.1007/BF00289243

Keywords

Navigation