@gilesgoat
#1 reason: very weak typing without runtime checking
C++ is worse than C! By being an almost-superset of C, it has all of the deficiencies of C, and adds many new ones of its own!
I will, however, admit that modern C++ does make it more practical to avoid the C pitfalls. Unfortunately it can't actually prevent them. The onus is in the programmer to know what to avoid. That's a crock.
@gilesgoat
C is a good language for a very limited problem domain. The problem is that it gets used for nearly everything, and mostly far outside that limited domain.
C combines some of the power of assembly language with almost all of the danger of assembly language.
@brouhaha @gilesgoat The customer or employer always gets what they want.
Unless it's FORTRAN, which I removed from my CV so that agents would stop phoning me about FORTRAN gigs, or Perl, which I always make clear at interview time that I will absolutely refuse to attempt to read, let alone write.
@shelldozer @brouhaha @gilesgoat I follow the Bellman's "what I tell you three times is true".
If an employer/customer asks me to do something stupid I tell them it's stupid. If they say do it anyway I tell them it's stupid again. If they ask a third time then I shut up and do it (unless to do so would break any of the codes of conduct I'm signed up to). They may have good business or political reasons to do something that doesn't make sense technically.