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=-0.8 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 32196 invoked from network); 12 Dec 2020 20:07:57 -0000 Received: from minnie.tuhs.org (45.79.103.53) by inbox.vuxu.org with ESMTPUTF8; 12 Dec 2020 20:07:57 -0000 Received: by minnie.tuhs.org (Postfix, from userid 112) id 7DEF59B94F; Sun, 13 Dec 2020 06:07:53 +1000 (AEST) Received: from minnie.tuhs.org (localhost [127.0.0.1]) by minnie.tuhs.org (Postfix) with ESMTP id 76F3D93D37; Sun, 13 Dec 2020 06:07:32 +1000 (AEST) Authentication-Results: minnie.tuhs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=yaccman.com header.i=@yaccman.com header.b="VNq6afzK"; dkim-atps=neutral Received: by minnie.tuhs.org (Postfix, from userid 112) id D05E193D37; Sun, 13 Dec 2020 06:07:29 +1000 (AEST) X-Greylist: delayed 601 seconds by postgrey-1.36 at minnie.tuhs.org; Sun, 13 Dec 2020 06:07:29 AEST Received: from donkey.elm.relay.mailchannels.net (donkey.elm.relay.mailchannels.net [23.83.212.49]) by minnie.tuhs.org (Postfix) with ESMTPS id 1068D93D29 for ; Sun, 13 Dec 2020 06:07:28 +1000 (AEST) X-Sender-Id: dreamhost|x-authsender|scj@yaccman.com Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id 9D2E618203E; Sat, 12 Dec 2020 19:50:52 +0000 (UTC) Received: from pdx1-sub0-mail-a13.g.dreamhost.com (100-100-138-63.trex.outbound.svc.cluster.local [100.100.138.63]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id CE8BC18140F; Sat, 12 Dec 2020 19:50:51 +0000 (UTC) X-Sender-Id: dreamhost|x-authsender|scj@yaccman.com Received: from pdx1-sub0-mail-a13.g.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384) by 0.0.0.0:2500 (trex/5.18.11); Sat, 12 Dec 2020 19:50:52 +0000 X-MC-Relay: Neutral X-MailChannels-SenderId: dreamhost|x-authsender|scj@yaccman.com X-MailChannels-Auth-Id: dreamhost X-Eight-Attack: 5824743d74f3e212_1607802652441_1235724637 X-MC-Loop-Signature: 1607802652441:45003199 X-MC-Ingress-Time: 1607802652441 Received: from pdx1-sub0-mail-a13.g.dreamhost.com (localhost [127.0.0.1]) by pdx1-sub0-mail-a13.g.dreamhost.com (Postfix) with ESMTP id 7F5C383ADB; Sat, 12 Dec 2020 11:50:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=yaccman.com; h= mime-version:date:from:to:cc:subject:in-reply-to:references :message-id:content-type:content-transfer-encoding; s= yaccman.com; bh=0D8M8Yov5fMpmYo24XiYmRekT9k=; b=VNq6afzK7n1Qpt7/ JWsYx7TqDDUo2m3cbV3UECs/agebF8QUeDPOZ4kuKBsJroKA/oD1/sglfd2N5G4e UsmtNlSIBWBl6uPlSUrNasmBLDHnOrVVE4N12CINs2Gz/U9sIawnIy4nZffPkNII gDjNldrwCclSz12r8xXOjUBRRk8= Received: from webmail.dreamhost.com (ip-66-33-200-4.dreamhost.com [66.33.200.4]) (Authenticated sender: scj@yaccman.com) by pdx1-sub0-mail-a13.g.dreamhost.com (Postfix) with ESMTPA id CC4348163F; Sat, 12 Dec 2020 11:50:50 -0800 (PST) MIME-Version: 1.0 Date: Sat, 12 Dec 2020 11:50:50 -0800 X-DH-BACKEND: pdx1-sub0-mail-a13 From: scj@yaccman.com To: arnold@skeeve.com In-Reply-To: <202012011639.0B1GdjcD031722@freefriends.org> References: <15511090.6330.1606835354160.JavaMail.root@zimbraanteil> <202012011538.0B1FcLi5023858@freefriends.org> <202012011639.0B1GdjcD031722@freefriends.org> User-Agent: DreamHost Webmail/1.4.1 Message-ID: <5fde7febb4ac642817c1e612514ffd8d@yaccman.com> X-Sender: scj@yaccman.com Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit 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" When I wrote yacc, my first thought was to use goto's when implementing the finite state machine that is the heart of the parser. That's how FSM's work! I got the code written, but the C compiler complained and wouldn't compile. It turned out that, while goto was implemented in C, you could only have 10 of them! So I had to use a switch statement. I also recently came upon one of my first C programs -- I wrote a "go fish" game for my son as a practice in using the language. Reading the code was most instructive: 1. I had used FOUR gotos! I can't remember the last time I wrote a goto... 2. The program had a bug -- char being used as an int. Gave an advantage to the player. 3. The game was surprisingly hard to beat. I had to add a "dumb me down" flag because my kids never won. I think the game was distributed in some of the early releases. At one point, at a conference, the speaker accused the game of cheating! The game was just very good at remembering that if the player had asked it for a 6, and then it drew a 6 later, it would ask the player for 6 again. On 2020-12-01 08:39, arnold@skeeve.com wrote: >> 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.