[Newbies] Spaghetti code
Todd Blanchard
tblanchard at mac.com
Sun Feb 18 19:51:55 UTC 2007
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 at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/beginners
More information about the Beginners
mailing list