Well, I read MSDN articles about the COM programming. Yeah.. We know the history.
MS copied the idea from the OpenDoc. Well.. anyway at that time, component software development idea was very popular and many companies tried to achieve the goal.
However, I found one interesting fact. It is true that the NeXT ignited the component programming model. The language they used was the Objective-C. It is a superset of the C. By adding only some keywords and syntax, the author of the language successfuly added OOP to the C. Well, it doesn’t have the template, operator overloading, blah blah. But it serves the OOP paradigm quite well. Actually by using “Category”, “Protocol”, “Pose”, pursuing the OOP was simplified.
OK.. Why do I mention the Objective-C although I started with the COM?
Umm… COM programming is quite complicated, and its concept is quite hard for beginners. However, after understanding the Objective-C’s Category, it became clear what MS guys wanted to mean by the COM’s multiple interface.
You can think of the multiple interface as the Objective-C’s category. It is a kind of horizontal expansion of classes, instead the vertical expansion of the C++, which is served by inheritance.
My question is “Why didn’t the C++ people take the Objective-C approach?”
Well.. C++ was meant to be static language, while the Objective-C was dynamic language. However nowadays, C++ has introspection, blah blah blah features with which you can do what the Objective-C can do.
Although the Objective-C was not changed for long time, and it is remained as a simple language, the C++ became very complicated…. to do the same thing in many aspects.
Isn’t it funny to look how the C++ is being evolved? Well.. here it is more about the COM. But you know what I mean….