[net.lang.prolog] Elegance and Logical Purity

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

From:  Dick Gabriel <RPG@SU-AI>

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-