Newsgroups: comp.ai.shells
Path: cantaloupe.srv.cs.cmu.edu!das-news.harvard.edu!news2.near.net!MathWorks.Com!europa.eng.gtefsd.com!howland.reston.ans.net!agate!overload.lbl.gov!lll-winken.llnl.gov!uop!csus.edu!netcom.com!ludemann
From: ludemann@netcom.com (Peter Ludemann)
Subject: Re: Why use a shell?
Message-ID: <ludemannCwIMv4.B6L@netcom.com>
Organization: NETCOM On-line Communication Services (408 261-4700 guest)
References: <34qmot$86v@unix.sri.com> <1.674.2209.0N27DE9C@dscmail.com> <359in7$1fc5@yuma.ACNS.ColoState.EDU> <35cfe8$iib@unix.sri.com>
Date: Thu, 22 Sep 1994 05:21:04 GMT
Lines: 30

In article <35cfe8$iib@unix.sri.com>,  <wohlsen@sri.com> wrote:
>I would like to restate the question that started this thread.  I recognize
>that many employ shells because they do not want to create their own inference
>engine and knowledge representation scheme.  ...

Almost all of my knowledge representation work has been done using
Prolog.  If I take my last project as an example (a medical
vocabulary, intended to eventually have 500,000 terms and over 100
kinds of semantic links), I needed very precise control over the
inferencing method.  The actual work in building the inferencing and
frame representation was a matter of days; but I spent weeks in
working through the possibilities and convincing myself that the
inferences were linear on the depth of the term tree.  [I spent
another week or two in some front-end tools, again helped by Prolog's
grammar rule notation.  Certainly beats YACC/LEX.]

Which is not to say that shells aren't good in some instances; it's just
that I can usually do as well with a good general-purpose tool, such as 
Prolog with a good library (I'll admit to being biased towards FOPL).

If you want a prime example of mis-use of shells, consider the
"monkeys & bananas" problem worked out in the OPS5 book (sorry, don't
have the reference handy).  I scratched my head for a while over this
and finally concluded that a forward-chaining RETE engine had been
subverted into simulating a backward-chaining engine.  The equivalent
Prolog code (taking advantage of backward chaining and backtracking)
is an order of magnitude smaller.  [Please, no flames about forward
chaining vs backward chaining]
-- 
Peter Ludemann                      ludemann@netcom.com
