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