The more I read about OOP, the more I get the feeling that OOP is understood not only by everyone. Another article is an example of this .
Here you can describe the absurdity of argumentation in the above article for a long time. But in general, the entire article can be crossed out literally as follows.
With the increasing complexity of software, a need arose for isolating complexity, breaking it into pieces. Just chopping into pieces will not work, because there will be a problem connecting the parts. And then smart people came up with: let's isolate the parts so that the external part is important, and not how it is arranged inside. Those. no need to think about mechanisms, just think about contracts.
This is what is called OOP, and it was isolation of complexity that led, in a sense, to revolution, because it became possible to write much more complex programs.
Everything else is transfusion from empty to empty, including quotes from all known and respected people. The problem with OOP is that they initially thought about one thing, but then the practitioners came in and changed everything for their needs, because programs need not be written tomorrow or the day after tomorrow, but today. Better yet, yesterday.
What OOP has become today is the result of a misunderstanding of the goals of software development: the fight against complexity . It just so happened that the brain does not accommodate all aspects and parts of the system, we can only hold a small part. Therefore, the struggle with complexity is the driver and motivation for creating new paradigms. Moreover, this may be a criterion for the correct choice of the paradigm: how simple and understandable the resulting code is.
So, the main thing in programming is not the use of new-fashioned or old-fashioned practices, but the correct control of complexity in every part of the system.
 Joe Armstrong about Elixir, Erlang, FP and OOP . Here is an initial understanding of OOP, which subsequently transformed under the influence of C ++ and Java. The original OOP is now called the actor model.
 Asynchrony 3: Subjective model . From a practical point of view, how to combine OOP and the actor model, having obtained a new paradigm, including the previous ones.