As a computer scientist with more than 35 years of Smalltalk, I think I have some inside into the problem. One day my boss came into my office holding a copy of Business Week whose cover featured Object-Oriented programming. He said it sounds like a good idea. I replied, “it is! That is why we switched to Smalltalk 2 years ago.”
In response to the Business Week article, many companies tried what they thought was O-O. But Smalltalk costs $3500/seat and C++ costs $350/seat. They went with C++, and their coders continued to code in C, feeding it into a C++ compiler. They never learned O-O programming so their companies never saw any O-O improvement.
Chubb and Son Insurance did it right. They bought Smalltalk (VisualAge from IBM) and hired a mentor for each team to help them learn O-O programming.
Spint ION program initially started in Smalltalk but switched to C++. I asked a manager why, and was told that was because they could not find any Smalltalk programmers. I told her she was looking at one with 14 years of experience in 5 different dialogs.
I believe that they best way to create an application is to use the highest level development language (The 1980 Smalltalk IDE still outdoes modern IDS - by a parsec). Once you get a working program, then you cant deplay it in a different language such at C, Python (a dialect of C), APL, etc… The deployment process also helps find design flaws in the original design.
The essence of Object-Oriented programming is abstraction. Some people have perfect pitch, some have photographic memories, some have the ability to make abstractions. Sadly, most coders do not have the ability to abstract. When I hear a phrase like “Abstract Abstraction” or “Concrete Abstraction” I know that the speaker does not know what he is talking about.
I believe the lack of coders who can make abstractions is why O-O failed.
Functional Programming is itself an abstraction. As is all of Mathematics.
Most coders will struggle with it, trying to change it into Basic or JavaScript.
They need to change their basic paradigms (those filters between what we see and what we preceve).