Going on 5 years ago, I wrote part 1. Now, finally, it’s time for the rest of the story.
Well this is a blast from the past… I was working on “the next post” about how Watson, Google, and the semantic web threaten the major BRMS systems when I found myself rewriting that what matters about Rete Algorithm-based production rule systems is that the order of the rules does not matter. It occurred to me that I must have written that a dozen times or more in my career so I did a Google and found this old paper has been on-line at the Free Library On-Line since 2006! I recall writing this in the early nineties and the owner of an AI magazine telling me he carried it with him for the better part of a year (and printing it in his magazine, I think). Some of you may enjoy reading it again!
1. WHAT IS AN EXPERT SYSTEM?
An expert system is a program that includes expertise.
2. WHAT IS EXPERTISE?
Expertise is knowledge that enables an individual, group or program to perform an intellectual task better than that task can be performed without the expertise.
3. HOW IS EXPERTISE ENCODED WITHIN A PROGRAM?
Expertise, being knowledge, falls into a few general categories.
Some knowledge is declarative knowledge which doesn’t do anything but which represents truth or state. Such knowledge can be stored in a standard database.
Some knowledge is algorithmic and can therefore be flow charted. Such knowledge can be expressed as a routine in any procedural programming language. Not everything a person or organization knows can be easily translated into data structures and flow charts, however.
4. SO FLOW-CHARTABLE ALGORITHMS SHOULD BE CODED PROCEDURALLY?
Yes, if the flow chart is actually produced, if it is not extraordinarily complex, and if there is no reason to believe that the flow chart is incorrect or incomplete. After all, procedural languages and flow charts are isomorphic, anything that can be expressed in one can be expressed using the other. However, if it is hard to produce a flow chart, it will be even more difficult to produce a working program using a procedural language.