Semantics is the study of meaning, usually in language. The word “semantics” itself denotes a range of ideas, from the popular to the highly technical. It is often used in ordinary language to denote a problem of understanding that comes down to word selection or connotation.

In computer science semantics reflects the meaning of programs or functions. It is considered as an application of mathematical logic,

In this regard, semantics permits programs to be separated into their syntactical part (grammatical structure) and their semantic part (meaning). For instance, the following statements use different syntaxes, but issue the same instructions:

Generally these operations would all perform an arithmetical addition of ‘y’ to ‘x’ and store the result in a variable called ‘x’.

Semantics for computer applications falls into many categories. The most relevant ones are:

  1. Operational semantics: The meaning of a construct is specified by the computation it induces when it is executed on a machine. In particular, it is of interest how the effect of a computation is produced.
  2. Denotational semantics: Meanings are modelled by mathematical objects that represent the effect of executing the constructs. Thus only the effect is of interest, not how it is obtained.
  3. Axiomatic semantics: Specific properties of the effect of executing the constructs as expressed as assertions. Thus there may be aspects of the executions that are ignored.
  4. Action semantics is a framework for the formal specification of semantics of programming languages (Watt & Mosses) being a mixture of denotational, operational and algebraic semantics.
  5. Algebraic semantics is a formal semantics based on algebras.
  6. Natural semantics is a specification method for interpretations.

Problems with Many Different Notations

Different semantics presentations cause much trouble for students and practicians.  It is not possible for a typical Joe Programmer to read semantics specifications for languages or complex models. Therefore, in a long run, there is a strong need to create a unified semantics for computer programs and languages and models.

In order to be able to express (almost) all possible information considering computer science, the notation should be very flexible, complete, consistent and declarative to allow practicians to easily understand the meaning of each term and expression. The selected unified semantics should be able to connect the features typical for algebra (A), language terms (L), operational features (O), and natural notation (N).

Atomistic Semantics is a Step Towards a Unified Semantics

Atomistic Semantics (Laitila) is a hybrid construction, which uses an algebraic notation when connecting symbols with each other and predicate logic to connect axiomatic features for each symbol. It describes the operational features by using a state transition table-mechanism, whose semantics is a very easy to be read and understood. It contains the original features of source code captured from programs and abstracted in a higher notation language, called Symbolic.  There is no need to use denotational semantics to extend atomistic semantics, because the lower level computational features of the symbolic atomistic model are predicates and clauses of the run method of each symbol. The lowest level can be specified by Prolog and be programmed, too. As a sugar, atomistic semantics is capable of expressing Semantic Web implementations, too.

Some links: