Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.1 6/24/83; site pegasus.UUCP Path: utzoo!watmath!clyde!burl!ulysses!mhuxj!ihnp4!pegasus!hansen From: hansen@pegasus.UUCP (Tony L. Hansen) Newsgroups: net.lang.c Subject: Re: 6 char externs and the ANSI standard Message-ID: <1802@pegasus.UUCP> Date: Mon, 8-Oct-84 16:49:19 EDT Article-I.D.: pegasus.1802 Posted: Mon Oct 8 16:49:19 1984 Date-Received: Tue, 9-Oct-84 04:01:14 EDT References: <4095@tekecs.UUCP> Organization: AT&T Information Systems, Lincroft NJ Lines: 57 I have a very serious problem with the proposed minimum standard of 6 char, mono-case external variables. Say I'm working for a small company that wants to write a new C compiler and they want me to write it fast without throwing in anything fancy! What is my boss going to tell me when I ask him/her how many external characters have to be supported? S/he'll certainly say "what's the standard say?", to which I'd have to reply "the minimum is 6 characters mono-case." Of course s/he'll say "Well write it by the standard!" Come on folks, anytime you set a minimum like that it's going to be followed in new compilers/linkers as well as the cranky old linkers that won't change to keep pace with the world. The last time that this subject came up, the consensus seemed to agree with my position that the 6 character/mono-case limit should be a SUBSET of the standard rather than having the standard be the minimum case. Make the standard something sensible and then recognize those sub-standard compilers for what they are. There's already a section on valid extensions to the language; add a section on recognized subsets. Think again about the above scenario. If my reply to my boss' question were "external variables can be N characters, multi-case, but there's a subset which only allows 6 characters, mono-case", my boss would certainly say "We're not writing a new compiler just to be a subset! Write it by the standard!" ---- On to specifics: < Arguments for 6 char: < 1. The standard's purpose is to define a portable language that may be supported < on most if not all machines. Some older machines can not support more than < this limit. To ignore this limitation would be contrary to its purpose. So don't ignore them but recognize them as a subset from the language proper. < 2. The limit is a minimum NOT a maximum, your compilers are free to support < longer identifiers, but PORTABLE programs should not depend on them. My scenario above indicates that the minimum often becomes the maximum when people refuse to go beyond the minimum requirements. Besides, PORTABLE programs based on such minimum standards are very difficult to maintain without resorting to some trickery using pre-processing of some sort. < 3. Prelinking is perceved to be a time consuming kludge. Only on the systems which can't be upgraded to the standard. The rest of us get something reasonable. ---- If we allow this to get through now, we're going to be the ones that will have to live with it in the future. Here's my vote for sanity. Please add yours while there's still a chance! Tony Hansen pegasus!hansen