When seeking to attain mastery of rules engines (RE), you will experience an odd phenomenon. Others, upon hearing some details of your course of study, will react in a what initially appears to be a manner angrily dismissive of the topic itself. This is strange given the fundamental role that computation plays in literally everything we do, from a manifest perspective, with hardware computers, organic computers, and other.
Upon further interaction, and reflection, it quickly becomes apparent what motivates this reaction is fundamentally, the re-experience of a long inaccessible, perennial fear.
Continue reading “The perennial fear revealed by a rules engine”
You know that advice “trust but verify”? It couldn’t be more true when it comes to the realm of applied or narrow artificial intelligence, specifically with respect to rules-engines. There is more dis-information out there on rules-engines than on any other tech topic that I’ve ever researched. It is really, really shocking the amount of inaccurate, confused, and just plain wrong information out there.
The problem with it is that it makes it harder for people who want to learn more about the topic by wasting their time and presenting the topic as very, very shallow and simplistic. It makes rules-engines very, very easy to blow off as sort of a joke and nothing more than pricey business rules engines. That is sad, too, because rules-engines provide a very nuanced and special programming style all their own that every programmer should at least learn.
In order to avoid this, I tried to diligently record all of the materials that I have found valuable, including Wikipedia pages. My hope in sharing them is that they provide some baseline for getting started, that worked for at least one person. My approach was to read and bookmark internally to the site, and also do research out of the site. It wasn’t a race, I took time to take it in, reading as many times as necessary for it to make sense, including re-reading it over as many days or weeks as I saw fit. The topics are grouped into sections that are somewhat logically related, and definitely do relate to one another, and try to help make it easier to access the topics in the following group.
Rules-engines comes from a rich computational heritage, but strangely get a fraction of a percentage of coverage even in comparison to seemingly fringe topics like Lisp, so I hope that you have as much fun reading as I did, it was really enlightening!
Continue reading “Rules-Engines Recommended Wikipedia Reading”
Any sufficiently complicated enterprise system contains an ad-hoc, informally-specified bug-ridden slow implementation of half of a rules engine.
Ok, Post didn’t really say it I’m just having a little fun here paraphrasing Greenspun.
Think about it though; it works!
Computing is very poorly understood. Case in point here is the litmus test I would argue to you that:
In North America you can pull any 18 year old randomly off the street and ask them to do something and it would go like this:
1. Can you build a basic bridge between a 3ft span given some materials?
2. Can you build a basic drainage system given some materials?
3. Can you organize a group of 5 people to perform a non trivial but paralleled task?
4. Can you prepare a soup like chili given materials?
5. Can you write down the computational logic to show the fibonacci sequence (given an explanation of the sequence itself)?
What percentage would you say that we pull 1000 people and given them this test? What percentage could successfully do each?
You know where I am going with this.
100% can do 1-4 and 0.01% could do 5.
There is a deep, deep lack of awareness about computation.
The problem with computation and titles around it are that very people ever think about what it is that we truly do, and often times the ones that do are relegated to the backroom. Case in point. SICP is no longer part of MIT entry program because it is too far “out there”. Kind of sad, that is part of the mystery, and the fun, what we are doing and what we can do specifically on computers, is, something that no one in history has been able to do before. We can execute things now that people have only dreamed of, computers are truly without limit. I found this special:
Over the last few weeks nights and weekends I’ve played around with Jess studying up on rules engines and expert systems. The approach of focusing on the limited reality defined by the facts and rules in the universe of the engine along with letting go of control of sequencing are surprisingly freeing. Memories of event loops, OOAD, OOP, multimethods, state machines, horribly hand-written code, and event handlers all come to mind. It is fascinating to see how well some things can be simplified. It makes me wonder why we ever choose one approach over another. Supposedly we always use the best tool for the job; but in practice most of us learn one halfway decent approach (“tool”) once and end up using it forever. I suppose that is a human trait and not unique to problem solving with programming languages.