It looks like the world of business programming and web applications has finally gotten with the, uh, 80’s, and discovered rule-based expert systems, according to this Jon Udell column.
Today we program this stuff in procedural languages, and we make a hell of a mess doing so. Wouldn’t it be great if we could declare a bunch of rules and have a rules engine work out the consequences? As Ted points out, this is the moral equivalent of using SQL to say what you want done with data not how.
Although Jess, a Java-based engine developed at Sandia Labs, has roots in both Lisp and Prolog, the emerging business-rules engines work with languages such as Java and C#, read XML-rule declarations, and are packaged for J2EE and/or .Net deployment.
Will rules-based programming just create a different kind of mess? I doubt anyone really knows, but I’m glad we’re gearing up to do the experiment. Sooner or later, something like this has to work.
It’s great to see AI techniques making their way into mainstream programming, but to answer the final question above: Of course, people do know. A whole field of research studies what will and won’t work. And yes, if you get enough rules, it does make a mess, thanks to the lack of a higher-level structured representation for the knowledge.
Luckily, there are tools that provide the necessary higher-level abstractions, like the work of the Rapid Knowledge Formation project here at UT. If you’re bound to doing your stuff in Java (hardly necessary if you’re doing web apps these days), there’s even a Java implementation of Algernon, another UT-grown expert-systems language.