4 ms·
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
by threepipeproblm 10y ago
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?