> > Just as a warning, none of what I'm going to code here is original at
> > all: I'm rehashing a main idea off of a paper called "Using the Game
> > of Life to Introduce Freshman Students to the Power and Elegance of
> > Design Patterns":
> >
> > http://portal.acm.org/citation.cfm?id=1035292.1028706
>
> Uh, with all respect Danny, this is a nice example of the Command
> pattern, but to me this example would better be called "Using the Power
> and Elegance of Design Patterns to Complicate the Game of Life".
Hi Kent,
Yeah, in retrospect, I see that the design patterns there might be
overkill.
There seems to be a fashionable push to introduce patterns early on in
computer science education, perhaps because they are easy to put in as
test questions.
But despite this, I do think that there are some patterns that are worth
seeing, even if they are in unrealistic toy situations. I got a kick out
of seeing how 'Command' was applied in the Life example, because it shows
that we can store active actions as data.
> Why not just build a new world with the values of the next generation in
> it, and return that from apply_next_generation?
That also works, but it doesn't fit the function's description. The
example that I adapted originally wanted a function that mutated the
previous generation, so that's what I stuck with.
> The copying is not needed at all and the command pattern is introduced
> to solve a non-problem.
[code cut]
> The caller would have to change slightly to accept the new world
> returned from the function, but there is no unnecessary copying.
Sure. I didn't think of this before, but the two approaches can reflect
different ways that people can represent data that changes through time:
o. Making changes on a "scratch-space" copy of the data.
o. Maintaining a "diff" change log.
The approach with the Command pattern seems close to a diff-oriented view
of applying changes to a model.
If the Life example sucked, don't blame me too badly: I'm just the
translator. *grin*
Talk to you later!
_______________________________________________
Tutor maillist - [email protected]
http://mail.python.org/mailman/listinfo/tutor