fbpx
Wikipedia

Semantics (computer science)

In programming language theory, semantics is the rigorous mathematical study of the meaning of programming languages.[1] Semantics assigns computational meaning to valid strings in a programming language syntax. It is closely related to, and often crosses over with, the semantics of mathematical proofs.

Semantics describes the processes a computer follows when executing a program in that specific language. This can be done by describing the relationship between the input and output of a program, or giving an explanation of how the program will be executed on a certain platform; hence creating a model of computation.

History edit

In 1967, Robert W. Floyd publishes the paper Assigning meanings to programs; his chief aim is "a rigorous standard for proofs about computer programs, including proofs of correctness, equivalence, and termination".[2][3] Floyd further writes:[2]

A semantic definition of a programming language, in our approach, is founded on a syntactic definition. It must specify which of the phrases in a syntactically correct program represent commands, and what conditions must be imposed on an interpretation in the neighborhood of each command.

In 1969, Tony Hoare publishes a paper on Hoare logic seeded by Floyd's ideas, now sometimes collectively called axiomatic semantics.[4][5]

In the 1970s, the terms operational semantics and denotational semantics emerged.[5]

Overview edit

The field of formal semantics encompasses all of the following:

  • The definition of semantic models
  • The relations between different semantic models
  • The relations between different approaches to meaning
  • The relation between computation and the underlying mathematical structures from fields such as logic, set theory, model theory, category theory, etc.

It has close links with other areas of computer science such as programming language design, type theory, compilers and interpreters, program verification and model checking.

Approaches edit

There are many approaches to formal semantics; these belong to three major classes:

  • Denotational semantics,[6] whereby each phrase in the language is interpreted as a denotation, i.e. a conceptual meaning that can be thought of abstractly. Such denotations are often mathematical objects inhabiting a mathematical space, but it is not a requirement that they should be so. As a practical necessity, denotations are described using some form of mathematical notation, which can in turn be formalized as a denotational metalanguage. For example, denotational semantics of functional languages often translate the language into domain theory. Denotational semantic descriptions can also serve as compositional translations from a programming language into the denotational metalanguage and used as a basis for designing compilers.
  • Operational semantics,[7] whereby the execution of the language is described directly (rather than by translation). Operational semantics loosely corresponds to interpretation, although again the "implementation language" of the interpreter is generally a mathematical formalism. Operational semantics may define an abstract machine (such as the SECD machine), and give meaning to phrases by describing the transitions they induce on states of the machine. Alternatively, as with the pure lambda calculus, operational semantics can be defined via syntactic transformations on phrases of the language itself;
  • Axiomatic semantics,[8] whereby one gives meaning to phrases by describing the axioms that apply to them. Axiomatic semantics makes no distinction between a phrase's meaning and the logical formulas that describe it; its meaning is exactly what can be proven about it in some logic. The canonical example of axiomatic semantics is Hoare logic.

Apart from the choice between denotational, operational, or axiomatic approaches, most variations in formal semantic systems arise from the choice of supporting mathematical formalism.

Variations edit

Some variations of formal semantics include the following:

Describing relationships edit

For a variety of reasons, one might wish to describe the relationships between different formal semantics. For example:

  • To prove that a particular operational semantics for a language satisfies the logical formulas of an axiomatic semantics for that language. Such a proof demonstrates that it is "sound" to reason about a particular (operational) interpretation strategy using a particular (axiomatic) proof system.
  • To prove that operational semantics over a high-level machine is related by a simulation with the semantics over a low-level machine, whereby the low-level abstract machine contains more primitive operations than the high-level abstract machine definition of a given language. Such a proof demonstrates that the low-level machine "faithfully implements" the high-level machine.

It is also possible to relate multiple semantics through abstractions via the theory of abstract interpretation.

See also edit

References edit

  1. ^ Goguen, Joseph A. (1975). "Semantics of computation". Category Theory Applied to Computation and Control. Lecture Notes in Computer Science. Vol. 25. Springer. pp. 151–163. doi:10.1007/3-540-07142-3_75. ISBN 978-3-540-07142-6.
  2. ^ a b Floyd, Robert W. (1967). "Assigning Meanings to Programs" (PDF). In Schwartz, J.T. (ed.). Mathematical Aspects of Computer Science. Proceedings of Symposium on Applied Mathematics. Vol. 19. American Mathematical Society. pp. 19–32. ISBN 0821867288.
  3. ^ Knuth, Donald E. "Memorial Resolution: Robert W. Floyd (1936–2001)" (PDF). Stanford University Faculty Memorials. Stanford Historical Society.
  4. ^ Hoare, C. A. R. (October 1969). "An axiomatic basis for computer programming". Communications of the ACM. 12 (10): 576–580. doi:10.1145/363235.363259. S2CID 207726175.
  5. ^ a b Winskel, Glynn (1993). The formal semantics of programming languages : an introduction. Cambridge, Mass.: MIT Press. p. xv. ISBN 978-0-262-23169-5.
  6. ^ Schmidt, David A. (1986). Denotational Semantics: A Methodology for Language Development. William C. Brown Publishers. ISBN 9780205104505.
  7. ^ Plotkin, Gordon D. (1981). A structural approach to operational semantics (Report). Technical Report DAIMI FN-19. Computer Science Department, Aarhus University.
  8. ^ a b Goguen, Joseph A.; Thatcher, James W.; Wagner, Eric G.; Wright, Jesse B. (1977). "Initial algebra semantics and continuous algebras". Journal of the ACM. 24 (1): 68–95. doi:10.1145/321992.321997. S2CID 11060837.
  9. ^ Mosses, Peter D. (1996). Theory and practice of action semantics (Report). BRICS Report RS9653. Aarhus University.
  10. ^ Deransart, Pierre; Jourdan, Martin; Lorho, Bernard (1988). "Attribute Grammars: Definitions, Systems and Bibliography. Lecture Notes in Computer Science 323. Springer-Verlag. ISBN 9780387500560.
  11. ^ Lawvere, F. William (1963). "Functorial semantics of algebraic theories". Proceedings of the National Academy of Sciences of the United States of America. 50 (5): 869–872. Bibcode:1963PNAS...50..869L. doi:10.1073/pnas.50.5.869. PMC 221940. PMID 16591125.
  12. ^ Andrzej Tarlecki; Rod M. Burstall; Joseph A. Goguen (1991). "Some fundamental algebraic tools for the semantics of computation: Part 3. Indexed categories". Theoretical Computer Science. 91 (2): 239–264. doi:10.1016/0304-3975(91)90085-G.
  13. ^ Batty, Mark; Memarian, Kayvan; Nienhuis, Kyndylan; Pichon-Pharabod, Jean; Sewell, Peter (2015). "The problem of programming language concurrency semantics". Proceedings of the European Symposium on Programming Languages and Systems. Springer. pp. 283–307. doi:10.1007/978-3-662-46669-8_12.
  14. ^ Abramsky, Samson (2009). "Semantics of interaction: An introduction to game semantics". In Andrew M. Pitts; P. Dybjer (eds.). Semantics and Logics of Computation. Cambridge University Press. pp. 1–32. doi:10.1017/CBO9780511526619.002. ISBN 9780521580571.
  15. ^ Dijkstra, Edsger W. (1975). "Guarded commands, nondeterminacy and formal derivation of programs". Communications of the ACM. 18 (8): 453–457. doi:10.1145/360933.360975. S2CID 1679242.

Further reading edit

Textbooks
  • Floyd, Robert W. (1967). "Assigning Meanings to Programs" (PDF). In Schwartz, J.T. (ed.). Mathematical Aspects of Computer Science. Proceedings of Symposium on Applied Mathematics. Vol. 19. American Mathematical Society. pp. 19–32. ISBN 0821867288.
  • Hennessy, M. (1990). The semantics of programming languages: an elementary introduction using structural operational semantics. Wiley. ISBN 978-0-471-92772-3.
  • Tennent, Robert D. (1991). Semantics of Programming Languages. Prentice Hall. ISBN 978-0-13-805599-8.
  • Gunter, Carl (1992). Semantics of Programming Languages. MIT Press. ISBN 0-262-07143-6.
  • Nielson, H. R.; Nielson, Flemming (1992). (PDF). Wiley. ISBN 978-0-471-92980-2. Archived from the original (PDF) on 2012-04-17. Retrieved 2011-05-27.
  • Winskel, Glynn (1993). The Formal Semantics of Programming Languages: An Introduction. MIT Press. ISBN 0-262-73103-7.
  • Mitchell, John C. (1995). Foundations for Programming Languages (Postscript).
  • Slonneger, Kenneth; Kurtz, Barry L. (1995). Formal Syntax and Semantics of Programming Languages. Addison-Wesley. ISBN 0-201-65697-3.
  • Reynolds, John C. (1998). Theories of Programming Languages. Cambridge University Press. ISBN 0-521-59414-6.
  • Harper, Robert (2006). (PDF). Archived from the original (PDF) on 2007-06-27. (Working draft)
  • Nielson, H. R.; Nielson, Flemming (2007). Semantics with Applications: An Appetizer. Springer. ISBN 978-1-84628-692-6.
  • Stump, Aaron (2014). Programming Language Foundations. Wiley. ISBN 978-1-118-00747-1.
  • Krishnamurthi, Shriram (2012). "Programming Languages: Application and Interpretation" (2nd ed.).
Lecture notes
  • Winskel, Glynn. "Denotational Semantics" (PDF). University of Cambridge.

External links edit

  • Aaby, Anthony (2004). . Archived from the original on 2015-06-19. Semantics.

semantics, computer, science, confused, with, computational, semantics, programming, language, theory, semantics, rigorous, mathematical, study, meaning, programming, languages, semantics, assigns, computational, meaning, valid, strings, programming, language,. Not to be confused with Computational semantics In programming language theory semantics is the rigorous mathematical study of the meaning of programming languages 1 Semantics assigns computational meaning to valid strings in a programming language syntax It is closely related to and often crosses over with the semantics of mathematical proofs Semantics describes the processes a computer follows when executing a program in that specific language This can be done by describing the relationship between the input and output of a program or giving an explanation of how the program will be executed on a certain platform hence creating a model of computation Contents 1 History 2 Overview 3 Approaches 4 Variations 5 Describing relationships 6 See also 7 References 8 Further reading 9 External linksHistory editIn 1967 Robert W Floyd publishes the paper Assigning meanings to programs his chief aim is a rigorous standard for proofs about computer programs including proofs of correctness equivalence and termination 2 3 Floyd further writes 2 A semantic definition of a programming language in our approach is founded on a syntactic definition It must specify which of the phrases in a syntactically correct program represent commands and what conditions must be imposed on an interpretation in the neighborhood of each command In 1969 Tony Hoare publishes a paper on Hoare logic seeded by Floyd s ideas now sometimes collectively called axiomatic semantics 4 5 In the 1970s the terms operational semantics and denotational semantics emerged 5 Overview editThe field of formal semantics encompasses all of the following The definition of semantic models The relations between different semantic models The relations between different approaches to meaning The relation between computation and the underlying mathematical structures from fields such as logic set theory model theory category theory etc It has close links with other areas of computer science such as programming language design type theory compilers and interpreters program verification and model checking Approaches editThere are many approaches to formal semantics these belong to three major classes Denotational semantics 6 whereby each phrase in the language is interpreted as a denotation i e a conceptual meaning that can be thought of abstractly Such denotations are often mathematical objects inhabiting a mathematical space but it is not a requirement that they should be so As a practical necessity denotations are described using some form of mathematical notation which can in turn be formalized as a denotational metalanguage For example denotational semantics of functional languages often translate the language into domain theory Denotational semantic descriptions can also serve as compositional translations from a programming language into the denotational metalanguage and used as a basis for designing compilers Operational semantics 7 whereby the execution of the language is described directly rather than by translation Operational semantics loosely corresponds to interpretation although again the implementation language of the interpreter is generally a mathematical formalism Operational semantics may define an abstract machine such as the SECD machine and give meaning to phrases by describing the transitions they induce on states of the machine Alternatively as with the pure lambda calculus operational semantics can be defined via syntactic transformations on phrases of the language itself Axiomatic semantics 8 whereby one gives meaning to phrases by describing the axioms that apply to them Axiomatic semantics makes no distinction between a phrase s meaning and the logical formulas that describe it its meaning is exactly what can be proven about it in some logic The canonical example of axiomatic semantics is Hoare logic Apart from the choice between denotational operational or axiomatic approaches most variations in formal semantic systems arise from the choice of supporting mathematical formalism Variations editSome variations of formal semantics include the following Action semantics 9 is an approach that tries to modularize denotational semantics splitting the formalization process in two layers macro and microsemantics and predefining three semantic entities actions data and yielders to simplify the specification Algebraic semantics 8 is a form of axiomatic semantics based on algebraic laws for describing and reasoning about program semantics in a formal manner It also supports denotational semantics and operational semantics Attribute grammars 10 define systems that systematically compute metadata called attributes for the various cases of the language s syntax Attribute grammars can be understood as a denotational semantics where the target language is simply the original language enriched with attribute annotations Aside from formal semantics attribute grammars have also been used for code generation in compilers and to augment regular or context free grammars with context sensitive conditions Categorical or functorial semantics 11 uses category theory as the core mathematical formalism A categorical semantics is usually proven to correspond to some axiomatic semantics that gives a syntactic presentation of the categorical structures Also denotational semantics are often instances of a general categorical semantics 12 Concurrency semantics 13 is a catch all term for any formal semantics that describes concurrent computations Historically important concurrent formalisms have included the actor model and process calculi Game semantics 14 uses a metaphor inspired by game theory Predicate transformer semantics 15 developed by Edsger W Dijkstra describes the meaning of a program fragment as the function transforming a postcondition to the precondition needed to establish it Describing relationships editFor a variety of reasons one might wish to describe the relationships between different formal semantics For example To prove that a particular operational semantics for a language satisfies the logical formulas of an axiomatic semantics for that language Such a proof demonstrates that it is sound to reason about a particular operational interpretation strategy using a particular axiomatic proof system To prove that operational semantics over a high level machine is related by a simulation with the semantics over a low level machine whereby the low level abstract machine contains more primitive operations than the high level abstract machine definition of a given language Such a proof demonstrates that the low level machine faithfully implements the high level machine It is also possible to relate multiple semantics through abstractions via the theory of abstract interpretation See also editComputational semantics Formal semantics logic Formal semantics linguistics Ontology Ontology information science Semantic equivalence Semantic technologyReferences edit Goguen Joseph A 1975 Semantics of computation Category Theory Applied to Computation and Control Lecture Notes in Computer Science Vol 25 Springer pp 151 163 doi 10 1007 3 540 07142 3 75 ISBN 978 3 540 07142 6 a b Floyd Robert W 1967 Assigning Meanings to Programs PDF In Schwartz J T ed Mathematical Aspects of Computer Science Proceedings of Symposium on Applied Mathematics Vol 19 American Mathematical Society pp 19 32 ISBN 0821867288 Knuth Donald E Memorial Resolution Robert W Floyd 1936 2001 PDF Stanford University Faculty Memorials Stanford Historical Society Hoare C A R October 1969 An axiomatic basis for computer programming Communications of the ACM 12 10 576 580 doi 10 1145 363235 363259 S2CID 207726175 a b Winskel Glynn 1993 The formal semantics of programming languages an introduction Cambridge Mass MIT Press p xv ISBN 978 0 262 23169 5 Schmidt David A 1986 Denotational Semantics A Methodology for Language Development William C Brown Publishers ISBN 9780205104505 Plotkin Gordon D 1981 A structural approach to operational semantics Report Technical Report DAIMI FN 19 Computer Science Department Aarhus University a b Goguen Joseph A Thatcher James W Wagner Eric G Wright Jesse B 1977 Initial algebra semantics and continuous algebras Journal of the ACM 24 1 68 95 doi 10 1145 321992 321997 S2CID 11060837 Mosses Peter D 1996 Theory and practice of action semantics Report BRICS Report RS9653 Aarhus University Deransart Pierre Jourdan Martin Lorho Bernard 1988 Attribute Grammars Definitions Systems and Bibliography Lecture Notes in Computer Science 323 Springer Verlag ISBN 9780387500560 Lawvere F William 1963 Functorial semantics of algebraic theories Proceedings of the National Academy of Sciences of the United States of America 50 5 869 872 Bibcode 1963PNAS 50 869L doi 10 1073 pnas 50 5 869 PMC 221940 PMID 16591125 Andrzej Tarlecki Rod M Burstall Joseph A Goguen 1991 Some fundamental algebraic tools for the semantics of computation Part 3 Indexed categories Theoretical Computer Science 91 2 239 264 doi 10 1016 0304 3975 91 90085 G Batty Mark Memarian Kayvan Nienhuis Kyndylan Pichon Pharabod Jean Sewell Peter 2015 The problem of programming language concurrency semantics Proceedings of the European Symposium on Programming Languages and Systems Springer pp 283 307 doi 10 1007 978 3 662 46669 8 12 Abramsky Samson 2009 Semantics of interaction An introduction to game semantics In Andrew M Pitts P Dybjer eds Semantics and Logics of Computation Cambridge University Press pp 1 32 doi 10 1017 CBO9780511526619 002 ISBN 9780521580571 Dijkstra Edsger W 1975 Guarded commands nondeterminacy and formal derivation of programs Communications of the ACM 18 8 453 457 doi 10 1145 360933 360975 S2CID 1679242 Further reading editTextbooksFloyd Robert W 1967 Assigning Meanings to Programs PDF In Schwartz J T ed Mathematical Aspects of Computer Science Proceedings of Symposium on Applied Mathematics Vol 19 American Mathematical Society pp 19 32 ISBN 0821867288 Hennessy M 1990 The semantics of programming languages an elementary introduction using structural operational semantics Wiley ISBN 978 0 471 92772 3 Tennent Robert D 1991 Semantics of Programming Languages Prentice Hall ISBN 978 0 13 805599 8 Gunter Carl 1992 Semantics of Programming Languages MIT Press ISBN 0 262 07143 6 Nielson H R Nielson Flemming 1992 Semantics With Applications A Formal Introduction PDF Wiley ISBN 978 0 471 92980 2 Archived from the original PDF on 2012 04 17 Retrieved 2011 05 27 Winskel Glynn 1993 The Formal Semantics of Programming Languages An Introduction MIT Press ISBN 0 262 73103 7 Mitchell John C 1995 Foundations for Programming Languages Postscript Slonneger Kenneth Kurtz Barry L 1995 Formal Syntax and Semantics of Programming Languages Addison Wesley ISBN 0 201 65697 3 Reynolds John C 1998 Theories of Programming Languages Cambridge University Press ISBN 0 521 59414 6 Harper Robert 2006 Practical Foundations for Programming Languages PDF Archived from the original PDF on 2007 06 27 Working draft Nielson H R Nielson Flemming 2007 Semantics with Applications An Appetizer Springer ISBN 978 1 84628 692 6 Stump Aaron 2014 Programming Language Foundations Wiley ISBN 978 1 118 00747 1 Krishnamurthi Shriram 2012 Programming Languages Application and Interpretation 2nd ed Lecture notesWinskel Glynn Denotational Semantics PDF University of Cambridge External links editAaby Anthony 2004 Introduction to Programming Languages Archived from the original on 2015 06 19 Semantics Retrieved from https en wikipedia org w index php title Semantics computer science amp oldid 1195398826, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.