C has OOP ideas in it. A C struct is surely the first C OOP concept. It is what the C++ class is based off of. A class is a struct that allows functions with user-defined visibility. C actually allows functions in a struct too but they are all essentially public and have to be function pointers iirc which isn't exactly elegant to some.
As for why C++ is still a debated topic I think it is because C++ doesn't have any standard for matrices. C++ strictly speaking in C++03 implementations, not compilers with future-looking features of C++0x, have restrictive unions.
C++0x is essentially C++ and some Boost or Boost Like libraries and some other programmer wants like enhanced polymorphism, hash tables and unrestricted unions.
Though I think if you asked any C developer, especially from the Linux Kernel Dev teams they would ask you why anyone would bother especially since the embedded programming is all the rage. I guess if you are a iOS developer you'll already be on Obj.C and all its pro's and cons. But for the rest of us, a lot of times you can write a program in C even though people would swear it would have been better to write in C++ because of classes and STL. Though they couldn't answer you why that is... it is just some C++ developer assumption.
And there lies the problem... C++ has a lot of developers who don't know why they use C++ over C. It was just their CS instructors banged OOP down their throats and that C++ is faster than Java. Well that may or may not be true, depending on what you are trying to do. Especially if the compiler has to figure out how to express the return value type of some Template where as another language, VM or not, had a native data structure for that specific type.
As for why C++ is still a debated topic I think it is because C++ doesn't have any standard for matrices. C++ strictly speaking in C++03 implementations, not compilers with future-looking features of C++0x, have restrictive unions.
C++0x is essentially C++ and some Boost or Boost Like libraries and some other programmer wants like enhanced polymorphism, hash tables and unrestricted unions.
Though I think if you asked any C developer, especially from the Linux Kernel Dev teams they would ask you why anyone would bother especially since the embedded programming is all the rage. I guess if you are a iOS developer you'll already be on Obj.C and all its pro's and cons. But for the rest of us, a lot of times you can write a program in C even though people would swear it would have been better to write in C++ because of classes and STL. Though they couldn't answer you why that is... it is just some C++ developer assumption.
And there lies the problem... C++ has a lot of developers who don't know why they use C++ over C. It was just their CS instructors banged OOP down their throats and that C++ is faster than Java. Well that may or may not be true, depending on what you are trying to do. Especially if the compiler has to figure out how to express the return value type of some Template where as another language, VM or not, had a native data structure for that specific type.