skip to main content
article
Free Access

The denotational semantics of programming languages

Published:01 August 1976Publication History
Skip Abstract Section

Abstract

This paper is a tutorial introduction to the theory of programming language semantics developed by D. Scott and C. Strachey. The application of the theory to formal language specification is demonstrated and other applications are surveyed. The first language considered, LOOP, is very elementary and its definition merely introduces the notation and methodology of the approach. Then the semantic concepts of environments, stores, and continuations are introduced to model classes of programming language features and the underlying mathematical theory of computation due to Scott is motivated and outlined. Finally, the paper presents a formal definition of the language GEDANKEN.

References

  1. ACM {1971}. Proc. ACM Symp. on Data Structures in Programming Languages. SIGPLAN Notices (ACM Newsletter) 6, 2 (1971).]]Google ScholarGoogle Scholar
  2. ACM {1972}. Proc. ACM Conf. on Proving Assertions about Programs. SIGPLAN Notices (ACM Newsletter) 7, 1 (1972) ; also SIGACT News (ACM Newsletter) 14 (1972).]]Google ScholarGoogle Scholar
  3. ACM {1973}. Conf. Rec. ACM Syrup. on Principles of Programn-ring Languages, Boston, 1973.]]Google ScholarGoogle Scholar
  4. ACM {1975}. Conf. Rec. Second ACM Syrup. on Principles of Programming Languages, Palo Alto, Calif.]]Google ScholarGoogle Scholar
  5. Bakker, J.W. {1969}. Semantics of Programming Languages. In Advances in Information Systems Science, Vol. 2, J.T. Tou, Ed., Plenum Press, New York, 1969, pp. 173-227.]]Google ScholarGoogle Scholar
  6. de Bakker, J.W. {1971}. Recursive Procedures. Mathematical Center, Amsterdam, 1971.]]Google ScholarGoogle Scholar
  7. de Bakker, J.W. {1974}. Least Fixed Points Re-visited. Mathematical Center, Amsterdam, 1974.]]Google ScholarGoogle Scholar
  8. Bekic, H. {1969}. Definable operations in general algebras, and the theory of automata and flowcharts (unpublished).]]Google ScholarGoogle Scholar
  9. BranquarL P. {1971}. The composition of semantics in Algol 68. Comm. ACM 14, 11 (Nov. 1971), 697-708.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Burstall, R.M. {1967}. Semantics of assignment. In Machine Intelligence 2. American Elsevier, New York, pp. 3-20.]]Google ScholarGoogle Scholar
  11. Burstall, R.M. {1968}. Writing search functions in functional form. In Machine Intelligence 3. American Elsevier, New York, pp. 373-385.]]Google ScholarGoogle Scholar
  12. Cadiou, J.M. {1972}. Recursive definitions of partial functions and their computations. Tech. Rep. CS-266, Computer Sci. Dep., Stanford U., Stanford, Calif.]]Google ScholarGoogle Scholar
  13. Cadiou, J., and Levy, J. {1973}. Mechanizable proofs about parallel processes. 14th Annual IEEE Syrup. on Switching Theory and Automata, pp. 34-48.]]Google ScholarGoogle Scholar
  14. Church, A. {1941}. The Calculi of Lambda Conversion. Princeton U. Press, Princeton, N.J.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Cohen, E.S. {1975}. A semantic model for parallel systems with scheduling. In ACM {1975}, pp. 87-94.]] Google ScholarGoogle Scholar
  16. Dijkstra, E.W. {1972}. Notes on structured programming. In Structured Programming. Academic Press, New York, pp. 1-82.]] Google ScholarGoogle Scholar
  17. Donahue, J.E. {1974}. Mathematical semantics as a complementary definition for defined programming language constructs. Tech. Rep. CSRG-45, Computer Systems Research Group, U. of Toronto, Toronto, Canada.]]Google ScholarGoogle Scholar
  18. Egli, H. {1973}. An analysis of Scott's X-calculus models. TR-73-191, Dep. of Computer Sci., Cornell U., Ithaca, N.Y.]]Google ScholarGoogle Scholar
  19. Engeler, E., Ed. {1971 }. Syrup. on Semantics of Algorithmic Languages. Springer-Verlag Lecture Notes Series no. 188, Springer-Verlag, Berlin, Heidelberg, New York.]]Google ScholarGoogle Scholar
  20. Gordon, M.J.C. {1973}. Models of pure LISP. Experimental Programming Rep. No. 31. School of Artificial Intelligence, U. of Edinburgh, Edinburgh, Scotland.]]Google ScholarGoogle Scholar
  21. Hoare, C.A.R., and Lauer, P.E. {1974}. Consistent and complementary formal theories of the semantics of programming languages. Acta Inf. 3 (1974), pp. 135-153.]]Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Hoare, C.A.R., and Wirth, N. {1973}. An axiomatic definition of the programming language PASCAL. Acta Inf. 2 (1973), pp. 335-355.]]Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Kahn, G. {1973}. A preliminary theory for parallel programs. Research Rep. 6, IRIA, France.]]Google ScholarGoogle Scholar
  24. Kleene, S. {1952}. Introduction to Metamathematics. Van Nostrand, New York.]]Google ScholarGoogle Scholar
  25. Knuth, D.E. {1974}. Structured programming with go to statements. Computing Surveys 6, 4 (Dec. 1974), 261-301.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Landin, P.J. {1964}. The mechanical evaluation of expressions. Computer J. 6 (1964), 308-320.]]Google ScholarGoogle ScholarCross RefCross Ref
  27. Landin, P.J. {1966}. The next 700 programming languages. Comm. ACM9, 3 (Mar. 1966), 157-164.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Ledgard, H. {1971}. Ten mini-languages, a study of topical issues in programming languages. Computing Surveys 3, 3 (Sept. 1971), 115-146.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Ligler, G.T. {1975a}. A mathematical approach to language design. In ACM {1975}, pp. 41-53.]] Google ScholarGoogle Scholar
  30. Ligler, G.T. {1975b}. Surface properties of programming language constructs. International Syrup. on Proving and Improving Programs, Arc-et-Senans, France.]]Google ScholarGoogle Scholar
  31. McCarthy, J. {1960}. Recursive functions of symbolic expressions and their computation by machine, I. Comm. ACM3, 4 (April 1960), 184-195.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. McCarthy, J. {1963a}. Towards a mathematical science of computation. In Information Processing 1962. Proc. IFIP Cong. 62. North-Holland Pub. Co., Amsterdam, pp. 21-28.]]Google ScholarGoogle Scholar
  33. McCarthy, J. {1963b}. A basis for a mathematical theory of computation. Computer Programming and Formal Systems, P. Braffort and D. Hirschberg, Eds., North-Holland Pub. Co., Amsterdam, pp. 33-69.]]Google ScholarGoogle Scholar
  34. Meyer, A.R., and Ritchie, D.M. {1967}. The complexity of LOOP programs. Proc. 22nd ACM National Conference, pp. 465--469.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Milne, R.E. {1974}. The formal semantics of computer languages and their implementations. Ph.D. Th., Cambridge U. and Tech. Microfiche TCF-2, Oxford U. Computing Lab., Programming Research Group.]]Google ScholarGoogle Scholar
  36. Milner, R. {1972}. Implementation and applications of Scott's logic for computable functions. In ACM {1972}, pp. 1-6.]] Google ScholarGoogle Scholar
  37. Milner, R. {1973a}. Models of LCF. Tech. Rep. CS-73-332, Computer Sci. Dep., Stanford U., Stanford, Calif.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Milner, R. {1973b}. Processes: a mathematical model of computing agents. Proc. Logic. Colloquium, Bristol, England.]]Google ScholarGoogle Scholar
  39. Milner, R., and Weyrauch, R. {1972}. Proving compiler correctness in a mechanized logic. Machine Intelligence 7. Edinburgh U. Press, Edinburgh, Scotland, pp. 55-70.]]Google ScholarGoogle Scholar
  40. Morris, F.L. {1970}. The next 700 formal language descriptions. (unpublished).]]Google ScholarGoogle Scholar
  41. Morris, F.L. {1972}. Correctness of translations of programming languages, an algebraic approach. Tech. Rep. CS-72-303, Computer Sci. Dep., Stanford U., Stanford, Calif.]]Google ScholarGoogle Scholar
  42. Morris, J.H. { 1971 }. Another recursion induction principle. Comm. ACM 14, 5 (May 1971), 351-354.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Mosses, P. {1974}. The mathematical semantics of Algol 60. Tech. Mon. PRG-12, Oxford U. Computing Lab., Programming Research Group.]]Google ScholarGoogle Scholar
  44. Naur, P., Ed. {1963}. Revised report on the algorithmic language Algol 60. Comm. ACM6, 1 (Jan. 1963), 1-17.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Park, D. {1969}. Fixpoint induction and proofs of program properties. Machine Intelligence 5. American Elsevier, New York, pp. 59-78.]]Google ScholarGoogle Scholar
  46. Quine, W.V. {1960}. Word and Object. Technology Press, Cambridge, Mass., and Wiley, New York.]]Google ScholarGoogle Scholar
  47. Reynolds, J.C. {1969}. GEDANKEN--a simple typeless language which permits functional data structures and coroutines. ANL-7621, Argonne National Labs., Argonne, IlL]]Google ScholarGoogle Scholar
  48. Reynolds, J.C. {1970}. GEDANKEN--a simple typeless language based on the principle of completeness and the reference concept. Comm. ACM 13, 5 (May 1970), 308-319.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. Reynolds, J.C. {1972a}. Definitional interpreters for higher-order programming languages. Proc. 25th ACM National Conf., pp. 717-740.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. Reynolds, J.C. {1972b}. Notes on a lattice-theoretic approach to the theory of computation. Dep. Systems and Information Science, Syracuse U., Syracuse, New York.]]Google ScholarGoogle Scholar
  51. Reynolds, J.C. {1975}. On the interpretation of Scott's domains. Symposia Mathematica, VoL 15. Academic Press, London pp. 123-135.]]Google ScholarGoogle Scholar
  52. Reynolds, J.C. {1974a}. Towards a theory of type structure. Programming Symp. Paris. Springer-Verlag Lecture Notes in Computer Science, Vol. 19. Springer-Verlag, Berlin, Heidelberg, New York, pp. 408-429.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. Reynolds, J.C. {1974b}. On the relation between direct and continuation semantics. 2nd Colloquium on Automata, Languages, and Programming, Saarbrucken. Springer-Verlag Lecture Notes in Computer Science, Vol. 14, Springer-Verlag, Berlin, Heidelberg, New York.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. Rustin, R., Ed. {1972}. Formal Semantics of Programming Languages. Courant Computer Science Symposia 2. Prentice- Hall, Englewood Cliffs, N.J.]]Google ScholarGoogle Scholar
  55. Scott, D. {1970}. Outline of a mathematical theory of computation. Proc. 4th Princeton Conf. on Information Sciences and Systems; also Tech. Mon. PRG-2, Oxford U. Computing Lab., Programming Research Group, pp. 169-176.]]Google ScholarGoogle Scholar
  56. Scott, D. {1971a}. The lattice of fiow diagrams. In Engeler {1971}; also Tech. Mon. PRG-3, Oxford U. Computing Lab., Programming Research Group, pp. 311-366.]]Google ScholarGoogle Scholar
  57. Scott, D. {1971b}. Continuous lattices. Proc. 1971 Dalhousie Conf. Springer-Verlag Lecture Note Series, No. 274, Springer- Verlag, Berlin, Heidelberg, New York; also Tech. Mort. PRG-7, Oxford U. Computing Lab., Programming Research Group.]]Google ScholarGoogle Scholar
  58. Scott, D. {1972a}. Mathematical concepts in programming language semantics. AFIPS Conf. Proc., Vol. 40, 1972 SJCC AFIPS Press, Montvale, N.J., pp. 225-234.]]Google ScholarGoogle Scholar
  59. Scott, D. {1972b}. Lattice theory, data types, and semantics. In Rustin {1972}, pp. 65-106.]]Google ScholarGoogle Scholar
  60. Scott, D. {I 972c}. Lattice theoretic models for various type-free calculi. Proc. 4th International Cong. for Logic, Methodology, and the Philosophy of Science, Bucharest.]]Google ScholarGoogle Scholar
  61. Scott, D. {1972d}. Data types as lattices. Unpublished lecture notes, Amsterdam.]]Google ScholarGoogle Scholar
  62. Scott, D., and Strachey, C. {1971 }. Towards a mathematical semantics for computer languages. Proc. Symp. on Computers and Automata, Polytechnic Institute of Brooklyn; also Tech. Mon. PRG-6, Oxford U. Computing Lab., pp. 19-46.]]Google ScholarGoogle Scholar
  63. Steel, T., Ed. {1966}. Formal Language Description Languages. North-HoUand Pub. Co., Amsterdam.]]Google ScholarGoogle Scholar
  64. Strachey, C. {1966}. Towards a formal semantics. In Steel {1966}, pp. 198-218.]]Google ScholarGoogle Scholar
  65. Strachey, C. {1967}. Fundamental concepts in programming languages. In Notes for the International Summer School in Computer Programming, Copenhagen (unpublished).]]Google ScholarGoogle Scholar
  66. Strachey, C. {1972}. Varieties of programming language. Proc. International Computing Symp., Cini Foundation, Venice; also Tech. Monograph PRG-10, Oxford U. Computing Lab. Programming Research Group.]]Google ScholarGoogle Scholar
  67. Strachey, C., and Wadsworth, C. {1974}. Continuations, a mathematical semantics for handling full jumps. Tech. Mon. PRG-11. Oxford U. Computing Lab., Programming Research Group.]]Google ScholarGoogle Scholar
  68. Terment, R.D. {1973}. Mathematical semantics and design of programming languages. Ph.D. Th., Dep. of Computer Sci., U. of Toronto.]]Google ScholarGoogle Scholar
  69. Vuillemin, J.E. {1973}. Proof techniques for recursive programs. Tech. Rep. CS-73-393, Computer Sci. Dep., Stanford U.]]Google ScholarGoogle Scholar
  70. Wadsworth, C.P. {1971}. Semantics and pragmatics of the lambda calculus. Ph.D. Th., Oxford U.]]Google ScholarGoogle Scholar
  71. Wadsworth, C.P. {1975}. The relation between lambda-expressions and their denotations (unpublished).]]Google ScholarGoogle Scholar

Index Terms

  1. The denotational semantics of programming languages
      Index terms have been assigned to the content through auto-classification.

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader