C, unlike many modern programming languages, requires that you understand how a computer works. It's just not an appropriate language for most programmers, including many of the more vocal who comment here on HN.
If you're writing an app, or scripting together some apps, you don't need C. If you're programming a computer, you need a tool that depends on the computer to do its job, and that means you're going to have to tolerate crazy things dependent on the platform.
This is what they call a domain problem. Very few app developers are involved in the domain of programming computers. Of course, that does not leave them feeling unqualified to comment on tools and techniques of those who are, because they use computers every day.
Modern computers aren't much at all like the imaginary machine the C programming language is defined against.
The compiler's job is to wrestle what you wrote, for that imaginary machine, into machine code that will run on the real computer somebody actually owns which is quite different. This is a difficult task and it gets harder all the time.
Programmers who believe they're writing "bare metal" programs in C are delusional and are particularly likely to get a very rude awakening when they try to write concurrent software. What the machine really does is too hard for you to sensibly reason about at scale, so C provides SC for DRF and says if you do anything else (and you will) too bad your program's meaning is undefined and you lose.
I have a feeling there’s a world of software outside of your lazy reduction to “apps” vs “computers” which is a pretty nonsensical reduction in the first place.
It’s funny how much hate the Rust community gets when C programmers are just as bad at coming out of the word work to try and insult people when someone takes even the most minor shot at the language they’re so attached to (which was frankly, more or less a shot aimed at myself)
If you're writing an app, or scripting together some apps, you don't need C. If you're programming a computer, you need a tool that depends on the computer to do its job, and that means you're going to have to tolerate crazy things dependent on the platform.
This is what they call a domain problem. Very few app developers are involved in the domain of programming computers. Of course, that does not leave them feeling unqualified to comment on tools and techniques of those who are, because they use computers every day.