Your article is somewhat misleading. There are two issues here. First is that there are two different interpretations of OOP:
- OOP as the application of abstract data types — this is most commonly represented by C++ (Bjarne Stroustrup) and Java
- OOP as a network of “virtual computers” and the application of message passing and late binding — this is best represented by Smalltalk (Alan Kay)
C++ and Java have, indeed, been problematic for decades. Focussing on abstract data types is simply the wrong way to do OOP.
Consequently, this has led to the second issue: that OOP has been terribly abused and misused due to poor education and training. When OOP is done the right way, i.e., via Smalltalk, it can be beautifully elegant and powerful.