From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,63360011f8addace X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2002-07-19 17:37:28 PST Newsgroups: comp.lang.ada Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!logbridge.uoregon.edu!uunet!sea.uu.net!ash.uu.net!world!news From: Robert A Duff Subject: Re: gnat: time-slicing Sender: news@world.std.com (Mr Usenet Himself) Message-ID: Date: Sat, 20 Jul 2002 00:36:05 GMT References: NNTP-Posting-Host: shell01.theworld.com Organization: The World Public Access UNIX, Brookline, MA X-Newsreader: Gnus v5.7/Emacs 20.7 Xref: archiver1.google.com comp.lang.ada:27258 Date: 2002-07-20T00:36:05+00:00 List-Id: Keith Thompson writes: > Robert A Duff writes: > [...] > > Note that "erroneous" is an Ada technical term. It doesn't mean exactly > > the same thing as it does in plain English (unfortunately). Look it up > > in the RM, if you like. > > That's one thing the C standard got right and the Ada standard got > wrong. I very much agree. However, many C programmers don't understand the concept, either. Many programmers (in *any* language) think that the language is defined by what the compiler at hand happens to do. Experimental programming. The best bet is to minimize the number of such cases in the language, because we know that many programmers don't understand the concept, and more importantly, even those who *do* understand can get it wrong by accident. >...C's term for the same thing is "undefined behavior", which > means pretty much what is says in plain English; the standard defines > it more precisely, but the definition doesn't conflict with common > usage. Ada's term "erroneous" is misleading because the word already > has a perfectly good meaning that's much less specific than the > meaning the Ada standard assigns to it. Agreed. > On the other hand, of course, there's a lot more "undefined behavior" > in C than there is "erroneous execution" in Ada. Right. I think there's still too much of it in Ada, but Ada got it mostly right. Actually, I think there are so few cases, that you don't need to refer to a technical term defined off in some faraway place -- you could include a lecture (two or three sentences) inline at each use that explains how very evil indeed it is to rely on undefined behavior. This isn't the only terminological mistake in Ada. For example, if you want to use a package, you don't use a use clause -- you use a with clause. And the RM says "mentioned in a with clause", which is too much of a mouthful, so people end up using "with" as a verb, which is an abominable abuse of the English language. - Bob