Next: 2.2 Significance for Component-Based
Up: 2 Position
Previous: 2 Position
The purpose of defining a formal semantics for a language is to give
precise meanings to the strings in that language. In principle, it is
relatively well understood how to define the semantics of operational
program components in a programming language such as C or Pascal. Of
course as a practical matter, defining the formal semantics for most
programming languages is an enormous chore, but this is unimportant
for the current paper. What we seek is simply a framework in which
such a semantics might be defined, as illustrated in
Figure 1. For each string which is an operational program
component in the language (i.e., an element of ), the
semantic function
assigns to it a run-time behavior
(i.e., an element of
). In this paper we constrain
neither the structure of
nor the semantic function
, except to stipulate that
is
total.
Now consider a combined specification-and-implementation language such
as RESOLVE, or a hybrid that combines a specification language (e.g.,
Larch or RESOLVE or ) with a modern implementation
programming language with templates (e.g., Ada or C++ or RESOLVE). As
shown in Figure 2, such a language also contains strings
which are specifications and templates. As noted above, the meanings
of these strings might not be elements of
. What
do specifications and templates mean? And more important, how
are these meanings connected to those of operational program
components?
David S. Gibson and Bruce W. Weide