[net.lang.prolog] User Convenience Vs. Elegance

Pereira@SRI-AI@sri-unix.UUCP (10/12/83)

It is my view that the ultimate in user convenience will come
from the ultimate in elegance & logical purity. The reason is
simple: elegance & purity make predictability. Now, one sometimes
hears that "elegance & purity" are "too mathematical" for users
to operate  conveniently with. I have several arguments agains
this view:

1. It shows a contempt of user's abilities not supported by fact:
   each time I have failed to explain "elegant & pure" concepts
   to "users" was because I was muddled about them myself.

2. A "pure & elegant" system can more easily be modeled by a program
   which will guide the debugging process. This is the philosophy
   behind Shapiro's "algorithmic program debugging", which is a model
   from which future Prolog debugging tools should greatly benefit.

3. "Convenience for the user" is often a mask for "ignorance and
   laziness of the implementer". If an implementer says "I can't
   justify this feature on elegance & purity grounds, but it is
   convenient for the user" it suggests that he has not thought
   through what the user is really trying to do, or can't be bothered
   constructing a higher level model of the desired behavior. The
   best  current debugger for Prolog programs, Lawrence Byrd's one
   on DEC-10/20 Prolog (it may exist also in other Prologs I don't
   know of) comes from an elegant model of and/or tree search. Type
   errors in evaluable predicate arguments should be caught by some
   general typing mechanism as Richard suggests, not by "ad hoc"
   catches not motivated by semantics which 50% of the time will get
   in the way of the user who knows what he is doing.

4. Prolog systems seem unfortunately to be going the way of Lisp
   systems, if it doesn't work, add a feature. If Prolog programming
   is to survive into the 21st century as the tool of choice for
   "reasoning programs", Prolog systems must be cleaner, simpler and
   more powerful (more predictable), and that will come only from
   better theoretical understanding of what is to be done. The
   following are areas from which new systems would most benefit:

        - building ideas of algorithmic program debugging
          into Prolog systems;
        - understanding type checking as compile-time deduction
          of a programs consistency with type axioms;
        - inventing a logically-motivated module mechanism

-- Fernando Pereira