You're building an expert system. There are well known patterns/ algorithms/architectures for that.

I developed ObjectiveCLIPS http://objectiveclips.com which is an open source framework for building this kind of thing in ObjectiveC on the Macintosh. A great book on the topic is http://www.amazon.com/ exec/obidos/redirect?link_code=as2&path=ASIN/ 0534384471&tag=blackbagopera-20&camp=1789&creative=9325

Basically you want a rules based production system based on the rete algorithm. This is important because decision trees are fragile and difficult to maintain.

CLIPS is a good free system to play around with. I've often wished we had a rete algorithm implementation in Squeak. http://www.ghg.net/ clips/CLIPS.html

Todd Blanchard

On Feb 17, 2007, at 4:11 PM, Blake wrote:

I'm half thinking-out-loud here and soliciting thoughts on a programming lesson. If this sort of thing bugs you, feel free to ignore.
---
My son is coding this flow-chart as a Q&A type application:

http://media.www.gamespy.com/articles/633/633817/img_2913464.html

So, it says, "You found something!" then asks "Is it alive?" and then branches out accordingly. I'm letting him muddle through with the idea of using his code as a platform to teaching him a better approach (or approaches).

Looking at the chart, it looks like spaghetti code, and reminds me of some of the stuff I did in BASIC. And that's sort of what he's doing within Smalltalk. I'm actually tempted to show him how it would look in BASIC using GOTOs and line numbers. It would have the advantage of being easy to see all in one glance.

But I want to, of course, show him a better approach and explain why it's better. My first thought was to make a state machine, but I don't think that'd be much better, in fact.

Then I thought of what I would do, professionally, in a similar context: The problem with the spaghetti code and even a state machine is that it's static, and adding bits and pieces tends to require everything to be massaged around the new parts. In the real world, I know that the chart's not going to be static.

I'd probably end up create a linked list of one-exit nodes and two- exit nodes.

So, that's what I'll probably show him.

The other thing I'd do, though, is put this all in an editable text file, like:

1,foundsomething,"You found something",alive
2,alive,"Is it alive?",friend,smash
2,friend,"Is it a friend?",lately,scary
1,smash,"Smash it with a stick!",shiny

But I'm wondering if this last wouldn't be too much.

Thoughts?
_______________________________________________
Beginners mailing list
Beginners@lists.squeakfoundation.org
http://lists.squeakfoundation.org/mailman/listinfo/beginners

_______________________________________________
Beginners mailing list
Beginners@lists.squeakfoundation.org
http://lists.squeakfoundation.org/mailman/listinfo/beginners

Reply via email to