Path: utzoo!attcan!uunet!lll-winken!lll-tis!ames!pasteur!ucbvax!decwrl!purdue!umd5!brl-adm!brl-smoke!gwyn From: gwyn@brl-smoke.ARPA (Doug Gwyn ) Newsgroups: comp.lang.c Subject: Re: trigraphs in X3J11 Message-ID: <7937@brl-smoke.ARPA> Date: 20 May 88 10:16:22 GMT References: <5215@ico.ISC.COM> Reply-To: gwyn@brl.arpa (Doug Gwyn (VLD/VMB) ) Organization: Ballistic Research Lab (BRL), APG, MD. Lines: 50 In article <5215@ico.ISC.COM> rcd@ico.ISC.COM (Dick Dunn) writes: >The draft standard seems to be written in such a way that a compiler MUST >accept these trigraph sequences. Yes, a standard-conforming implementation MUST understand trigraphs. >1. Replacement within strings: This is a change to the existing language. > It breaks existing programs. ... > Point: The sequence "??" is not at all rare. Trigraphs ARE relatively rare in existing code. Yours is the first example I've seen, in fact. Most applications think ? should be used as a question mark in messages, perhaps ?? at the end of a few message strings or in a chess program. > Why was it [??] chosen as the introducer? Because all single characters in the ISO invariant code set already had valid C meanings. Many double-character sequences also already have meanings. ?? seemed to cause the least disruption to existing practice. > What I don't understand is why it was decided to > introduce a brand-new (I assume) mechanism which breaks existing code. Because nobody, including you, has proposed anything that the Committee agreed was better, and many C users (for example, Europeans) have a perceived need that the parochial American outlook does not meet. The point is that existing practice was deemed unsatisfactory, so SOMEthing had to change. X3J11 tried to minimize the impact of this "quiet change". >Has the trigraph mechanism been tried out, in real practice, anywhere >prior to the introduction in X3J11? This specific mechanism is an invention of X3J11, so far as I can determine. However, use of multi-byte sequences to encode things that cannot be represented by a single byte is extremely common practice. Note, by the way, that I oppose trigraphs, but I can provide a definite explanation of how the European needs can be met without them, just as I can explain how the Japanese needs can be met without introducing the wchar_t stuff. My feeling is that people develop mindsets based on previous non-optimal design that precludes their understanding what an optimal design would be like. Probably the difficulty of learning how to deal with a kludge causes a psychological investment that is hard to give up. None of the above, of course, should be construed as official X3J11 information.