Formal semantic description techniques are valuable as a tool for specification
and programming language designers, since they help prevent ambiguity.
They can also be of use in software engineering, where they can be used
to reason about properties of a design. Formal semantic description techniques
can also aid in judging programming or specification language designs,
by revealing hidden interactions between features, and by giving you a
sense of how simple or complex the design is.
Formal methods (specification and verification) are becoming increasingly
important at many companies, and a deep understanding of the semantics
of programming languages is a great help in using formal methods. Without
understanding the semantics of such features, you may also have difficulty
discussing programming language ideas with others, and will have difficulty
in reading the technical literature. If you are planning in specializing
in some other area of computer science, you may someday need to read some
of the literature on programming languages, either to use results from
programming languages, or to apply ideas from your area to programming
language research.
-
Operational Semantics
-
Abstract Machines (SECD machine, developed by Peter Landin)
-
Transition Semantics
-
Natural Semantics
-
Plotkin's terminal transition systems (rewrite rules)
-
Abstract State Machines
-
Action Semantics (Peter
D. Mosses)
-
Denotational models (Compositional)
-
Scott-Strachey approach (uses functions over various domains as the meanings
of programs)
-
Semantics of Interaction. (Samson
Abramsky)