The Varieties of Programming Language Semantics

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.

[1]  Edsger W. Dijkstra,et al.  Guarded commands, non-determinacy and a calculus for the derivation of programs , 1975, Language Hierarchies and Interfaces.

[2]  Peter D. Mosses A Modular SOS for Action Notation , 1999 .

[3]  Michael A. Arbib,et al.  Algebraic Approaches to Program Semantics , 1986, Texts and Monographs in Computer Science.

[4]  David A. Watt Programming language syntax and semantics , 1991, Prentice Hall International Series in Computer Science.

[5]  Pierre America,et al.  Denotational Semantics of a Parallel Object-Oriented Language , 1989, Inf. Comput..

[6]  Peter D. Mosses A Modular SOS for ML Concurrency Primitives , 1999 .

[7]  Robin Milner,et al.  Communication and concurrency , 1989, PHI Series in computer science.

[8]  Peter D. Mosses,et al.  Denotational semantics , 1995, LICS 1995.

[9]  John McCarthy,et al.  Towards a Mathematical Science of Computation , 1962, IFIP Congress.

[10]  Frank J. Oles,et al.  A category-theoretic approach to the semantics of programming languages , 1982 .

[11]  Matthias Felleisen,et al.  Control operators, the SECD-machine, and the λ-calculus , 1987, Formal Description of Programming Concepts.

[12]  Robin Milner,et al.  Definition of standard ML , 1990 .

[13]  Robert Harper,et al.  A type-theoretic interpretation of standard ML , 2000, Proof, Language, and Interaction.

[14]  Matthias Felleisen,et al.  The Denotational Specifications of Complex Languages , 2005 .

[15]  Christopher Alexander,et al.  The Timeless Way of Building , 1979 .

[16]  Eugenio Moggi,et al.  Notions of Computation and Monads , 1991, Inf. Comput..

[17]  C. A. R. HOARE,et al.  An axiomatic basis for computer programming , 1969, CACM.

[18]  Andrew M. Pitts,et al.  Metalanguages and Applications , 1997 .

[19]  Corrado Priami,et al.  Enhanced operational semantics , 1996, CSUR.

[20]  Samson Abramsky,et al.  Linearity, Sharing and State: a fully abstract game semantics for Idealized Algol with active expressions , 1996, Electron. Notes Theor. Comput. Sci..

[21]  Andrzej Tarlecki,et al.  Naive Denotational Semantics , 1983, IFIP Congress.

[22]  T. Hoare Remarks on “Program Proving: Jumps and Functions” , 1976 .

[23]  Robin Milner,et al.  Operational and Algebraic Semantics of Concurrent Processes , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[24]  Martin Wirsing,et al.  Algebraic Specification , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[25]  M. Felleisen,et al.  Extensible Denotational Language Speciications Extensible Denotational Language Specifications ? 2 Extensible Operational Semantics Are Expressions, with X Possibly Free in E, 4 , 1994 .

[26]  Mikael Pettersson,et al.  Compiling Natural Semantics , 1999, Lecture Notes in Computer Science.

[27]  G. G. Stokes "J." , 1890, The New Yale Book of Quotations.

[28]  Joseph A. Goguen,et al.  Initial Algebra Semantics and Continuous Algebras , 1977, J. ACM.

[29]  Robert D. Tennent,et al.  The denotational semantics of programming languages , 1976, CACM.

[30]  Gianna Reggio,et al.  SMoLCS-Driven Concurrent Calculi , 1987, TAPSOFT, Vol.1.

[31]  J. Van Leeuwen,et al.  Handbook of theoretical computer science - Part A: Algorithms and complexity; Part B: Formal models and semantics , 1990 .

[32]  David A. Schmidt Denotational Semantics: A Methodology for Language Development by Phil , 1987 .

[33]  Gilles Kahn,et al.  Natural Semantics , 1987, STACS.

[34]  Patrick Cousot,et al.  Inductive definitions, semantics and abstract interpretations , 1992, POPL '92.

[35]  Paul Klint,et al.  Semantics of programming languages: a tool-oriented approach , 1999, SIGP.

[36]  Egidio Astesiano,et al.  Inductive and Operational Semantics , 1989, Formal Description of Programming Concepts.

[37]  Edsger W. Dijkstra,et al.  Guarded commands, nondeterminacy and formal derivation of programs , 1975, Commun. ACM.

[38]  S. Griffis EDITOR , 1997, Journal of Navigation.

[39]  John H. Reppy,et al.  CML: A Higher-Order Concurrent Language , 1991, PLDI.

[40]  David A. Schmidt On the need for a popular formal semantics , 1996, CSUR.

[41]  C. A. R. Hoare,et al.  Unifying theories of programming , 1998, RelMiCS.

[42]  Peter D. Mosses Action Semantics , 1986, ADT.

[43]  Peter D. Mosses,et al.  The use of action semantics , 1986, Formal Description of Programming Concepts.

[44]  Flemming Nielson,et al.  Semantics with applications - a formal introduction , 1992, Wiley professional computing.

[45]  Yuri Gurevich,et al.  Evolving algebras 1993: Lipari guide , 1995, Specification and validation methods.

[46]  Joseph A. Goguen,et al.  Algebraic Denotational Semantics Using Parameterized Abstract Modules , 1981, ICFPC.

[47]  Uwe Kastens,et al.  The Eli System , 1998, CC.

[48]  Peter D. Mosses Foundations of Modular SOS , 1999, MFCS.

[49]  Carl A. Gunter,et al.  Semantic Domains , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[50]  Christopher Strachey,et al.  Toward a mathematical semantics for computer languages , 1971 .

[51]  Peter Wegner,et al.  The Vienna Definition Language , 1972, CSUR.

[52]  John Hamer,et al.  A Modular Monadic Action Semantics , 1997, DSL.

[53]  Dines Bjørner,et al.  Formal specification and software development , 1982 .