I'm pleased to see someone else say this. For years I read and heard how superior C++ was. I knew that I didn't understand its concepts very well so I studied and learned.
But now that I've been working primarily in C++ for a few years, I've decided the supposed superiority is a crock. The hallmark of C++ seems to be "information hiding", but for every detail you hide in C++, there are two or three new complexities that have to be mastered.
Yes, it's true that manipulating pointers in C, especially with pointers to pointers, is difficult to understand at first. But now that I understand it, I find it all very straightforward. But following those C++ lists with their long template types, especially when debugging, is very taxing.
Honestly, I was just trying to present the case against C++ as best I've seen it presented. I don't really agree that language complexity is a good reason to state that one language is worse than another, but I can understand how others can come to that conclusion.
For me, it is all about realizing that shitty code can be written in any language, so instead of worrying about the WTFs of a language, you should worry about the feature set that it offers.
Take C# vs Java as an example. In a lot of ways, C# is a more complex language than java. In fact, it is almost a superset of Java. Yet, when asked "Which is better, C# or Java" (and ignoring anti-ms/portability arguments for now) C# almost always gets the "Yes, it is a nicer language" acknowledgement. Yet for some reason, C++ doesn't get the same sort of consideration.
If I had my choice, it would be C++ over C. Objects are nice. Destructors are nice. Operator overloading is nice. Namespacing is nice. Templates are nice. The WTFs come in when these systems are abused. However, is that any worse than someone embedding a whole bunch of crazy logic in a C macro? I don't think so. I don't think that "People will do bad things with this feature" is a good reason to exclude a feature. *cough*java*cough*
But even if his points are valid (and I'm too lazy to go dig for them), application and OS kernel development are apples and oranges.
For application development, time to complete the work and ability to maintain the code are usually the most important points, and well-written C++ has advantages for both over C.
Meh, his points went more like "C++ is bad because all the C++ developers I know are bad"
C++ is a horrible language. It's made more horrible by the fact that a lot
of substandard programmers use it, to the point where it's much much
easier to generate total and utter crap with it. Quite frankly, even if
the choice of C were to do *nothing* but keep the C++ programmers out,
that in itself would be a huge reason to use C.
He goes on to bemoan how inefficient C++ is (yeah...) and also how unportable the STL and BOOST are (yeah...).
Honestly, there isn't a real reason not to use C++ for kernel development, other than the fact that linus hates the language.