No, not at all, and I probably did not make my point clearly.
OOP and Component driven development are by no means preclusive and, in fact, one could argue they arise from the same goal; to make code modular, portable and re-usable.
Chronologically speaking though, I would say that savvy component driven development (e.g. Unity) is relatively new (compared to pure OOP), at least from the view point of “what are mainstream programmers doing now”.
For instance, I do not derive from CharacterController and add my own MouseLook functionality; nor do I bother with messy multiple inheritance. I just pin components on an object (CharacterController, Mouselook, etc) until I get the desired final functionality.
Perhaps I’m showing my age to consider this a paradigm shift, and you could argue it’s just a natural and common sense use of objects, but the same was said when OOP came of age, as good procedural C programmers were already organizing their data and functions to be inherently related.
But this all comes back to make my original point more forcefully, I hope.
That Component driven development is just a quantitative addition to OOP which, was itself, an quantitative step beyond global data, sub-routines and true spaghetti code. All healthy advances but they do not represent a qualitative shift in how we get computers to think.
Nevertheless, the majority of programmers are still evolving along this imperative (procedure) line of thinking, which is a paradigm (I think) becoming increasingly stressed by larger, more complex systems serving higher and higher expectations.
It seems, to me, that we (the programming community) are beginning to dawdle around with the fundamental questions we batted around back in the 60s when there was no obvious heir apparent, and it was not decided at that time if a logic, functional or procedural language was best (or if, when).
I think the procedural approach won out because it’s the easiest to understand; i.e. anyone can bake a cake while the average person’s contact with ideas like “epistemology” are limited to “how do you KNOW she’s a witch” Monty Python sketches.
I’m just saying I think we’ve beaten this square peg into all the round holes we can afford, and older languages (mindsets) are going to come back into vogue (e.g. .NET 3.X lambda calculus support and, more to the point, F#).
My attraction to P# is that I want my game objects to infer that if “all men are mortal” and “Charles is a man”, then “Charles is mortal”.
Combine a Natural Language Parser front end with a prolog type back-end, and imagine the converstaions you could have with your NPCs.
Certainly something more engaging than “what ‘orc’” type question mining.
Charles