dreadlorde, relaying quotes does not advance an argument! You even seem to favour the worst, the sassy, superficial jingoistic quotes that don't really convey any actual idea or criticism. They aren't even taken out of context: they were written without context in the first place! (Except for the time they were written, which for the majority of these quotes is decades ago...)
That said... I agree with your sentiment, of course. I don't think a game engine is the best application of OOP. I myself stick with C for that. For game code (entity implementations), or especially GUI coding, OOP is a plausible choice, but C++ is insufficient. Actually, especially when it comes to game code, OOP with its monolithic inheritance scheme (or convoluted multiple inheritance scheme) is archaic and limiting. I'm trying to figure out what would work better on that front...
To this day I haven't found a good use for C++. The real article you linked to is right when it talks about the necessity of "subsetting" C++'s features. Some of C++'s features which aren't related to OOP could be useful (e.g. a limited subset of templates).
I'm not saying C (C89) is the best language to use. It certainly is archaic. (For the record, I avoid even checking out C99 for poorly-thought-out reasons.) But I supposed I'm arguing for paradigms here, not individual languages. For the engine code, you want a low-level language with little or no data hiding, that compiles to efficient code. And for the gamecode, you want a high-level language that is simple and easy to understand, and isn't multi-paradigm, doesn't have features you don't need. For both, you (well, I) want a static-typed language with as many errors caught at compile-time as possible, ruling out the huge wave of dynamic languages in the last decade...
And C++ doesn't even come to mind when thinking about paradigms. It somehow exists outside of paradigms (splayed awkwardly and diagonally across the table of paradigms). In games programming, I don't think it has any place at all, it should drop off the face of the earth (though I can't speak for other types of applications), leaving something like C on the one hand and some sophisticated high-level language on the other.
mh wrote:I actually believe that the stronger typing, lack of default-int, requirement to declare function prototypes (and requirement for them to actually match the real function) are all factors in it's favour and which lead to better and more robust code.
These in particular are not so much strengths of C++ as they are deficiencies of C (because of backwards compatibility)... But when it comes to this I do like to periodically compile my C code as C++ code to see if any of these sort of errors will be caught.
But a real forward-looking language dispenses with function prototypes altogether. Header files in C++, whose only benefit is that they can be used as reference or documentation, are something of an atrocity, since all the private things (which in C would be static and only in the source file) must be in the header file, and because things have to be defined twice. A modern language would sever this ugly requirement, and if you wanted the "documentation", you would use a fancy IDE or, for the more primitive, a tool like Doxygen.
F. A. Špork, an enlightened nobleman and a great patron of art, had a stately Baroque spa complex built on the banks of the River Labe.