The Next 700 Programming Languages
The Next 700 Programming Languages
P. J. Landin
Univac Division of Sperry Rand Corp., New York, New York
A family of unimplemented computing languages is de- differences in the set of things provided by the library or
scribed that is intended to span differences of application area operating system. Perhaps had ALGOL 60 been launched
by a unified framework. This framework dictates the rules as a family instead of proclaimed as a language, it would
ckout the uses of user-coined names, and the conventions have fielded some of the less relevant criticisms of its
about characterizing functional relationships. Within 'lhis frame- deficiencies.
work 'lhe design of a specific language splits into two inde- At first sight the facilities provided in IswI~,~ will appear
pendent parts. One is 'lhe choice of written appearances of comparatively meager. This appearance will be especially
programs (or more generally, their physical representation). misleading to someone who has not appreciated how much
The o:her is the choice of the abstract entities (such as numbers, of current manuals are devoted to the explanation of
character-strings, lists of them, functional relations among common (i.e., problem-orientation independent) logical
them) that can be referred to in the language. structure rather than problem-oriented specialties. For
The system is biased towards "expressions" rather than example, in almost every language a user can coin names,
"statements." It includes a nonprocedural (purely functional) obeying certain rules about the contexts in which the
subsystem fhat aims to expand the class of users' needs that name is used and their relation to the textual segments
can be met by a single print-instruction, without sacrificing the that introduce, define, declare, or otherwise constrain its
important properties that make conventional right-hand-side use. These rules vary considerably from one language to
expressions easy to construct and understand. another, and frequently even within a single language
there may be different conventions for different classes of
1. Introduction names, with near-analogies that come irritatingly close to
Most programming languages are partly a way of being exact. (Note that restrictions on what names can
expressing things in terms of other things and partly a be coined also vary, but these are trivial differences. When
basic set of given things. The Isw~M (If you See What I they have any logical significance it is likely to be perni-
Mean) system is a byproduct of an attempt to disentangle cious, by leading to puns such as ALaOL'S integer labels.)
these two aspects in some current languages. So rules about user-coined names is an area in which
This attempt has led the author to think that many we might expect to see the history of computer applica-
linguistic idiosyneracies are concerned with the former tions give ground to their logic. Another such area is in
rather than the latter, whereas aptitude for a particular specifying functional relations. In fact these two areas are
class of tasks is essentially determined by the latter rather closely related since any use of a user-coined name im-
than the former. The conclusion follows that m a n y plicitly involves a functional relation; e.g., compare
language characteristics are irrelevant to the alleged x(x-ka) f(b+2c)
problem orientation. w h e r e x = b -4- 2c w h e r e f(x) = x(x+a)
IswI~ is an attempt at a general purpose system for ISW~M is thus part. programming language and part pro-
describing things in terms of other things, that can be gram for research. A possible first step in the research
problem-oriented by appropriate choice of "primitives." program is 1700 doctoral theses called " A Correspondence
So it is not a language so much as a family of languages, between x and Church's X-notation. ''~
of which each member is the result of choosing a set of
2. The where-Notation
primitives. The possibilities concerning this set and what
is needed to specify such a set are discussed below. I n ordinary mathematical communication, these uses
Isw~M is not alone in being a family, even after mere of 'where' require no explanation. Nor do the following:
syntactic variations have been discounted (see Section 4). f(b-l-2c) ---I-f(2b--c)
In practice, this is true of most languages that achieve w h e r e f(x) = x(x-t-a)
more than one implementation, and if the dialects are well f(bA--2c) -- f ( 2 b - c )
w h e r e f(x) = x ( x + a )
disciplined, they might with luck be characterized as
and b = u/(u+l)
Presented at an ACM Programming Languages and Pragmatics a n d c = v/(v-t-1)
Conference, San Dimes, California, August 1965. g ( f w h e r e f ( x ) = ax 2 -]- bx -I- c,
1Throe is no more use or mentiol~ of Xin this paper--eognoseenti u/(u-4-1),
will nevertheless sense an undercurrent. A not inappropriate title v/(v+l))
would have been "Church without lambda," w h e r e g ( f , p, q) = f ( p - k 2 q , 2 p - - q )
The texts of abstract ISWlM are composite information A program-point definition introduces a deviant kind
structures called amessage's. The following structure of function. Applying such a function precipitates pre-
definition defines~ the class amessage in terms of a class mature termination of the where-expression containing
called identifier. It also defines several functions for it, and causes its result to be delivered as the value of the
manipulating amessage's. These comprise the predicates entire where-expression.
Program-points are Iswli'S, nearest thing to jumping.
2 W r i t i n g a s t r u c t u r e definition i~volves coining n a m e s for the
v a r i o u s a l t e r n a t i v e f o r m a t s of amessage's and t h e i r c o m p o n e n t s .
Assignment is covered as a particular case of an operator.
T h e only o b s c u r e coinage is " b e e t , " w h i c h a b b r e v i a t e s " b e t a - For both of these the precise specification is in terms of the
r e d e x , " i.e., " a n e x p r e s s i o n a m e n a b l e to rule (fl)"; see Section 7'. underlying abstract machine (see [2]).