@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 Oh, OK.
One might characterise C as "BCPL, but with the ability to address bytes not just words". From which point of view a microcontroller (where you're counting every single byte of ROM) is indeed a valid use case π€£