The Structure of Programming Languages

The following are identified as major components
of every programming language: (1) the elementary 
program statement, (2) mechanisms for linking elementary
statements together, (3) the means by which 
a program can obtain data inputs.  Several alternative
forms of each of these components are described, 
compared and evaluated.  Many examples, frequently from
list processing languages, illustrate the forms 
described.  Elementary program statements usually take
the form of commands, requirements, or implicit 
specifications.  A command is an imperative statement
that commands the action to be taken.  A requirement 
describes the effect to be achieved without saying anything
about the actions to be taken.  An implicit 
specification is similar to a requirement, but the programmer
must understand what actions will be taken 
to achieve the desired effect.  Subroutines may be entered
explicitly, by execute call, or by function 
composition.  Explicitly called subroutines generally
require special linkage conventions.  An execute 
subroutine call is syntactically indistinguishable from
a basic instruction of the programming language. 
 Function composition is a convenient alternative to
the explicit call.  The three principal ways of 
getting inputs for routines are (1) by referring to
the data itself, (2) by referring to the data by 
a "name", and (3) by referring to it implicitly by means
of variables or functions.  Names are useful 
entry points into permanent data structures, but can
be error-causing distractions in other contexts. 
The author discusses advantages, disadvantages, and factors
influencing the choice of a form of component 
for a language.   He concludes by suggesting the evolution
of programming languages toward one which 
will permit all the most convenient ways of structuring
programs, organizing systems, and referencing 
data.

CACM March, 1966

Raphael, B.

CA660302 JB March 3, 1978  2:20 PM

1470	5	1470
1470	5	1470
1470	5	1470