Hi Mike,

Your points are well taken; Java most certainly does have the faults
you enumerate for it. Java is a verbose language, and programming in
it can sometimes be clumsy for that reason. But it's certainly far
more dynamic than C, the language in which CLIPS is written, and
that's what I was comparing Java to, not COOL.

On the other hand, strongly typed, strongly structured languages like
Java have some advantages, notably in their scalability and their
performance. Large systems written in Java remain comprehensible;
understanding large LISP programs can become an impossible task quite
quickly. And Java's many restrictions mean that a just-in-time
compiler knows enough to produce code which closely approaches the
quality of equivalent compiled C code in performance, without
dedicated hardware.

I've become quite enamored of Ruby lately. Ruby is a truly dynamic
language that melds together (what are arguably) the best features of
Smalltalk, Perl, Java and its ancestors, and LISP. I think Ruby would
be a marvelous language in which to work with an inference engine. The
main problem with that idea right now is acceptance; there aren't that
many Ruby programmers yet. You hit on this in your last paragraph
below; Jess doesn't exist because Java is a great language to write an
inference engine in; Jess exists because there are a lot of Java
applications that need an inference engine, and a lot of Java
programmers who want that capability. And Jess reasons over Java Beans
instead of COOL objects because, in an important sense, Java Beans are
"real" -- they exist outside of the Jess rulebase -- while COOL
objects are not real -- they exist only inside of CLIPS; there is no
Rogue Wave COOL object library. Reasoning about Java Beans lets a Jess
program directly reason about the "real world".

One more thing, just as a curiosity:

> Interpretive, interative reflection on objects is
> a *big* deal (YMMV).

Note that Jess (like other Java-hosted scripting languages) can
provide some of this capability for Java. I very often use Jess from
the command like in this mode -- i.e., as an interactive shell in
which I can inspect and change the contents of Java objects.


I think Mike Smith wrote:
> [EMAIL PROTECTED] wrote:
> > 
> > No. CLIPS uses its own object-oriented language, "COOL," for defining
> > objects which can be pattern-matched. Because Jess is hosted by a
> > dynamic OO language, it has no need for this, and so uses Java as its
> > object system directly.
> > 
> 
> <soapbox>
> 
> The uncaveated usage of "dynamic OO language" applied to Java is
> something I find unsettling...
> 
> It should be noted (with great despair) that Java is a relatively poor
> object-oriented substrate for an expert system.  It is not "dynamic" in
> the way Smalltalk, Lisp (CLOS), COOL, or even Perl are dynamic.  Its
> dynamism isn't inherent to the system, and it is thus more difficult to
> use (Java's dynamism is rather like a dog walking on its hind legs.) 
> Many workarounds exist (dynamic class loading is possible, reflection is
> possible, etc.), but the "Java way" often complicates what can otherwise
> be simple operations in languages designed for dynamism from the start.
> Additionally, Java lacks dynamic multimethods, interpretive compilation
> and evaluation, multiple inheritance, and many of the slot/attribute
> annotations to objects.  
> 
> Unrelenting type enforcement, casting games, class compilation, and
> method lookup for a .invoke() are all painful. Tinkering with an expert
> system while running that is full of expensively derived state (it may
> take a long time to get to the state desired for inspection/evalution)
> is very difficult if part of that tinkering is with the methods of your
> objects.  The recompile, rerun to test, stop, edit, recompile... cycle
> can be very expensive relative to dropping in new code fragments
> on-the-fly.  Along with this, COOL allows interactive inspection of
> state (and correction of state as needed), which can often provide a
> huge savings in time.  Interpretive, interative reflection on objects is
> a *big* deal (YMMV).
> 
> (BTW, has anyone tried using VisualAge for Java with Jess to mitigate
> some of these issues?)
> 
> COOL, though burdened by certain quirks and limitations, is inspired by
> CLOS with some useful artifacts of description logic/KL-ONE added. 
> These features, along with COOL's native dynamism, interpretive method
> compilation, and *optional* type enforcement just might be more
> important than native Java integration.  In today's market, the COOL
> niche may be vanishing, but there can be a cost to using Java (if a
> group is used to "truly" dynamic languages the more expressive
> features).
> 
> </soapbox>
> 
> FWIW, I agree that re-implementing COOL for Jess wouldn't have made a
> lot of sense, particularly if it were a completely faithful
> CLIPS-compatible version.  (If you want COOL, use CLIPS.  If you want
> Java, use Jess.) 
> 
> - Mike Smith
> 
> 
> > I think =?iso-8859-1?Q?S=E9bastien_Darveau?= wrote:
> > [Charset iso-8859-1 unsupported, filtering to ASCII...]
> > > Hi,
> > >     I'd like to know if there is a way to define classes (as in clip) without 
>using javabean and defclass.
> > >
> > > thanks
> > 
> > ---------------------------------------------------------
> > Ernest Friedman-Hill
> > Distributed Systems Research        Phone: (925) 294-2154
> > Sandia National Labs                FAX:   (925) 294-2234
> > Org. 8920, MS 9012                  [EMAIL PROTECTED]
> > PO Box 969                  http://herzberg.ca.sandia.gov
> > Livermore, CA 94550
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
> > in the BODY of a message to [EMAIL PROTECTED], NOT to the
> > list (use your own address!) List problems? Notify [EMAIL PROTECTED]
> > ---------------------------------------------------------------------
> 



---------------------------------------------------------
Ernest Friedman-Hill  
Distributed Systems Research        Phone: (925) 294-2154
Sandia National Labs                FAX:   (925) 294-2234
Org. 8920, MS 9012                  [EMAIL PROTECTED]
PO Box 969                  http://herzberg.ca.sandia.gov
Livermore, CA 94550

---------------------------------------------------------------------
To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
in the BODY of a message to [EMAIL PROTECTED], NOT to the
list (use your own address!) List problems? Notify [EMAIL PROTECTED]
---------------------------------------------------------------------

Reply via email to