Class Hierarchies? Don't Do That
<i>"the real world doesn’t work that way. It really doesn’t work that way. In zoology, for example, we have penguins, birds that swim. And the bat, a mammal that flies. And monotremes like the platypus, an animal that lays eggs but nurses its young with milk."</i><p>Former biologist here.  Actually...most living things <i>do</i> work that way.  A human ISA primate.  Genetically.  Functionally.<p>If you merely focus on <i>outward behavior</i>, you get to the same place that early biologists got to with what was called "morphological classification" -- you find the weird examples of convergent evolution (e.g. <i>"OMG egg-laying mammal!"</i>), and you're tempted to throw out the whole classification system, even though it <i>mostly</i> works, and the errors are merely distracting from the inherent truth of the idea (that we're all related by genetic phylogeny; we <i>literally share implementation</i>).<p>Anyway, programmers, learn from biology:  when you see these kinds of errors it probably means that you're classifying things incorrectly, not that you should stop classifying altogether.