I think Josh Hudson wrote:
[Charset iso-8859-1 unsupported, filtering to ASCII...]
> Hi,
> 
> I'm interested in what you think are the Strengths, Weaknesses,
> Opportunities & Threats (SWOT) of using Jess as opposed to other 3 or 4GL
> programming languages such as C/C++ and Java.


These terms aren't as crisp as they used to be, but originally
languages like C/C++/Java, which are very general, would have been
considered 3GLs, and Jess, being aimed at solving a particular kind of
problem, would be solidly a 4GL. So if we're using these terms, we can
start with the standard discussion of choosing a generalized or
specific tool to solve a given problem. For a one-off system, it's
often easiest to simply go with what you know. If you need to solve a
set of similar problems, or if you need to write a system that will
have to be maintained and updated over time, the specialized tool
becomes more attractive.

If I'm at my workbench and I need to cut one piece of wood to length,
I'll often just grab my handsaw. It's quick, quiet, and works well
enough. But if I need to cut 10 identical pieces, I'll take a minute
and set up the table saw, and it will save me time in the long run and
give better results. The 3GL/4GL choice is like that.

> (In addition, If anyone could suggest a problem to me that
> you could only solve with Jess and not Java or C I would be very
> interested).

Jess's rule language is a Turing-complete language, making it,
ultimately, isomorphic with any other Turing-complete language in
terms of solveable problems. Furthermore, since Jess is written in
Java, it's obvious that anything you can do in Jess you can do in Java
simply by writing the computational equivalent of Jess. So it's not
about problems that are impossible to solve with one or the other --
it's about using the right tool for the job.

> 
> * Strengths/Opportunities
> 
> 1. Reduced command set (quicker to code)
> 

Not sure that this applies.


> 2. Easier/quicker to develop solutions for complex rule based problems
> 

This is certainly one advantage. There are more:

- Modularity. Straightforward implementation of rules in a 3GL can
  come out looking like a set of deeply nested loops containing long switch
  or if-then-else statements. In contrast, in a rule language, each
  individual rule is a discrete unit. This makes it easier to
  understand, test, and modify the program.

- Maintainability. In general, separating business logic from
  infrastructure code eases application maintenence.

- Performance. Many rules engines implement specialized and sophisticated
  pattern-matching algorithms, and thus can process large numbers of
  rules and large amounts of data very rapidly. Getting the same
  performance from a 3GL would involve reimplementing these algorithms


> 
> 2. Requires learning a new language quite disimlar from any other (as
> opposed to other languages such as PHP/JSP/Perl, Java/C++ which have can be
> quite similar)

Note that there are other families of languages besides the C one. In
particular, Jess's rule language is in the Lisp family, which includes
Scheme and Tcl and many more. The more language families you know, the
more different approaches to a problem you can consider, and so the
more powerful your toolbox is.

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

--------------------------------------------------------------------
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