On Nov 7, 2006, at 2:02 PM, Shane Hathaway wrote:

In particular, you'll find that static typing has a strong effect on
what people think OOP is.  The canonical Design Patterns book expects
static typing and thus applies well to C++ and Java, but many of the
patterns become irrelevant when applied to dynamic languages.  For
example, in Python, the factory pattern is in a sense built in to the
language, since constructors and functions are called the same way.


This is not entirely true. The Gang of Four had one or two hardcore Smalltalk programmers among them, and IIRC the Design Patterns book has a few Smalltalk examples and mentions the situations where the patterns are only required because of the static type system.

The examples within are in Java, but the concepts translate fairly
easily to C++. Although some people are saying these days that design
patterns are signs of language deficiency,

That sentiment comes directly from the LISP community. It's both right
and wrong.  It's right because a more flexible language like LISP lets
you eliminate the repetition that sometimes arises from design patterns. However, another intent of design patterns is to express the design of
the software to other developers, and that alone has obvious value.

Sorry to be pedantic, but we don't call it LISP anymore. It was only ever called LISP because there weren't any lowercase characters on terminals when it was invented! It's not a proper acronym, so LISP is just wrong. Lisp is the way to name it.

Anyway, it's not just from the Lisp community. It's more generally from the functional programming community, and even from people in the Perl community like Mark Jason Dominus (who probably truly belongs in all three communities). But there's still value in learning about patterns, because they are often elegant solutions to difficult design problems.

Also, here's another candidate book on OO design: Grady Booch, "Object-Oriented Design"

It was recommended by Bjarne Stroustrup in an interview I was just reading, and Booch has been a huge name in the OO design community for a long time, so I imagine it's good.

                --Levi

/*
PLUG: http://plug.org, #utah on irc.freenode.net
Unsubscribe: http://plug.org/mailman/options/plug
Don't fear the penguin.
*/

Reply via email to