Xref: utzoo comp.lang.c:10586 comp.std.c:38 Path: utzoo!utgpu!water!watmath!rbutterworth From: rbutterworth@watmath.waterloo.edu (Ray Butterworth) Newsgroups: comp.lang.c,comp.std.c Subject: Trigraphs. Message-ID: <19345@watmath.waterloo.edu> Date: 7 Jun 88 14:27:21 GMT Followup-To: comp.std.c Distribution: comp Organization: U of Waterloo, Ontario Lines: 69 Let's consider the various combinations of compilers and terminals. Commonly, either of these can be US-ASCII, 7-bit French-ASCII (or some other national character set), or 8-bit IS0-ASCII. 1) if I am using a US-ASCII terminal, I have the full C source character set at my fingertips and all three types of compilers must accept these characters according to the way they appear on my screen. Thus, I have no need for trigraphs. 2) similarly, if I am using an ISO-ASCII terminal, the keyboard will contain the full C source character set, and all three types of compilers must accept these characters. Thus, I still have no need for trigraphs. 3) finally, if I am using a 7-bit French-ASCII terminal, the situation is a little more complicated. 3a) if the compiler only knows about US-ASCII I have a choice of entering "\" either as "??/" or as "cedilla-c". 3b) if the compiler uses ISO-ASCII, then again I must enter "\" either as "??/" or as "cecilla-c". 3c) and finally, if the compiler knows about French-ASCII, then I would think that I must enter "\" as "??/", since the compiler will treat "cedilla-c" as a real letter. But if I try to define static char language??(??) = "FranCais"; where the "C" is actually the cedilla-c character, then strange things will happen since the standard says that the character set must include the "\" character, and so the string will actually contain "Fran\ais", which is "Franis". Thus again I still have the choice of entering "\" as either "??/" or as "cedilla-c". So, putting this all together, regardless of what the compiler's character set is, it is only the French-ASCII terminal that has any need of the trigraphs. Now, on such a terminal I cannot use the cedilla-c character as anything but a back-slash since all three types of compilers must interpret this as a back-slash, and not as a cedilla. So, the only case that needs trigraphs is the French-ASCII terminal, and such a terminal will have nine keys that I am better off not using since they appear to give me something that I don't really get. People using French have three choices. Use the trigraphs and avoid those 9 keys; use those 9 keys, remembering their special meanings and forget about trigraphs; or get a different terminal and forget about trigraphs. That reduces the cases that need trigraphs to those that have French-ASCII terminals and that also prefer to avoid using the national keys. From what I can gather, there are not many people still buying French-ASCII terminals and those that have such terminals seem to prefer using the funny characters to using the trigraphs. Consider that at the moment trigraphs don't even exist outside the minds of the X3J11 Committee, and decide how many people that now use the funny characters and are going to switch to using trigraphs. The number of people that would actually use trigraphs must be amazingly small. For what it is costing the Committee in time, the publishers in paper, the net in shipping articles denouncing trigraphs, and the readers in time to read these articles, I'm sure it would be cheaper if we all chipped in and bought new terminals for those few individuals and then completely dropped the concept of trigraphs from the Standard.