Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!utgpu!water!watmath!clyde!cbatt!ihnp4!inuxc!pur-ee!uiucdcs!uxc.cso.uiuc.edu!seaney From: seaney@uxc.cso.uiuc.edu.UUCP Newsgroups: comp.lang.c Subject: Re: Religion vs. Reality (no smiling a Message-ID: <175400002@uxc.cso.uiuc.edu> Date: Fri, 1-May-87 13:37:00 EDT Article-I.D.: uxc.175400002 Posted: Fri May 1 13:37:00 1987 Date-Received: Thu, 7-May-87 00:40:41 EDT References: <33@thirdi.UUCP> Lines: 90 Nf-ID: #R:thirdi.UUCP:33:uxc.cso.uiuc.edu:175400002:000:4027 Nf-From: uxc.cso.uiuc.edu!seaney May 1 12:37:00 1987 /* Written 4:26 pm Apr 28, 1987 by peter@thirdi.UUCP in uxc.cso.uiuc.edu:comp.lang.c */ /* ---------- "Religion vs. Reality (no smiling a" ---------- */ (See my response to Chris Torek regarding my use of the word "require" with regard to #define NULL ((char *)0). ) In article <17498@sun.uucp> guy%gorodish@Sun.COM (Guy Harris) writes: >>In article <31@thirdi.UUCP> peter@thirdi.UUCP (Peter Rowell) writes: > .... >> This method has stood us in good stead (except when we have foolishly >> violated it) in porting a source-level debugger to over 70 different >> systems - not all of which were done by followers of the True Faith. > >Umm, err, it's not a matter of "faith", so the use of terms connoting >religion is inappropriate and somewhat irritating here. K&R is quite >clear on this matter; if somebody doesn't "believe in" K&R (or ANSI >C), they're perfectly welcome to implement some language that does >things otherwise, they're just not welcome to call it C. > Lighten up, Guy. You're taking things *way* too seriously. The quip about the "True Faith" is/was aimed at people who seem to feel that all systems/compilers which deviate from their personal concept of "correctness" should be Burned at the Stake. Whether you like it or not, there are an amazing number of products out there that are not perfect (Did Sun fix the compiler bug I reported 2 years ago? What about the ptrace bug that crashed the kernel?). If you are a software developer and you wish to market your software as broadly as possible, sooner or later you will run into *at least* one system that is the result of something less that the Immaculate Port. When you encounter such a system, you can do one of three things: 1. You can request/plead/scream/etc. at/with the machine vendor to fix it. If you wait for this to happen, you probably will be very old when the fix is available. You will almost certainly be "late to market". 2. You can decide that you want nothing to do with these cretins. If the company has a small installed base which doesn't appear to be growing, maybe this is the best decision. 3. You can change your coding technique to include this new "definition" of How Things Work. Having done this, you can then get on with the business of making money, which I find more interesting than the hobby of Making People Wrong. By the way, #3 is what we did with the Sun 2 compiler bug. When I did a re-port a year later, Sun's in-house porting machine, which was a Sun 3 and which I would expect to be running the Latest and Greatest, still exhibited exactly the same bug. After doing a large number of ports, you will end up with a Working Definition of C/UNIX/whatever that is based on empirical evidence, instead of on the Bible (read SVID, K&R, ANSI C, man pages, etc.). Harris goes on to say: > >A number of the participants in this discussion seem to be of the >opinion that there is no objective standard against which the >correctness of various implementations or opinions about the language >can be judged. This is simply not true. > The existence of an objective standard and the acknowledgement of that standard by way of validated implementations are two entirely different things. The real world is composed mainly of implementations that are "great" if they are a near-miss of some standard. Many systems do not get as close as a near-miss. For example, I know of 6 different implementations of "standard" 4.2 symbols and 12(!) different "standard" implementations of AT&T's Common Object File Format. I know of compilers which don't handle "x = y = z;" correctly, loaders and os ports that don't handle the "-N" flag correctly, and of a couple dozen systems that have "standard" library routines that either don't do what other compnaines are doing OR don't do what their own man pages say. The pragmatic developer dreams of standards, but lives with reality. .... and that's The Truth. ;-) /* End of text from uxc.cso.uiuc.edu:comp.lang.c */