4 ms·
Meyer argues that a language shouldn't have a separate block statement. Instead block structure should be integrated in the control flow statements. That would
by pdw 13y ago
Meyer argues that a language shouldn't have a separate block statement. Instead block structure should be integrated in the control flow statements. That would result in this code: (I'm keeping your indentation style)
if error_of_fifth_kind
then goto fail end
then goto fail end
Which is simply a syntax error.
- brianberns 13y agoInteresting. This works because there's no explicit "begin" to go with the "end". I would normally consider this kind of asymmetry to be a language design flaw, but I suppose it does address this particular problem. Of course, I think you could still end up with this pretty easily: if error_of_fifth_kind then goto fail end goto fail if error of sixth_kind then goto fail end
- pdw 13y agoWell, Meyer doesn't let any chance to bash C/C++ go unused :) But a good syntax should minimize the chance that an accidental insertion/transposition/deletion of a character/word/line results in a valid program. [A dramatic example of bad syntax comes from a FORTRAN, where a loop between the current line and the line with label 10 looks like this: DO 10 I=1,100 and this code: DO 10 I=1.100 declares a variable named "DO10I". Hopefully your compiler will warn that label 10 is unused.]
- wernercd 13y agoOr similarly: if error_5 { goto fail; } /* line deleted here */ goto fail; } if error_7 { goto fail; } Many ways to skin the same cat, but it boils down to following good practices that emphasize errors like this (presumably removing an error condition and leaving the goto).