The Best of Creative Computing Volume 1 (published 1976)

Page 64 << PREVIOUS >> NEXT Jump to page:
Go to contents Go to thumbnails

Eclectic Programming Languages (Future of programming languages)

graphic of page

Eclectic Programming Languages
C. Terrence Ireland and Norman S. Glick
The George Washington University
Where are programming languages headed? Will there
always be many languages, or will there be one ultimate
language? Will BASIC and FORTRAN disappear from the
scene, replaced by new improved languages? Presently, the
complexity of new improved languages discourages their
general use.

One end of the curvilinear relationship between general
purpose computer language difficulty and computer
language sophistication is clear; the other end is faith. The
middle is hazy. The Display shows a partial construction of
this relationship. You should feel free to rearrange the
languages in the Display to fit your own beliefs.

An eclectic language system, ECL, has been developed
during the last five years at the Harvard Center for Research
in Computing Technology. This extensible language allows
you to reach out and select the "best elements." You can
even change ECL language elements that you dislike, and
add new ones for your specific application. Never mind
how ECL appears to others. What counts is how it appears
to you. If you want to redefine "=" to mean different
things in different contexts, as in PL/l, then extend ECL so
that
A = B = C
means set the value of A to "true" if the value of B is the
same as the value of C, otherwise set the value of A to
"false". Make sure, however, that you keep such activities
secret!

ECL does not have complex numbers. Why not add
them yourself. You can:

1. Define a new type of data, call it COMPLEX.

2. Extend the usual arithmetic operators  , -, *, and /
to handle the corresponding operations on COMPLEX numbers.

3. Construct a natural print value for a COMPLEX 
Language I
Difficulty I' \
\
ECL \
\
APL \
ALGOL \
* ~
FORTRAN ULTIMATE '

BAsic
Language Sophistication
Display
Simple languages are easy to use because they have few
constructs that you must absorb into your intuition. More
recent languages carry an expanded syntax, which opens up
new opportunities to instruct the computer. It will,
however, take you longer to absorb the expanded syntax
into your intuition; you may not find the time. One
attempt at requiring programmers to publish their
algorithms in a language with an expanded syntax ended in
failure. Most scientific programs are initially written in
FORTRAN. The Association for Computing Machinery
once required that published algorithms be written only in
ALGOL, a language more sophisticated than FORTRAN.

As a result many of the ALGOL programs mimicked the
original FORTRAN programs, instead of taking advantage
of the additional sophistication available in ALGOL.

Unfortunately, it is also true that well-programmed ALGOL
algorithms must often be translated back into FORTRAN
or BASIC to run on your machine.

The Ultimate Language appears at the other end of the
curve, which hopefully has descended back into view.

Perhaps the Ultimate Instruction will be "You know what I
want. Do it!" Presently, the Difficulty Curve for general
purpose languages is still going up, and the predicted time
of descent is moving farther into the future.

An Extensible Language
New languages should be eclectic: "not following any
one system ,..., but selecting and using what are the best
elements of all systems." An eclectic language permits a
very rich set of elements, but you must choose among
them. The choice can be very hard, particularly for novice
users of the language. Many will want to be constrained by
a simpler language; at least it keeps you out of trouble.

number. Either
a. The algebraic form, a   bi.

or
h. The picture form, an Argand Diagram, e.g.

4. Extend exponentiation to include COMPLEX numbers.

5. Et cetera.

An extensible language must also be contractable. Once
you expand ECL for the complex number user, you can
oontract other features that do not interest him. He sees
only the language he wishes to see. In a similar manner, you
can construct a BASIC-like language.

ECL gives you the opportunity to produce your own
extensions "as naturally as possible" in a well-understood
high level "core language." But there is a cost. To tie
together all the characteristics of the complex numbers into
one package requires a lot of code, You can build a
beautiful vertical structure; each layer of the structure feeds
into the next higher layer to permit simplified programming
at high altitudes. You can operate on complex types of data
with the same ease that you can add two numbers in
BASIC. It does take time to develop any such structure. If
you use entire package often, the development time is
well-spent. Perhaps your needs are less comprehensive or
you want something simple in a hurry. Perhaps someone
else will eventually write the package for you. ECL is a
powerful system, but it is still on the upward side of the
Difficulty Curve.

People have different reasons for writing programs. At
least three reasons are visible:

1. Instruct your computer to apply an algorithm to a set
of data, and to return to you the result of the
application.

2. Transport your programmed algorithm to another

Page 64 << PREVIOUS >> NEXT Jump to page:
Go to contents Go to thumbnails