Goodbye, shitty Car extends Vehicle object-orientation tutorial (2011)
&gt; You can’t add code to ducks.<p>&gt; You can’t refactor ducks.<p>&gt; Ducks don’t implement protocols.<p>&gt; You can’t create a new species in order to separate some concerns (e.g. file I&#x2F;O and word splitting).<p>It&#x27;s odd he makes these complaints, because the comment he&#x27;s responding has this caveat:<p>&gt; unless they are talking about writing a clone of The Sims or something<p>In the context of a game or simulation, such classes can absolutely do all these things. And those seem entirely reasonable ways to teach someone about programming, while being more accessible and engaging than &quot;let&#x27;s talk about how to write an IO stack.&quot; *<p>&gt; Penguins don’t implement the “fly” method that can be found in birds.<p>That&#x27;s an important issue, though, which an OO tutorial needs to deal with. It points at two major problems:<p>1. The circle-ellipse problem[1].<p>2. That nominative types have all the inherent problems that taxonomy has.<p>And since one solution is &quot;duck typing&quot;[2] it&#x27;s worth noting that it&#x27;s entirely clear what it means, despite being named after ducks.<p>[1]: <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Circle-ellipse_problem" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Circle-ellipse_problem</a><p>[2]: <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Duck_typing" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Duck_typing</a><p>* IO stacks are good to learn, but to do them in OO you have to understand IO first, and though it&#x27;s very satisfying when you get tricky IO code right, it&#x27;s not really something you can show to your friends.