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