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.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 10a146,a03ae7f4e53958e1 X-Google-Attributes: gid10a146,public X-Google-Thread: 1014db,a03ae7f4e53958e1 X-Google-Attributes: gid1014db,public X-Google-Thread: 103376,8775b19e3c68a5dc X-Google-Attributes: gid103376,public X-Google-Thread: 1094ba,a03ae7f4e53958e1 X-Google-Attributes: gid1094ba,public X-Google-Thread: 114809,a03ae7f4e53958e1 X-Google-Attributes: gid114809,public X-Google-Thread: fa0ae,a03ae7f4e53958e1 X-Google-Attributes: gidfa0ae,public X-Google-Thread: fac41,a03ae7f4e53958e1 X-Google-Attributes: gidfac41,public X-Google-Thread: 109fba,a03ae7f4e53958e1 X-Google-Attributes: gid109fba,public From: dewar@merv.cs.nyu.edu (Robert Dewar) Subject: Re: Which language pays most? Smalltalk, not C++ nor Java. Date: 1997/12/27 Message-ID: #1/1 X-Deja-AN: 310678348 References: <199712121931.LAA25389@sirius.infonex.com> <67iipp$ktj$1@darla.visi.com> <882756127snz@genesis.demon.co.uk> <34A14C27.57C0@min.net> <67rjb3$pfb$1@brie.direct.ca> <34A50CAA.54AA@netup.cl> X-Complaints-To: usenet@news.nyu.edu X-Trace: news.nyu.edu 883284591 4702 (None) 128.122.140.58 Organization: New York University Newsgroups: comp.lang.fortran,comp.lang.c,comp.lang.c++,comp.lang.eiffel,comp.lang.java.programmer,comp.lang.smalltalk,comp.lang.perl.misc,comp.lang.ada,comp.edu Date: 1997-12-27T00:00:00+00:00 List-Id: G Shwarz replies to Kaz: <<> A strictly conforming program may not define any external > name that begins with 'mem' followed by any combination of letters, > digits or underscores. Ok. Define void memfoo() { } and see if it compiles. It does. >> It is perhaps one of the most common serious misconceptions about what language definitions mean to write a reply like this: A standard specifies what strictly conforming programs do. The fact that you can observe xyz behavior from a compiler when given a non-conforming program is perhaps interesting, but has nothing whatsoever to do with the standard. I think this inability to understand the fundamental distinction between the set of things that a standard defines, and the set of behaviors seen experimentally from a given implementaqtion, is one of the most common serious lapses of knowledge among programmers. Note that this understanding must precede the realization that you cannot write correct programs in a given language without knowing the standard for that language well. It always amazes me how badly many C programmers are acquainted with the standard. Many C programmers have never even *seen* the standard, let alone studied it carefully to know exactly what it says. People often argue over the relative merits of languages from a portability point of view. While it is true that there are some important technical differences (e.g. dealing with varying size of integer types in C and Ada), these technical differences are often swamped in practice by the differences in level of knowledge of the standard defining document, and very often "portability" problems are just bugs where clearly non-conforming code has been written. OK, so your compiler can compile memfoo without compiling. Wunderbar! But that does NOT mean that you can actually go ahead and call a routine memfoo if the standard forbids it. To do so would be incompetent programming.