
Lets Talk about Object Oriented Programming - Agent47DarkSoul
https://medium.com/@agent47darksoul/lets-talk-about-object-oriented-programming-d9f1602ebaa7#.tqkldvb8w
======
threepipeproblm
To me this seems to be a flawed response to the article critical of OO.

For example, the author seems to have consulted Wikipedia for a definition of
OO, found the "Inheritance vs subtyping", and decided (mistakenly) that
inheritance is orthogonal to subtyping.

As I understand it, inheritance is inseparable from subtyping, because
inheritance IS-A kind of subtyping (meta irony!)

This leads the author to make erroneous statements, e.g. "In a lot of
languages, inheritance is implemented as a subtyping mechanism, eg. Java/C#
etc, but in some languages its not. These languages decouple inheritance and
subtyping, e.g. Go."

But Go actually does not have inheritance. This is why the Go FAQ answers the
question, "Why is there no type inheritance?" by stating that, "Object-
oriented programming, at least in the best-known languages, involves too much
discussion of the relationships between types, relationships that often could
be derived automatically. Go takes a different approach."

Go is based on criticism of OO similar to the one that this author is
defending.

The author cites mixins as a better way to get inheritance, but mixins aren't
inheritance (Wikipedia: "Mixins are sometimes described as being 'included'
rather than 'inherited'.) So how does this exonerate the OO pillar of
inheritance?

However, if I am not mistaken, mixins are effectively a subtyping mechanism. I
thought we needed to remove the subtyping to make inheritance work?

