Yet, another reason is that people pushing "True OO" or "Pure OO" typically do so with languages and systems that impose enormous overheads for simple tasks compared to C and C++ code.
The conclusions that I drew (in 1980 or so) were that a general-purpose programming language must support multiple paradigms and that each paradigm must be supported well and with close-to-optimal runtime and space efficiencies. That said, I find that adoption of new ideas is seriously slowed by conservatism supported with myths of complexity and overheads.
Another problem is that many people, including many programmers, educators, and managers, are simply unwilling to face the complexities of software development. They dream of "silver bullets" and reject effective ideas because they are not perfect and not trivial to use by novices. This leads to real work being done using unnecessarily old languages, tools, and techniques while scarce resources are being squandered on a succession of fads. This underestimation of the problems also leads to every new "silver bullet" being too simplistic to address the rigors of real-world software development. And once something new has adapted to reality, it becomes vulnerable to criticism -- fair and not -- of complexity from the followers of the next "silver bullet."
To get back on a semitechnical note: I think that any language that aspires to mainstream use must provide a broad base for a variety of techniques -- including object-oriented programming (class hierarchies) and generic programming (parameterized types and algorithms). In particular, it must provide good facilities for composing programs out of separate parts (possibly writing in several different languages). I also think that exceptions are necessary for managing the complexity of error handling. A language that lacks such facilities forces its users to laboriously simulate them.
LinuxWorld.com: Which important programming trends are we about to see in the near future? What is the role of functional programming, rule-based programming, generic programming, and other programming paradigms in tomorrow's software world? Will any of these become the mainstream or are they mere academic trifles?
Bjarne Stroustrup: I'm not good at predicting the future, so I won't try, beyond pointing out that the future is usually more like yesterday than we like to believe. Note that COBOL, FORTRAN, and C still are major languages. Generic programming is real (mainstream) and you can see how the Standard Template Library (STL) borrows techniques from the functional programming community and uses them elegantly and efficiently in the context of C++.