[net.ai] Elegance and Logical Purity

RPG%SU-AI@sri-unix.UUCP (10/14/83)

From:  Dick Gabriel <RPG@SU-AI>

                 [Reprinted from the Prolog Digest.]


In the Lisp world, as you know, there are 2 Lisps that serve as
examples for this discussion: T and Common Lisp. T is based on
Scheme and, as such, it is relatively close to a `pure' Lisp or
even a lambda-calculus-style Lisp. Common Lisp is a large,
`user-convenient' Lisp. What are the relative successes of these
two Lisps ?  T appeals to the few, me included, while Common Lisp
appeals to the many. The larger, user-convenient Lisps provide
programmers with tools that help solve problems, but they don't
dictate the style of the solutions.

Think of it this way: When you go to an auto mechanic and you
see he has a large tool chest with many tools, are you more or
less confident in him than if you see he has a small tool box
with maybe 5 tools ?  Either way our confidence should be based
on the skill of the mechanic, but we expect a skilfull mechanic
with the right tools to be more efficient and possibly more
accurate than the mechanic who has few tools, or who merely has
tools and raw materials for making further tools.

One could take RPLACA as an analog to a user-convenience in this
situation. We do not need RPLACA: it messes up the semantics, and
we can get around it with other, elegant and pure devices. However,
RPLACA serves user convenience by providing an efficient means of
accomplishing an end.  In supplying RPLACA, I, the implementer,
have thought through what the user is trying to do.  No user would
appreciate it if I suggested that I knew better than he what he is
doing and to propose he replace all list structure that he might
wish to use with side-effect with closures and to then hope for
a smarter compiler someday.

I think it shows more contempt of users' abilities to dictate a
solution to him in the name of `elegance and logical purity' than
for me to think through what he wants for him.

I am also hesitant to foist on people systems or languages that
are so elegant and pure that I have trouble explaining it to users
because I am subject to being ``muddled about them myself.''

Maybe it is stupid to continue down the Lisp path, but Lisp is the
second oldest lanuage (to FORTRAN), and people clamor to use it.
Recall what Joel Moses said when comparing APL with Lisp.

  APL is perfect; it is like a diamond. But like a diamond
  you cannot add anything to it to make it more perfect, nor
  can you add anything to it and have it remain a diamond.
  Lisp, on the other hand, is like a ball of mud. You can add
  more mud to it, and it is still a ball of mud.

I think user convenience is like mud.

-rpg-

simon@psuvax.UUCP (10/27/83)

Re: which mechanic would you trust more the one with fewer or more tools.
If the mechanic with the many tools had them strewn around in a haphazard
fashion, and I noticed that some unrelated tools were strung together, so
that picking one of them up would make five others bang into the side of
my car, and it seemed that some of the tools were plugged into electric
outlets with no insulation on the tools to protect the mechanic, while
the mechanic with few tools had them nicely set up - which is the mechanic
of choice?
janos simon