Multilevel breaks are as bad as goto with regard to structure violation.
Amen. My memory of the argument at the time was one of pick your poison. Each language has trade-offs and it depends on what you value. C was considered "dirty" by many CS types in the day compared to languages like Pascal, Simula67, Algol-X.
I've always said the key was what was left out of the language, not what was put in. Dennis offers a few important pieces of wisdom here:
- "When I read commentary about suggestions for where C should go, I often think back and give thanks that it wasn't developed under the advice of a worldwide crowd."
- "A language that doesn't have everything is actually easier to program in than some that do."
- "C is quirky, flawed, and an enormous success."
Arnold's observation about trying to be small is reasonable, although contemporaries like BLISS did have support. So the comparison should really be to BCPL, PL/360, BLISS, et al. for features/size [although Wulf cheated, the BLISS-11 compiler was not self-hosting and needed a PDP-10 to run it].