Abstract
Formal descriptions of syntax are quite popular: regular and context-free grammars have become accepted as useful for documenting the syntax of programming languages, as well as for generating efficient parsers; attribute grammars allow parsing to be linked with typechecking and code generation; and regular expressions are extensively used for searching and transforming text. In contrast, formal semantic descriptions are widely regarded as being of interest only to theoreticians. This paper surveys the main frameworks available for describing the dynamic semantics of programming languages. It assesses the potential and actual uses of semantic descriptions, and considers practical aspects, such as comprehensibility, modularity, and extensibility, which are especially significant when describing full-scale languages. It concludes by suggesting that the provision of mature tools for transforming practical semantic descriptions into reasonably efficient compilers and interpreters would significantly increase the popularity of formal semantics.
The paper is intended to be accessible to all computer scientists. Familiarity with the details of particular semantic frameworks is not required, although some understanding of the general concepts of formal semantics is assumed.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
S. Abramsky and G. McCusker. Linearity, sharing, and state: A fully abstract game semantics for Idealized Algol with active expressions (extended abstract). In Proc. 1996 Workshop on Linear Logic, volume 3 of Electronic Notes in TCS. Elsevier, 1996.
L. Aceto, W. Fokkink, and C. Verhoef. Structural operational semantics. In J. A. Bergstra, A. Ponse, and S. A. Smolka, editors, Handbook of Process Algebra, chapter 3, pages 197–291. Elsevier Science, 2001.
C. Alexander. A Timeless Way of Building. Oxford University Press, 1979.
P. America, J. de Bakker, J. N. Kok, and J. J. M. M. Rutten. Denotational semantics of a parallel object-oriented language. Information and Computation, 83(2):152–206, 1989.
E. A. Ashcroft, M. Clint, and C. A. R. Hoare. Remarks on ‘Program proving: Jumps and functions, by M. Clint and C. A. R. Hoare’. Acta Inf., 6:317–318, 1976.
E. Astesiano. Inductive and operational semantics. In E. J. Neuhold and M. Paul, editors, Formal Description of Programming Concepts, IFIP State-of-the-Art Report, pages 51–136. Springer-Verlag, 1991.
E. Astesiano and G. Reggio. Smolcs driven concurrent calculi. In TAPSOFT’87, Proc. Int. Joint Conf. on Theory and Practice of Software Development, Pisa, volume 249 of LNCS. Springer-Verlag, 1987.
J. A. Bergstra, J. Heering, and P. Klint, editors. Algebraic Specification. Frontier Series. ACM Press, 1989.
D. Bjørner and C. B. Jones. Formal Specification and Software Development. Prentice-Hall, 1982.
A. Blikle and A. Tarlecki. Naive denotational semantics. In Information Processing 83, Proc. IFIP Congress 83. North-Holland, 1983.
R. Cartwright and M. Felleisen. Extensible denotational semantics specifications. In TACS’94, Proc. Symp. on Theoretical Aspects of Computer Software, Sendai, Japan, volume 789 of LNCS, pages 244–272. Springer-Verlag, 1994.
P. Cousot and R. Cousot. Inductive definitions, semantics and abstract interpretation. In POPL’92, Proc. 19th ACM SIGPLAN-SIGACT Symp. on Principles of Programming Languages, Albuquerque, New Mexico, pages 84–94, 1992.
P. Degano and C. Priami. Enhanced operational semantics. ACM Computing Surveys, 28(2):352–354, June 1996.
A. van Deursen, J. Heering, and P. Klint, editors. Language Prototyping, volume 5 of AMAST Series in Computing. World Scientific, 1996.
E. W. Dijkstra. Guarded commands, non-determinacy, and formal derivations of programs. Commun. ACM, 18:453–457, 1975.
M. Felleisen and D. P. Friedman. Control operators, the SECD machine, and the λ-calculus. In Formal Description of Programming Concepts III, Proc. IFIP TC2 Working Conference, Gl. Avernæs, 1986, pages 193–217. North-Holland, 1987.
J. A. Goguen and K. Parsaye-Ghomi. Algebraic denotational semantics using parameterized abstract modules. In J. Diaz and I. Ramos, editors, Proc. Int. Coll. on Formalization of Programming Concepts, Peñiscola, number 107 in LNCS. Springer-Verlag, 1981.
J. A. Goguen, J. W. Thatcher, E. G. Wagner, and J. B. Wright. Initial algebra semantics and continuous algebras. J. ACM, 24:68–95, 1977.
C. A. Gunter and D. S. Scott. Semantic domains. In J. van Leeuwen, A. Meyer, M. Nivat, M. Paterson, and D. Perrin, editors, Handbook of Theoretical Computer Science, volume B, chapter 12. Elsevier Science Publishers, Amsterdam; and MIT Press, 1990.
Y. Gurevich. Evolving algebras 1993: Lipari guide. In E. Börger, editor, Specification and Validation Methods. Oxford University Press, 1995.
B. S. Hansen and J. Bundgaard. The role of the ANDF formal specification. Technical Report 202104/RPT/5, issue 2, DDC International A/S, Lundtoftevej 1C, DK-2800 Lyngby, Denmark, 1992.
B. S. Hansen and J. U. Toft. The formal specification of ANDF, an application of action semantics. In [42], pages 34–42, 1994.
D. Harel. Dynamic logic. In Handbook of Philosophical Logic, volume II. D. Reidel Publishing Company, 1984.
R. Harper and C. Stone. A type-theoretic interpretation of Standard ML. In G. Plotkin, C. Stirling, and M. Tofte, editors, Robin Milner Festschrifft. MIT Press, 1998.
J. Heering and P. Klint. Semantics of programming languages: A tool-oriented approach. ACM SIGPLAN Notices, Mar. 2000.
C. A. R. Hoare. An axiomatic basis for computer programming. Commun. ACM, 12:576–580, 1969.
C. A. R. Hoare and H. Jifeng. Unifying Theories of Programming. Prentice-Hall, 1998.
C. A. R. Hoare and P. E. Lauer. Consistent and complementary formal theories of the semantics of programming languages. Act Inf., 3:135–153, 1974.
G. Kahn. Natural semantics. In STACS’87, Proc. Symp. on Theoretical Aspects of Computer Science, volume 247 of LNCS, pages 22–39. Springer-Verlag, 1987.
U. Kastens, P. Pfahler, and M. Jung. The eli system. In CC’98, Proceedings 7th International Conference on Compiler Construction, volume 1383 of LNCS, pages 294–297. Springer-Verlag, 1998.
P. J. Landin. A formal description of Algol60. In Formal Language Description Languages for Computer Programming, Proc. IFIP TC2 Working Conference, 1964, pages 266–294. IFIP, North-Holland, 1966.
E. G. Manes and M. A. Arbib. Algebraic Approaches to Program Semantics. Springer-Verlag, 1986.
J. McCarthy. Towards a mathematical science of computation. In Information Processing 62, Proc. IFIP Congress 62, pages 21–28. North-Holland, 1962.
R. Milner. Communication and Concurrency. Prentice-Hall, 1989.
R. Milner. Operational and algebraic semantics of concurrent processes. In J. van Leeuwen, A. Meyer, M. Nivat, M. Paterson, and D. Perrin, editors, Handbook of Theoretical Computer Science, volume B, chapter 19. Elsevier Science Publishers, Amsterdam; and MIT Press, 1990.
R. Milner, M. Tofte, and R. Harper. The Definition of Standard ML. The MIT Press, 1997.
E. Moggi. An abstract view of programming languages. Technical Report ECSLFCS-90-113, Computer Science Dept., University of Edinburgh, 1990.
E. Moggi. Notions of computation and monads. Information and Computation, 93:55–92, 1991.
E. Moggi. Metalanguages and applications. In Semantics and Logics of Computation, Publications of the Newton Institute. CUP, 1997.
P. D. Mosses. Denotational semantics. In Handbook of Theoretical Computer Science, volume B, chapter 11. Elsevier Science Publishers, Amsterdam; and MIT Press, 1990.
P. D. Mosses. Action Semantics. Number 26 in Cambridge Tracts in Theoretical Computer Science. Cambridge University Press, 1992.
P. D. Mosses, editor. AS’94, Proc. 1st Intl. Workshop on Action Semantics, Edinburgh, number NS-94-1 in Notes Series. BRICS, Dept. of Computer Science, Univ. of Aarhus, 1994. http://www.brics.dk/NS/94/1/BRICS-NS-94-1/.
P. D. Mosses. Foundations of modular SOS. Research Series RS-99-54, BRICS, Dept. of Computer Science, Univ. of Aarhus, 1999. http://www.brics.dk/RS/99/54; full version of [44].
P. D. Mosses. Foundations of Modular SOS (extended abstract). In MFCS’99, volume 1672 of LNCS, pages 70–80. Springer-Verlag, 1999. Full version available at http://www.brics.dk/RS/99/54/.
P. D. Mosses. A modular SOS for Action Notation (extended abstract). In AS’99, number NS-99-3 in Notes Series, pages 131–142, BRICS, Dept. of Computer Science, Univ. of Aarhus, 1999. Full version available athttp://www.brics.dk/RS/99/56/.
P. D. Mosses. A modular SOS for ML concurrency primitives. Research Series RS-99-57, BRICS, Dept. of Computer Science, Univ. of Aarhus, 1999. http://www.brics.dk/RS/99/57/.
P. D. Mosses and D. A. Watt. The use of action semantics. In Formal Description of Programming Concepts III, Proc. IFIP TC2 Working Conference, Gl. Avernæs, 1986, pages 135–166. North-Holland, 1987.
H. R. Nielson and F. Nielson. Semantics with Applications: A Formal Introduction. Wiley, Chichester, UK, 1992.
F. J. Oles. A Category-Theoretic Approach to the Semantics of Programming Languages. PhD thesis, Syracuse University, 1982.
M. Pettersson. Compiling Natural Semantics, volume 1549 of LNCS. Springer-Verlag, 1999.
G. D. Plotkin. A structural approach to operational semantics. Lecture Notes DAIMI FN-19, Dept. of Computer Science, Univ. of Aarhus, 1981.
J. H. Reppy. CML: A higher-order concurrent language. In Proc. SIGPLAN’91, Conf. on Prog. Lang. Design and Impl., pages 293–305. ACM, 1991.
J. R. X. Ross. An Evaluation Based Approach to Process Calculi. PhD thesis, University of Cambridge, 1999.
D. A. Schmidt. Denotational Semantics: A Methodology for Language Development. Allyn & Bacon, 1986.
D. A. Schmidt. On the need for a popular formal semantics. ACM SIGPLAN Notices, 32(1), 1997.
D. S. Scott and C. Strachey. Toward a mathematical semantics for computer languages. In Proc. Symp. on Computers and Automata, volume 21 of Microwave Research Institute Symposia Series. Polytechnic Institute of Brooklyn, 1971.
R. D. Tennent. The denotational semantics of programming languages. Commun. ACM, 19:437–453, 1976.
K. Wansbrough and J. Hamer. A modular monadic action semantics. In Conference on Domain-Specific Languages, pages 157–170. The USENIX Association, 1997.
D. A. Watt. Programming Language Syntax and Semantics. Prentice-Hall, 1991.
D. A. Watt. Why don’t programming language designers use formal methods? In R. Barros, editor, Anais XXIII Seminário Integrado de Software e Hardware, pages 1–16, UFPE, Recife, Brazil, 1996.
P. Wegner. The Vienna definition language. ACM Comput. Surv., 4:5–63, 1972.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2001 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Mosses, P.D. (2001). The Varieties of Programming Language Semantics And Their Uses. In: Bjørner, D., Broy, M., Zamulin, A.V. (eds) Perspectives of System Informatics. PSI 2001. Lecture Notes in Computer Science, vol 2244. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45575-2_18
Download citation
DOI: https://doi.org/10.1007/3-540-45575-2_18
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-43075-9
Online ISBN: 978-3-540-45575-2
eBook Packages: Springer Book Archive