This article is not signed. It is wrong. Bertrand Meyer is right. Advising to beware of a category of people is not overgeneralizing. It is good advice: beware, observe and decide for yourself in each individual case.
You can compare two language specifications, ANSI C and ANSI Common Lisp: they BOTH leave out-of-bound array accesses UNSPECIFIED.
However, Lisp programmers who write Lisp implementations all include RUN-TIME bound checking (in addition to compilation time checks when possible), in most implementations, even with the lowest safety level!
On the other hand, C programmers who write C implementations never include any run-time bound checking (and seldom include compilation time checks, and at most issue warnings, not errors). There's no notion of safety level in C.
We could also make the comparison with other languages and their programmers and implementers.
C is not a high level programming language. It's a high level assembler language, designed to program small system kernels when resources are constrained.
Nowadays, we develop system kernels with automatic proof checkers, with with resource constraints, and we should use high level programming language for applications, not horrors like C or C++.
You can compare two language specifications, ANSI C and ANSI Common Lisp: they BOTH leave out-of-bound array accesses UNSPECIFIED.
However, Lisp programmers who write Lisp implementations all include RUN-TIME bound checking (in addition to compilation time checks when possible), in most implementations, even with the lowest safety level!
On the other hand, C programmers who write C implementations never include any run-time bound checking (and seldom include compilation time checks, and at most issue warnings, not errors). There's no notion of safety level in C.
We could also make the comparison with other languages and their programmers and implementers.
C is not a high level programming language. It's a high level assembler language, designed to program small system kernels when resources are constrained.
Nowadays, we develop system kernels with automatic proof checkers, with with resource constraints, and we should use high level programming language for applications, not horrors like C or C++.