Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!burl!ulysses!bellcore!decvax!decwrl!glacier!oliveb!hplabs!motsj1!motbos!cdx39!cdx27!jc From: jc@cdx27.UUCP Newsgroups: net.arch,net.micro.68k Subject: Re: Re: 68k dbcc Message-ID: <133@cdx27.UUCP> Date: Mon, 28-Apr-86 10:35:16 EDT Article-I.D.: cdx27.133 Posted: Mon Apr 28 10:35:16 1986 Date-Received: Sat, 3-May-86 19:40:51 EDT References: <1511@decwrl.DEC.COM> <5100028@ccvaxa> Lines: 52 Xref: watmath net.arch:3196 net.micro.68k:1654 [This is a test to see if the f- command works on our newly-installed usenet site.] > > The lesson here is don't ever say "Nobody will ever try X" with an instruction > > set. > > I suspect the "minimize the number of architects" principle that Brooks > mentions in "The Mythical Man Month" is actually a symptom of this > approach. When you have one architect (or a small number of them), > they are somewhat forced to design axiomatically, simply in order to > reduce the complexity of the design. True, but even single-architect designs often show the same problems. There's nothing that ensures that a single designer won't fall for the "Nobody will every try X" fallacy. And even if the designer understands, there's nothing to prevent implementations to fall short, especially when porting to a new machine by people who barely understand the innards of what they're porting. A nice example that bit me recently was a program on SYS/V that went crazy, eating up cycles but never doing anything. It looked like the traditional infinite loop, but I could show "logically" that it wasn't possible, since there was output generated by even the innermost loops. The problems turned out to be a call of sleep(n), where n turned out to be zero in a few cases. It doesn't work right. You have to say if (n > 0) sleep(n); and note the "> 0"; it'd better be there! Just try getting a bug like this fixed, and you'll appreciate what can be done to you by low-level coders. "That's silly, nobody with any sense would do a sleep(0)." Well, maybe I don't have much sense, but I understand why it's better for the system to do sleep(0) correctly than to clutter up thousands of programs with "if (n > 0)" that is there just to get around a bug in a system call. Next they're going to make an add instruction that fails when either operand is zero, because "It's silly to waste time adding zero to a number." [If you can read this, our readnews' "f-" command works. If there is nothing after this line, the .signature feature has failed.] -- John Chambers /cthulhu\ / fps1 \ / fps2 \ /root ...!{ inmet }!cdx39!{ jc \ mot / \uucp \ ucadmus / \larry /