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.
Similar content being viewed by others
References
Ammann, U., Wirth, N.: Advantages of the value parameter over the constant parameter. Unpublished memo, Eidgenössische Technische Hochschule, Zürich, 1972
Birtwistle, G.M., Dahl, O.J., Myrhaug, B., Nygaard, K.: SIMULA BEGIN. Philadelphia: Auerbach 1973. Also Lund: Studentlitteratur 1974
Brinch Hansen, P.: Universal types in Concurrent Pascal. Information Processing Letters 3, 165–166 (1975)
Bron, C., de Vries, W.: A Pascal compiler for PDP-11 mini-computers. Software Practice and Experience 6, 109–116 (1976)
Church, A.: The calculi of lambda conversion. Princeton: Princeton University Press 1941
Dijkstra, E.W.: Goto statement considered harmful. Comm. ACM 11, 147–148, 538, 541 (1968)
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
Dijkstra, E.W.: Guarded commands, non-determinacy, and formal derivation of programs. Comm. ACM 18, 453–457 (1975)
Evans, A.: PAL — a language for teaching programming linguistics. Proc. 23rd ACM National Conference, Princeton: Brandin Systems Press 1968
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)
Habermann, A.N.: Critical comments on the programming language Pascal. Acta Informatica 3, 47–57 (1973)
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
Hoare, C.A.R.: A note on the for statement. BIT 12, 334–341 (1972)
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
Hoare, C.A.R.: Hints on programming language design. Computer Science Department, Stanford University, CS-403, 1973
Hoare, C.A.R.: Recursive data structures. International J. Computer and Systems Sciences 4, 105–132 (1975)
Hoare, C.A.R., Wirth, N.: An axiomatic definition of the programming language Pascal. Acta Informatica 2, 335–355 (1973)
Jensen, K., Wirth, N.: Pascal: User manual and report. Lecture Notes in Computer Science, Vol. 18. Berlin-Heidelberg-New York: Springer 1974
Knobe, B., Yuval, G.: Towards Pascal II. The Hebrew University of Jerusalem, 1974
Knuth, D.E.: Structured programming with goto statements. Computing Surveys 6, 261–301 (1974)
Landin, P.J.: The mechanical evaluation of expressions. Computer J. 6, 308–320 (1964)
Landin, P.J.: Getting rid of labels. Univac Systems Programming Research Report, New York, 1965
Landin, P.J.: The next 700 programming languages. Comm. ACM 9, 157–164 (1966)
Lecarme, O., Desjardins, P.: More comments on the programming language Pascal. Acta Informatica 4, 231–243 (1975)
Ligler, G.T.: A mathematical approach to language design. Conference Record of the Second ACM Symposium on Principles of Programming Languages, Palo Alto, 1975
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
Milne, R.E.: The formal semantics of computer languages and their implementations. Oxford University Computing Laboratory, Programming Research Group, technical microfiche TCF-2, 1974
Milne, R.E., Strachey, C.: A theory of programming language semantics. London: Chapman and Hall. Also New York: Wiley 1976
Mosses, P.: The mathematical semantics of ALGOL 60. Oxford University Computing Laboratory, Programming Research Group, technical monograph PRG-12, 1974
Quine, W.O.: Set theory and its logic. Cambridge (Mass.): Harvard University Press 1963
Reynolds, J.C.: Gedanken — a simple typeless language based on the principle of completeness and the reference concept. Comm. ACM 13, 308–319 (1970)
Schuman, S.A.: Towards modular programming in high-level languages. ALGOL Bulletin 37, 12–23 (1974)
Stoll, R.R.: Set theory and logic. San Francisco: Freeman 1963
Strachey, C.: Towards a formal semantics. In: Formal language description languages (T. Steel, ed.). Amsterdam: North-Holland 1966
Tennent, R.D.: Mathematical semantics and design of programming languages. University of Toronto, Ontario, Canada, Ph. D. thesis, 1973
Tennent, R.D.: The denotational semantics of programming languages. Comm. ACM 19, 437–453 (1976)
Wang, A.: Generalized types in high-level programming languages. Institute of Mathematics, University of Oslo, Norway, Research Reports in Informatics, No. 1, 1975
Wichmann, B.A.: ALGOL 60: Compilation and assessment. London: Academic Press 1973
van Wijngaarden, A., et al.: Report on the algorithmic language ALGOL 68. Numer. Math. 14, 79–218 (1969)
Wirth, N.: The programming language Pascal. Acta Informatica 1, 35–63 (1971)
Wirth, N.: Systematic programming — an introduction. Englewood Cliffs(N. J.): Prentice-Hall 1973
Wirth, N.: On the design of programming languages. In: Proc. IFIP Congress 74 (J.L. Rosenfeld, ed.), Stockholm. Amsterdam: North-Holland 1974
Wirth, N.: An assessment of the programming language Pascal. IEEE Trans. Software Engineering 1, pp. 192–198 (1975)
Wirth, N., Hoare, C.A.R.: A contribution to the development of ALGOL. Comm. ACM 9, 413–431 (1966)
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
Author information
Authors and Affiliations
Rights 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
Received:
Issue Date:
DOI: https://doi.org/10.1007/BF00289243