From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 1128 invoked from network); 1 Dec 2020 20:20:42 -0000 Received: from minnie.tuhs.org (45.79.103.53) by inbox.vuxu.org with ESMTPUTF8; 1 Dec 2020 20:20:42 -0000 Received: by minnie.tuhs.org (Postfix, from userid 112) id 6EE469B61C; Wed, 2 Dec 2020 06:20:39 +1000 (AEST) Received: from minnie.tuhs.org (localhost [127.0.0.1]) by minnie.tuhs.org (Postfix) with ESMTP id 4957394904; Wed, 2 Dec 2020 06:20:20 +1000 (AEST) Received: by minnie.tuhs.org (Postfix, from userid 112) id E5B7594904; Wed, 2 Dec 2020 06:20:16 +1000 (AEST) Received: from sdaoden.eu (sdaoden.eu [217.144.132.164]) by minnie.tuhs.org (Postfix) with ESMTPS id 0BCAE94843 for ; Wed, 2 Dec 2020 06:20:16 +1000 (AEST) Received: by sdaoden.eu (Postfix, from userid 1000) id CEA4816057; Tue, 1 Dec 2020 21:20:13 +0100 (CET) Date: Tue, 01 Dec 2020 21:20:12 +0100 From: Steffen Nurpmeso To: arnold@skeeve.com Message-ID: <20201201202012.-40Ur%steffen@sdaoden.eu> In-Reply-To: <202012011639.0B1GdjcD031722@freefriends.org> References: <15511090.6330.1606835354160.JavaMail.root@zimbraanteil> <202012011538.0B1FcLi5023858@freefriends.org> <202012011639.0B1GdjcD031722@freefriends.org> Mail-Followup-To: arnold@skeeve.com, imp@bsdimp.com, tuhs@minnie.tuhs.org User-Agent: s-nail v14.9.19-169-g6d89650e OpenPGP: id=EE19E1C1F2F7054F8D3954D8308964B51883A0DD; url=https://ftp.sdaoden.eu/steffen.asc; preference=signencrypt BlahBlahBlah: Any stupid boy can crush a beetle. But all the professors in the world can make no bugs. Subject: Re: [TUHS] The UNIX Command Language (1976) X-BeenThere: tuhs@minnie.tuhs.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: The Unix Heritage Society mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: tuhs@minnie.tuhs.org Errors-To: tuhs-bounces@minnie.tuhs.org Sender: "TUHS" arnold@skeeve.com wrote in <202012011639.0B1GdjcD031722@freefriends.org>: |> On Tue, Dec 1, 2020 at 8:39 AM 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 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. Bah, and perl could and obsoleted it, or at least jumping into blocks (not crossing initializers)! You now write code like my $ogoditisanewperl = 0; if(defined($nl = $self->begin_line)){ $self->begin_line(undef); $self->seen_endl(1); $ogoditisanewperl = 1 #goto jumpin; } while($ogoditisanewperl || ($nl = readline $self->infh)){ if(!$ogoditisanewperl){ ++${$self->__lineno}; $self->seen_endl($nl =~ s/(.*?)\s+$/$1/) } $ogoditisanewperl = 0; #jumpin: or even have to work with closures or whatever, or the worst, code duplication. |This is something that newer languages (C#, Java, Go, ...) could have \ |picked |up but didn't, which I think is too bad. Never without my goto:, and if it is only to break to error handling and/or staged destruction of local variables after initialization failures. Traumatic school impression, finding yourself locked in some PASCAL if condition, and no way to go to. --steffen | |Der Kragenbaer, The moon bear, |der holt sich munter he cheerfully and one by one |einen nach dem anderen runter wa.ks himself off |(By Robert Gernhardt)