@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 π€£
@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.
@brouhaha @gilesgoat This one was talking to custom hardware - some one-line-of-pixels-at-a-time machine vision device and some stepping motors - in a machine whose job was to quality control microfilm of football pools coupons.
The idea was the photograph all the coupons before the matches were played to guard against people altering coupons once the results were known. As with any paper handling system, particularly one which had to read vast numbers of folded or scrunched up forms in a very short time, the photography process wasn't entirely reliable. The job of this machine was to spot forms or batches that the machine had screwed up or torn and that needed separate handling.
Late 1970s.