[comp.lang.prolog] BSI standard, Error trapping, and PROLOG as a "real" language.

lagache@violet.berkeley.edu (Edouard Lagache) (04/02/88)

               I have reading the latest exchanges on the proposed BSI
          PROLOG standard with alarm and despair.  Like Richard
          O'Keefe, I have been monitoring the miserable state of
          affairs surrounding the proposed FORTRAN-8x standard, and I
          am seeing a similar disregard for the "in the trenches"
          PROLOG programmers in the framing of BSI standard.

               I am *very* concerned about any proposal to change the
          meaning of predicates as fundamental as 'atom'.  The change
          that Richard was discussing seems to me be very bizarre
          indeed.  Because I am developing educational applications in
          PROLOG, I want to be able to retain complete control over the
          execution of my program.  Thus, I don't want the d**n system
          interrupting the logic of my program with error conditions
          that are in effect another kind of logical condition.

               In LISP it is possible to trap errors, thus, you can
          always keep control of your program "no matter what".  PROLOG
          has no such capability and it probably just as well since
          error trapping couldn't be implemented in a very "logical"
          way (in the PROLOG flow of control sense of logical).

               If we don't have error trapping, then how are us weary
          overworked programmer supposed to keep control of our
          programs when those ingenious fools out there finally find
          our bugs.  Sure, good code doesn't need such expedients, and
          if you are willing to pay me to spend another 5 years getting
          my master's maybe I will produce some of that fabled "good
          code".  Real code, like the real world, is imperfect.

               Given the fact that any PROLOG predicate has a perfectly
          good way to deal with _any_ situation it encounters (just
          plain fail), I cannot say I am at all sympathetic to
          increasing the number of ways that one can generate an
          runtime error message in PROLOG.  While it may be less
          "logical" to not generate an error message when attempting
          test if an unbounded variable is an atom, I am not convinced
          it is any less logical than to not report an error message
          when one attempts to query the database for a non-existing
          clause.

               Indeed, I think that this is another example of trying
          to ask PROLOG to be something it cannot be: programming in
          pure logic.  While there are some cases of failure that can
          be interpreted as false in the classical logic sense of the
          term. others such as a database query failure must be
          interpreted as precisely that: a failure to satisfy.  We
          cannot make a programming language that permits programming
          in pure logic, but we can make a very powerful programming
          language if we use logic as a model, *but* accept the real
          limitations imposed by our technology.

               While this is clearly a radical view, I could certainly
          see an implementation of PROLOG with no runtime errors at
          all, and were the failure of a predicate would mean only that
          the predicate couldn't be satisfied irregardless of the
          reason.  Doing so reduces the amount of information that the
          programmer has to work with, but in return he/she is given
          far more control over the execution of his/her code, and the
          problem of error trapping would be solved in a very logical
          fashion (depending on how one interprets the meaning of
          logical).

               Ok frame away, but I hope people see my point.  If
          PROLOG is going to become a real language (and not a
          researcher's plaything) it is going to have to become robust
          enough to handle a wide range of situations that it is poorly
          suited to deal with now.

      <*** Flames on ***>
          What the BSI people should be up is worrying about how to
          make PROLOG more practical.  I don't give a d**n about
          subtleties of logic, because no matter what you do, you cannot
          turn PROLOG into pure logic programming.  What I want from
          the BSI people is turn PROLOG from an interesting research
          tool into a hardened, robust programming language that can be
          taken out in a world of "mad scientist" programmers and
          ingenious neophile users and put to work in the trenches.  To
          do that means worrying about how to trap user errors, how to
          produce good input/output, how to get the system to run on
          Commodore-64s (God I hope not, but they are still using
          those things in the schools!), and how to make this language
          reasonable easy to learn, use, and maintain.  Worrying about
          those factors will make the difference between PROLOG's long
          term survival, and it short term disappearance.  Come on
          folks, if you really want this language to survive, then it
          is time to stop worrying if its hair is combed straight, and
          time to make sure that its teeth are good and sharp!
      <*** Flames off ***>

               [boy, am I going to get it for this note!]

                                        Edouard Lagache
                                        PROLOG Forum
                                        lagache@violet.berkeley.edu

ok@quintus.UUCP (Richard A. O'Keefe) (04/02/88)

In article <8231@agate.BERKELEY.EDU>, lagache@violet.berkeley.edu (Edouard Lagache) writes:
>                [boy, am I going to get it for this note!]
Not from me, you're not!

In fairness to the BSI committee, error handling has been one of their
concerns from the very first, and they have adopted a solution which is
similar to that in IF/Prolog, except that IF used sensible names for the
operations.  [As a matter of fact, the solution they have adopted is
very similar to what I suggested in a document I sent to the BSI group in
1984, entitled "Notes on the Standard".  I have often wondered why this
document was not included in the BSI Document Register.]