"The problem with examples like `Duck extends Bird` is that it gives you no understanding of the kind of considerations you need to think about in order to decide whether the design decisions discussed above are good or bad.
In fact, it actively sabotages that understanding.
You can’t add code to ducks.
You can’t refactor ducks.
Ducks don’t implement protocols.
You can’t create a new species in order to separate some concerns (e.g. file I/O and word splitting).
You can’t fake the ability to turn a duck into a penguin by moving its duckness into an animal of some other species that can be replaced at runtime."
Monday, August 22, 2011
A bunch of quacks
Kragen hates object-oriented ducks: