Skip to main content
Log in

Induction, Domains, Calculi: Strachey's Contributions to Programming-Language Engineering

  • Published:
Higher-Order and Symbolic Computation

Abstract

In collaboration with his colleagues at Oxford, Christopher Strachey pioneered the analysis of programming languages in terms of semantic features. Three of Strachey's contributions—inductive definition of semantics, semantic-domain definitions, and calculi for semantic description—are presented, and their consequences on languages research are described. Strachey's impact, present and future, on the computer programming “mainstream” is also outlined.

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. Abadi, M. and Cardelli, L. A Theory of Objects. Springer, Berlin, 1996.

    Google Scholar 

  2. Abadi, M. and Gordon, A. A calculus for cryptographic protocols: The SPi calculus. Information and Computation 148 (1999) 1-70.

    Google Scholar 

  3. Barron, D.W. An Introduction to the Study of Programming Languages. Cambridge Univ. Press, 1977.

  4. Bjø rner, D. and Oest, O. Towards a Formal Description of Ada. Lecture Notes in Computer Science, Vol. 98. Springer Verlag, 1980.

  5. Burstall, R., MacQueen, D., and Sanella, D. HOPE: An experimental applicative language. Technical Report CSR-62-80, Computer Science Dept., University of Edinburgh, 1981.

  6. Cardelli, L. Abstractions for mobile computation. In Secure Internet Programming. Lecture Notes in Computer Science, Vol. 1603, J. Vitek and C. Jensen (Eds.). Springer Verlag, 1999, pp. 51-94.

  7. Cardelli, L. and Wegner, P. On understanding types, data abstraction, and polymorphism. Computing Surveys 17(4) (1985) 471-522.

    Google Scholar 

  8. Cousot, P. and Cousot, R. Abstract interpretation: A unified lattice model for static analysis of programs. In Proc. 4th ACM Symp. on Principles of Programming Languages. ACM Press, 1977, pp. 238-252.

  9. Cousot, P. and Cousot, R. Higher-order abstract interpretation. In Proc. IEEE Int'l. Conf. Programming Languages. IEEE Press, 1994.

  10. Floyd, R.W. Assigning meanings to programs. Symposia in Applied Mathematics 19 (1967) 19-32.

    Google Scholar 

  11. Gamma, E. Helm, R., Johnson, R., and Vlissides, J. Design Patterns: Elements of Reusable Object-Oriented Software. Addison Wesley, Reading, MA, 1994.

    Google Scholar 

  12. Garlan, D. and Shaw, M. An introduction to software architecture. In Advances in Software Engineering and Knowledge, V. Ambriola and G. Tortora (Eds.). World Scientific, 1993, pp. 1-39.

  13. Gelernter, D. and Jagannathan, S. Programming Linguistics. MIT Press, Cambridge, MA, 1990.

    Google Scholar 

  14. Gordon, M.J.C. Towards a semantic theory of dynamic binding. Technical Report STAN-CS-75-507, Computer Science Dept., Stanford Univ., 1975.

  15. Gosling, J., Joy, B., and Steele, G. The Java Language Specification. Addison Wesley, Reading, MA, 1996.

    Google Scholar 

  16. Gunter, C. Semantics of Programming Languages. MIT Press, Cambridge, MA, 1992.

    Google Scholar 

  17. Heintze, N. and Riecke, J. The SLam calculus: Programming with secrecy and integrity. In Proc. ACM Symp. on Principles of Programming Languages, 1998, pp. 365-377.

  18. Hoare, C.A.R. An axiomatic basis for computer programming. Commun. ACM12 (1969) 576-580.

    Google Scholar 

  19. Hoare, C.A.R. Notes on data structuring. In Structured Programming, O.J. Dahl, E. Dijkstra, and C.A.R. Hoare (Eds.). Academic Press, 1972, pp. 83-174.

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

    Google Scholar 

  21. Jones, N. and Nielson, F. Abstract interpretation: A semantics-based tool for program analysis. In Handbook of Logic in Computer Science, Vol. 4, S. Abramsky, D. Gabbay, and T. Maibaum (Eds.). Oxford Univ. Press, 1995, pp. 527-636.

  22. Kahn, G. Natural semantics. In Lecture Notes in Computer Science, Vol. 247. Springer, Berlin, 1987, pp. 22-39. Proc. STACS '87.

    Google Scholar 

  23. Knuth, D. On the translation of languages from left to right. Information and Control 8(6) (1965) 607-639.

    Google Scholar 

  24. Knuth, D. The semantics of context-free languages. Math. Systems Theory 2 (1971) 127-145. Corrigenda, Vol. 5, p. 95, 1971.

    Google Scholar 

  25. Landin, P.J. The next 700 programming languages. Communications of the ACM 9(3) (1966) 157-166.

    Google Scholar 

  26. Lloyd, J. Combining functional and logic programming languages. In Logic Programming: Proceedings of the 1994 Symposium, M. Bruynooghe (Ed.). MIT Press, 1994, pp. 43-57.

  27. Milne, R. and Strachey, C. A Theory of Programming Language Semantics. Chapman and Hall, 1976.

  28. Milner, R. Communication and Concurrency. Prentice-Hall, 1989.

  29. Milner, R. and Tofte, M. Commentary on Standard ML. The MIT Press, 1991.

  30. Milner, R., Tofte, M., and Harper, R. The Definition of Standard ML. The MIT Press, 1990.

  31. Mitchell, J.C. Foundations for Programming Languages. The MIT Press, Cambridge, Massachusetts, 1996.

    Google Scholar 

  32. Mosses, P.D. Mathematical semantics of Algol60. Technical Report Technical Monograph PRG-12, Programming Research Group, University of Oxford, U.K., 1974.

    Google Scholar 

  33. Mosses, P.D. Action Semantics. Cambridge Tracts in Theoretical Computer Science 26. Cambridge University Press, 1992.

  34. Mosses, P.D. and Watt, D.A. The use of action semantics. In Formal Description of Programming Concepts III, Proc. IFIP TC2 Working Conference, Gl. Avernæ s, 1986, M. Wirsing (Ed.). IFIP, North-Holland, 1987.

    Google Scholar 

  35. Muchnick, S. and Pleban, U. A semantic comparison of LISP and Scheme. In Conf. on LISP and Functional Programming. ACM, 1982, pp. 56-64.

  36. Naur, P. Revised report on the algorithmic language Algol 60. Communications of the ACM 6(1) (1963) 1-17.

    Google Scholar 

  37. Nielson, F. A denotational framework for data flow analysis. Acta Informatica 18 (1982) 265-287.

    Google Scholar 

  38. Nielson, F., Nielson, H.R., and Hankin, C. Principles of Program Analysis. Springer Verlag, 1999.

  39. Nordström, B., Petersson, K., and Smith, J. Programming in Martin-Löf's Type Theory. International Series on Monographs on Computer Science No. 7. Oxford University Press, 1990.

  40. Plotkin, G.D. A structural approach to operational semantics. Technical Report FN-19, Computer Science Department, Aarhus University, Aarhus, Denmark, September 1981.

    Google Scholar 

  41. Reynolds, J. Types, abstraction, and parametric polymorphism. In Information Processing '83, R.E.A. Mason (Ed.). North-Holland, Amsterdam, 1983, pp. 513-523.

    Google Scholar 

  42. Reynolds, J.C. Notes on a lattice-theoretic approach to the theory of computation. Technical Report, Computer Science, Syracuse University, 1972.

  43. Schmidt, D.A. Denotational Semantics: A Methodology for Language Development. Allyn and Bacon, Inc., 1986.

  44. Schmidt, D.A. The Structure of Typed Programming Languages. MIT Press, 1994.

  45. Scott, D.S. Outline of a mathematical theory of computation. Technical Report PRG-2, Prog. Research Group, Oxford University, 1971.

  46. Scott, D.S. and Strachey, C. Toward a mathematical semantics for computer languages. In Proceedings of Symposium on Computers and Automata, pp. 19-46. Microwave Research Institute Symposia Series, Vol. 21, J. Fox (Ed.). Polytechnic Institute of Brooklyn, 1971.

  47. Shaw, M. and Garlan, D. Software Architecture: Pespectives on an Emerging Discipline. Prentice Hall, 1996.

  48. Strachey, C. The varieties of programming language. Technical Report PRG-10, Prog. Research Group, Oxford University, 1973.

  49. Tennent, R.D. Mathematical semantics of SNOBOL4. In POPL'73, Conference Record of the 1st Annual ACM Symposium on Principles of Programming Languages, 1973, pp. 95-107.

  50. Tennent, R.D. A denotational description of the programming language Pascal. Technical Report 77-47, Dept. of Computing and Information Sciences, Queen's University, Kingston, Ontario, Canada, 1977.

    Google Scholar 

  51. Tennent, R.D. Language design methods based on semantic principles. Acta Informatica 8 (1977) 97-112.

    Google Scholar 

  52. Tennent, R.D. Principles of Programming Languages. Prentice-Hall International, Englewood Cliffs, New Jersey, 1981.

    Google Scholar 

  53. Thompson, S. Haskell: The Craft of Functional Programming. Addison-Wesley, Reading, MA, 1999.

    Google Scholar 

  54. Turner, D. An overview of Miranda. ACM SIGPLAN Notices 21 (1986) 158-166.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Schmidt, D.A. Induction, Domains, Calculi: Strachey's Contributions to Programming-Language Engineering. Higher-Order and Symbolic Computation 13, 89–101 (2000). https://doi.org/10.1023/A:1010066127644

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1023/A:1010066127644

Navigation