>
I'm curious to know how did we end up in this primarily object oriented worldHundreds of millions of lines of C and millions of C programmers.
They could, in theory, smoothly migrate into the world of object orientation using C++.
C++ has, however, held as a constant design principle that if you don't use the new stuff, it's still C. Put another way: feed your C program to a C++ compiler and it behaves the same way.
That design back pressure makes late binding and message-passing a la Smalltalk a non-starter.
Objective C solved this in a very different way: by making the Smalltalk-y additions syntactically orthogonal to the existing C bits. That's why you send messages [inside brackets].
C++ was backed by AT&T. Objective C was backed by some whacky tech company from California founded by that loony guy they kicked out of Apple when the grownups took over.
Not to mention that Smalltalk had serious corporate backers too (eg IBM), so what room was there for Objective C?
Eventually Java came along with the mission to rescue the world from the explosive mixture of C++ and median programmers. It took a page from the C++ book and aimed to be easy to switch. Similar model, similar basic concept of operation. And that's largely been that.