G. D. Plotkin, “ A
Structural Approach to Operational Semantics”, Computer Science
Department, Aarhus University, Denmark, DAIMI FN-19, 1981 (reprised in a 2004
submission to the The Journal of Logic and Algebraic Programming).
Relevance: Plotkin's introduction of the term
“structural operational semantics”
In the introduction to this historically important “Aahus note” Plotkin wrote:
1.1 Introduction
It is the purpose of these notes to develop a simple and direct method for specifying the semantics of programming languages. Very little is required in the way of mathematical background; all that will be involved is “symbol-pushing” of one kind or another of the sort which will already be familiar to readers with experience of either the non-numerical aspects of programming languages or else formal deductive systems of the kind employed in mathematical logic.
Apart from a simple kind of mathematics the method is intended to produce concise comprehensible semantic definitions. Indeed the method is even intended as a direct formalisation of (many aspects of) the usual informal natural language descriptions. I should really confess here that while I have some experience what has been expressed above is rather a pious hope than a statement of fact. I would therefore be most grateful to readers for their comments and particularly their criticisms.
I will follow the approach to programming languages taken by such authors as Gordon [Gor] and Tennent [Ten] considering the main syntactic classes — expressions, commands and declarations — and the various features found in each. The linguistic approach is that developed by the Scott-Strachey school (together with Landin and McCarthy and others) but within an operational rather than a denotational framework. These notes should be considered as an attempt at showing the feasibility of such an approach. Apart from various inadequacies of the treatment as presented many topics of importance are omitted. These include data structures and data types; various forms of control structure from jumps to exceptions and coroutines; concurrency including semaphores, monitors and communicating process.