[TUHS] The UNIX Command Language (1976)

arnold at skeeve.com arnold at skeeve.com
Wed Dec 2 02:39:45 AEST 2020

> On Tue, Dec 1, 2020 at 8:39 AM <arnold at skeeve.com> wrote:
> > It was recognized that goto was not necessary if one had proper control
> > structures in a language (if/else, while), and that code with no (or
> > minimal) gotos was easier to read and understand.

Warner Losh <imp at bsdimp.com> wrote:
> This is true for simple flow control. However, when you had to break out of
> multiple levels, or continue not the inner loop, but the middle loop, the
> use of extra booleans sure made the code less understandable than a 'goto'
> a label that stood in for that purpose... This was something that wasn't
> well understood by language designers, and even today C and C++ neither
> have good flow control beyond the basics. Even though both break and
> continue could take an optional count without breaking old code....

Quite true. Modern Bourne shells let you supply a number to break and
continue to specify how many loops to break.  Ada, or maybe it was one of
the Modula-X languages, let you put a label on a loop so that you could
say `continue outer' or `break outer' and not need the booleans.

This is something that newer languages (C#, Java, Go, ...) could have picked
up but didn't, which I think is too bad.


More information about the TUHS mailing list