Following your argumentation we should drop assembler too Either you take care about those issues yourself or you choose some language doing that for you. But the compiler of a programming language doing all the sanity checking can fail too. And all programs compiled with that compiler will have the same security issue. We've seen too much examples of that so far. My question would be, why are so many programmers doing the same stupid mistakes all over again? Why don't colleges/universities teach students how to write secure code? Why do many coders think that the right language would fix all problems?
If assembly was the only way to write software for the majority of microcontrollers, I would be making the exact same argument.
Assembly isn't the only way to write for micros, so I'm not saying it should be avoided.
I'm saying that being happy with C as the only non-assembly language one can use in most cases is not defensible. I see the surge of interest in microcontroller programming lately, thanks to the Arduino and this "Internet of things" and I am happy. I think of all those new C devs making all those same, stupid mistakes in all those devices and I am not happy.
We should be further along than this. We have languages that don't require the use of pointers, that compile to fast machine code, we just choose not to use them on micros. Why?
If there is one thing I have noticed about C developers, it is that they truly believe that C is the alpha and the omega in terms of true development. There is no room for anything else, and other languages are all toys.
I'm saying that other languages have real benefits and that C is a pile of shit and should he avoided.