Thinking in Patterns: Download the First Version
RichMeraz writes "Bruce Eckel has posted his first incarnation of Thinking in Patterns with Python on his website. What a wonderful Christmas present." Make sure to check the list of mirrors before downloading. As Eckel says, "This should whet your appetite to read
Design Patterns "
(or reread it)... classic book, I figure it can't hurt to refresh my memory once a year, and holidays seem like a good time to think in the abstract...
> It's like the difference between Legos and
> carpentry. Sure, it's a little harder to cut
> wood to the right length and you nails or
> screws to put it together, but would you want
> to live in a house made of legos?
From this audience, I doubt you are going to get the answer you are looking for.
.
We have some here at Legoland in the Mall of America. You'd need a sledgehammer to go through the models of the earth and the moon floating in the air. And judging by some of the quality buildings we have around here I bet some people *would* have preferred their builders would have used legos.
Here is the problem with design patterns. Once upon a time, people would read the AT&T UNIX and BSD Kernels in order to get ideas for how to write programs well. In order to be a good programmer, you would invariably find a better programmer and then read all his stuff. It was in this way that you found cool programming concoctions, such as this :
#define _CONCAT(X,Y) X/**/Y
I'll list three more examples to make the point clear. On the Xerox STAR workstation, the BITBLT instruction was used to perform database range queries - e.g. give me all the servers in the network that support file serving.
As a second example, the MESA signal facility was used during the expansion of mailing distribution lists to detect circular expansions (e.g., raise a "Have_I_Seen_This_One_Before?" signal, go up the stack looking for matches on the signal arg, if there is no match, fall through the signal handler and continue the recursive expansion).
A fourth example is the way that the "C" switch statement is the ideal construct for parsing command-line arguments in a UNIX shell command.
Now in the object-oriented world, people do not want to be bothered with the problem of reading others code, or thinking for themselves, so they go for these trendy "design patterns" books where other people do the heavy lifting or simply make up garbage to see if it will sell. This lets the average or below-average programmer off the hook and relieves them of the burden of forming their own opinions and developing their own tastes in programming.
This is evil in it purest form. It is the an example of the same laziness that has us receiving 95% opinion and 5% in every news story reported today. This laziness have moved outside the news room and is invading software engineering.
We're all dumber as a result of this trend !!!