Systems Programming Language vs. Application Programming Language
I keep reiterating that C (and Rust) are Systems Programming Languages, to be used for developing operating systems, device drivers and time critical applications (such as audio / video encoding and decoding). But somehow we ended up using it an Application Programming Language, most likely because some developers are stubbornly insisting on a programming language which produces the fastest code.
The makers of C have called it "high level assembly language" and that's what it basically is. With all the warts and dimples that go with it, like no pointer validation or bounds checking.
Even mediocre programmers can write a flawless C program of a couple hundred lines of code. But it's nigh impossible to write bug-free C code programs consisting of hundreds of thousands of lines of code. People should recognize that and switch to a language which does enable them to do so. Rust tries to solve it by adding handlebars to prevent you from making errors. Another solution would be to make a safe Application Programming Language.