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.
I agree that it is helpful to understand design patterns. It's also helpful to understand that applying design patterns doesn't always yield the simplest solution to a problem :-)
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.
OK. I didn't have the spec available. But you can still do it with just one copy, then generate the world back into the original world.
For a class problem you might have a firm requirement of a mutating method but in the real world you can often adjust your design to accomodate a more efficient algorithm.
If the Life example sucked, don't blame me too badly: I'm just the translator. *grin*
<soapbox> I hope this is not representative of CS education today.
My subjective impression is that a lot of Java software suffers from overengineering of this sort. The Python world is refreshingly free of this. I think a lot of the difference may be due to the better tools available in Python, especially first-class functions. But there may also be a cultural bias toward heavier solutions in the Java world.
</soapbox>
Kent
Talk to you later!
_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor