Welcome to Scribd. Sign in or start your free trial to enjoy unlimited e-books, audiobooks & documents.Find out more
Standard view
Full view
of .
Look up keyword
Like this
0 of .
Results for:
No results containing your search query
P. 1
The Next 700 Programming Languages

The Next 700 Programming Languages



|Views: 1,712|Likes:
Published by Ed McManus

More info:

Categories:Types, School Work
Published by: Ed McManus on Feb 28, 2009
Copyright:Attribution Non-commercial


Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less





The Next 700 Programming Languages
P. J. Landin
Univac Division of Sperry Rand Corp., New York, New York
today... 1,700 special programming languages used to 'com-municate' in over 700 application areas."--Computer
Issues,an American Mathematical Association Prospectus, July 1965.
A family of unimplemented computing languages is de-scribed that is intended to span differences of application areaby a unified framework. This framework dictates the rulesckout the uses of user-coined names, and the conventionsabout characterizing functional relationships. Within 'lhis frame-work 'lhe design of a specific language splits into two inde-pendent parts. One is 'lhe choice of written appearances ofprograms (or more generally, their physical representation).The o:her is the choice of the abstract entities (such as numbers,character-strings, lists of them, functional relations amongthem) that can be referred to in the language.The system is biased towards "expressions" rather than"statements." It includes a nonprocedural (purely functional)subsystem fhat aims to expand the class of users' needs thatcan be met by a single print-instruction, without sacrificing theimportant properties that make conventional right-hand-sideexpressions easy to construct and understand.
Most programming languages are partly a way ofexpressing things in terms of other things and partly abasic set of given things. The Isw~M (If you See What IMean) system is a byproduct of an attempt to disentanglethese two aspects in some current languages.This attempt has led the author to think that manylinguistic idiosyneracies are concerned with the formerrather than the latter, whereas aptitude for a particularclass of tasks is essentially determined by the latter ratherthan the former. The conclusion follows that manylanguage characteristics are irrelevant to the allegedproblem orientation.IswI~ is an attempt at a general purpose system fordescribing things in terms of other things, that can beproblem-oriented by appropriate choice of "primitives."So it is not a language so much as a family of languages,of which each member is the result of choosing a set ofprimitives. The possibilities concerning this set and whatis needed to specify such a set are discussed below.Isw~M is not alone in being a family, even after meresyntactic variations have been discounted (see Section 4).In practice, this is true of most languages that achievemore than one implementation, and if the dialects are welldisciplined, they might with luck be characterized asPresented at an ACM Programming Languages and PragmaticsConference, San Dimes, California, August 1965.1Throe is no more use or mentiol~ of X n this paper--eognoseentiwill nevertheless sense an undercurrent. A not inappropriate titlewould have been "Church without lambda,"differences in the set of things provided by the library oroperating system. Perhaps had ALGOL 60 been launchedas a family instead of proclaimed as a language, it wouldhave fielded some of the less relevant criticisms of itsdeficiencies.At first sight the facilities provided in IswI~,~ will appearcomparatively meager. This appearance will be especiallymisleading to someone who has not appreciated how muchof current manuals are devoted to the explanation ofcommon (i.e., problem-orientation independent) logicalstructure rather than problem-oriented specialties. Forexample, in almost every language a user can coin names,obeying certain rules about the contexts in which thename is used and their relation to the textual segmentsthat introduce, define, declare, or otherwise constrain itsuse. These rules vary considerably from one language toanother, and frequently even within a single languagethere may be different conventions for different classes ofnames, with near-analogies that come irritatingly close tobeing exact. (Note that restrictions on what names canbe coined also vary, but these are trivial differences. Whenthey have any logical significance it is likely to be perni-cious, by leading to puns such as ALaOL'S integer labels.)So rules about user-coined names is an area in whichwe might expect to see the history of computer applica-tions give ground to their logic. Another such area is inspecifying functional relations. In fact these two areas areclosely related since any use of a user-coined name im-plicitly involves a functional relation; e.g., compare
x(x-ka) f(b+2c)
where x = b -4- 2c where
f(x) = x(x+a)
ISW~M is thus part. programming language and part pro-gram for research. A possible first step in the researchprogram is 1700 doctoral theses called
Correspondencebetween x and Church's X-notation. ''~
2. The where-Notation
In ordinary mathematical communication, these usesof
require no explanation. Nor do the following:
f(b-l-2c) ---I- (2b--c)
f(x) = x(x-t-a)f(bA--2c) -- f(2b-c)
f(x) = x(x+a)
and b =
and c =
f(x) = ax 2 -]- bx -I- c,u/(u-4-1),
g(f, p, q) = f(p-k2q, 2p--q)
Volume 9 / Number 3 / March, 1966
Communications of the
ACM 157
A phrase of the form 'where definition' will be called a"where-clause." An expression of the form 'expressionwhere-clause' is a "where-expression." Its two principalcomponents are called, respectively, its "main clause"and its "supporting definition." To put 'where' into aprogramming language the following questions needanswers.
Linguistic Structure.
What structures of expressioncan appropriately be qualified by a where-clause, e.g.,conditional expressions, operand-listings, statements,declarations, where-expressions?Likewise, what structures of expression can appro-priately be written as the right-hand side
of asupporting definition? What
are appropriate for awhere-expression, e.g., as an arm of a conditional ex-pression, an operator, the main-clause of a where-ex-pression, the left-hand side
of a supporting definition,the rhs of a supporting definition?
Having answered the above questions, whatare the rules for writing the acceptable configurationsunambiguously? E.g., where are brackets optional orobligatory? or other punctuation? or line breaks? or in-dentation? Note the separation of decisions about struc-ture from decisions about syntax. (This is not a denialthat language designers might iterate, like hardwaredesigners who distinguish levels of hardware design.)
Semantic Constraints on Linguistic Structure.
In theabove examples each main clause was a
ex-pression; i.e., given appropriate meanings for the variousidentifiers in it, it denoted a number. What other kinds ofmeaning are appropriate for a mainclause, e.g., arrays,functions, structure descriptions, print-formats?Likewise what kinds of meaning are appropriate for
of supporting definitions? Notice there is not a thirdquestion analogous to the third question above under
linguistic structure.
This is because a where-expressionmust mean the same kind of thing as its main clause andhence raises no new question concerning what contextsare meaningful. Notice also that the questions aboutmeaning are almost entirely independent of those aboutstructure. They depend on classifying expressions in twoways that run across each other.
What is the outcome of the more reconditestructural configurations among those deemed admissible,e.g. mixed nests of where-expressions, function definitions,conditional expressions, etc.?Experimental programming has led the author to thinkthat there is no configuration, however unpromising itmight seem when judged cold, that will not turn up quitenaturally. Furthermore, some configurations of 'where'that might first appear to reflect somewhat pedantic dis-tinctions, in fact provide close matches for current lan-guage features such as
name/value and own
(see [2, 3]).All these questions are not answered in this paper. Thetechniques for answering them are outlined in Section 4.One other issue arises when 'where' is added to aprogramming language--types and specifications. Amethod of expressing these functionally is explained in[2]. It amounts to using named transfer-functions insteadof class names like integer, i.e., writing
n =
instead of the specification
Thus the use of functional notation does not jeopardizethe determination of type from textual evidence.
3. Physical ISWIM and :Logical ISWIM
Like ALGOL 60, ISWIM has no prescribed physicalappearance. ALGOL C0'S designers sought to avoid commit-ment to any particular sets of characters or type faces.Accordingly they distinguish between "publication hm-guage," "reference language" and "hardware languages."Of these the reference language was the standard and wasused in the report itself whenever pieces of ALGOL 60occurred. Publication and hardware languages are trans-literations of the reference language, varying according tothe individual taste, needs and physical constraints onavailable type faces and characters.Such variations are different physical representationsof a single abstraction, whose most faithful physicalrepresentation is the reference language. In describingIswI~ we distinguish an abstract language called "logical
whose texts are made up of "textual elements,"characterized without commitment to a particular physicalrepresentation. There is a physical representation suitablefor the medium of this report, and used for presentingeach piece of IswI~1 that occurs in this report. So thisphysical representation corresponds to "reference ALGOL60," and is called "reference ISWIM," or the "IswI~ireference representation," or the "IswI~,r reference hm-guage."To avoid imprecision one should never speak just of
but always of "logical IswxM" or of "such-and-such physical ISWlM." However, in loose speech,where the precise intention is clear or unimportant, werefer to "ISWlM" without quMifieation. We aim at a moreformal relation between physical and logical languagesthan was the case in the ALGOL C0. This is necessary sincewe wish to systematize and mechanize the use of differentphysical representations.
4. Four Levels of Abstraction
terminology is often used todistinguish features that are a fortuitous consequence ofphysical conditions from features that are in some sensemore essential. This idea is carried further by making asimilar distinction among the "more essential" features.In fact ISWlM is presented here as a four-level conceptcomprising the following:(1) physical IswlM'S, of which one is the referencelanguage and others are various publication and hardwarelanguages (not described here).
158 Communications of the ACM Volt, me 9 / Number 3 / March, 1966
(2) logical ISWlM, which is uncommitted as to char-acter sets and type faces, but committed as to the sequenceof textual elements, and the grammatical rules for group-ing them, e.g., by parentheses, indentation and precedencerelations.(3) abstract Iswls,,, which is uncommitted as to thegrammatical rules of sequence and grouping, but com-mitted as to the grammatical categories and their nestingstructure. Thus abstract Iswis,~ is a "tree language" ofwhich logical IswlM is one linearization.(4) applicative expressions (AEs), which constituteanother tree language, structurally more austere thanabstract ISWlM, and providing certain basic grammaticalcategories in terms of which all of Isw1~'s more numerouscategories can be expressed.The set of acceptable texts of :t physical ISWlM isspecified by the relations between 1 and 2, and between2 and 3. The outcome of each text is specified by theserelations, together with a "frame of reference," i.e., a rulethat associates a meaning with each of a chosen set ofidentifiers.These are the things that vary from one member of ourlanguage family to the next. The specification of the familyis completed by the relation between abstract IswI~ andAEs, together with an abstract machine that interpretAEs. These elements are the same for all members of thefamily and are not discussed in this paper (see [1, 2, 4]).The relationship between physical ISWlM and logicalISWIM is fixed by saying what physical texts representeach logical element, and also what layout is permitted instringing them together. The relationship between logicalIsw~ and abstract IswlM is fixed by a formal grammarnot unlike the one in the ALGOL 60 report, together with astatement connecting the phrase categories with theabstract grammatical categories.These two relations cover what is usually called the"syntax" or "grammar" of a language. In this papersyntax is not discussed beyond a few general remarks anda few examples whose meaning should be obvious.The relationship between abstract Iswls( and AEs isfixed by giving the form of AE equivalent to each abstractIswiM grammatical category. It happens that these latterinclude a subset that exactly matches AEs. Hence thislink in our chain of reh~tions is roughly a mapping ofISWIM into an essential "kernel" of IswIM, of which all therest is mere decoration.
5. Abstract ISWIM
The texts of abstract ISWlM are composite informationstructures called
The following structuredefinition defines~ the class
in terms of a classcalled
It also defines several functions formanipulating
These comprise the predicates
2 Writing a structure definition i~volves coining names for thevarious alternative formats of
and their components.The only obscure coinage is "beet," which abbreviates "beta-redex," i.e., "an expression amenable to rule
see Section 7'.
demand, simple, infixed,
etc; also the selectors
body, rator,leflarm, nee,
etc; also (taking for granted certain un-formalized conventions concerning structure definitions)the constructors,
consdemand, conscombination
(elsewhere~bbreviated to
combine), consstandardade],
etc. Examplesof reference IswI~ are given alongside, against the rightmargin.
An amessage iseither a
and has [Print
a+2ba body
which is an aexprcssion,or else a definition, [Def
where recan aexpression (aexp) iseither
and has
[CAth231"a body
which is an identifier
or a combination,
in which case it has
[sin(a+2b)a rator,
which is an aexp, orand a
which is an aexp, a + 2bor
in which case it iseither
and has
[p--*a+2b; 2a--ba condition,
which is an aexp,and a
which is an aexp,and a
which is an aexp,or
and has
[q-+2a--ba condition,
which is an aexp,and an
which is an aexp,or a
and has
[a+b, c+d, e+fa body
which is an aexp-list,or
and has [x(x+l) where x = a + 2b
a mainclause,
which is an aexp, orand a
let x = a + 2b; x(x+l)which is an adef,andan adefinition (adef) iseither
and has
[x=a+2ba definee (nee),
which is an abe,and a
definiens (niens),
which is an aexp,or
arid has [f(x) =z(x+l)
a lefthandside (lhs),
which is an abe-list of length >2,and
a righthandside (rhs),
which is an aexpor
and has [ppf(x) =x(x+l)
a body
which is an adef,or
and has [tee f(n)= (n=0)-+l;
nf(n-1)a body
which is an adef,or
and has
y=2a--ba body,
which is an adef-list,or
and has [f(y) =z(x+y)
a mainclause,
which is an adef,and a
which is an adef.where an abe iseither
and has
which is an identifier,or else, is an abv-lislo.
[x, (y, z), w
A program-point definition introduces a deviant kindof function. Applying such a function precipitates pre-mature termination of the where-expression containingit, and causes its result to be delivered as the value of theentire where-expression.Program-points are Iswli'S, nearest thing to jumping.Assignment is covered as a particular case of an operator.For both of these the precise specification is in terms of theunderlying abstract machine (see [2]).
Volume 9 / Number 3 / March, 1966 Communications of the ACM

Activity (9)

You've already reviewed this. Edit your review.
1 hundred reads
1 thousand reads
amenemenema liked this
dherington liked this
jbester1 liked this
chumpalump liked this
c15c8ra1n liked this
Steven Shaw liked this

You're Reading a Free Preview

/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->