Higher-Order and Symbolic Computation, 13(1/2)11-49
Fundamental Concepts in Programming Languages
Christopher Strachey, Reader in Computation at Oxford University,
Programming Research Group, 45 Banbury Road, Oxford, UK
Abstract: This paper forms the substance of a course of
lectures given at the International Summer School in Computer
Programming at Copenhagen in August, 1967. The lectures were
originally given from notes and the paper was written after the course
was finished. In spite of this, and only partly because of the
shortage of time, the paper still retains many of the shortcomings of
a lecture course. The chief of these are an uncertainty of aim -- it
is never quite clear what sort of audience there will be for such
lectures?and an associated switching from formal to informal modes of
presentation which may well be less acceptable in print than it is
natural in the lecture room. For these (and other) faults, I apologise
to the reader.
There are numerous references throughout the course to CPL [1?3]. This
is a programming language which has been under development since 1962
at Cambridge and London and Oxford. It has served as a vehicle for
research into both programming languages and the design of
compilers. Partial implementations exist at Cambridge and London. The
language is still evolving so that there is no definitive manual
available yet. We hope to reach another resting point in its evolution
quite soon and to produce a compiler and reference manuals for this
version. The compiler will probably be written in such a way that it
is relatively easyto transfer it to another machine, and in the first
instance we hope to establish it on three or four machines more or
less at the same time. The lack of a precise formulation for CPL
should not cause much difficulty in this course, as we are primarily
concerned with the ideas and concepts involved rather than with their
precise representation in a programming language.
Keywords: programming languages, semantics, foundations of
computing, CPL, L-values, R-values, parameter passing, variable
binding, functions as data, parametric polymorphism, ad hoc
polymorphism, binding mechanisms, type completeness
|
This article can be downloaded [here].
|
|