Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!nbires!isis!udenva!cu-den!boulder!hao!oddjob!gargoyle!ihnp4!chinet!dag From: dag@chinet.UUCP (Daniel A. Glasser) Newsgroups: comp.lang.c Subject: Re: MAJOR ANSI C FLAW (my opinion, of course) Message-ID: <1748@chinet.UUCP> Date: Tue, 20-Oct-87 14:02:32 EDT Article-I.D.: chinet.1748 Posted: Tue Oct 20 14:02:32 1987 Date-Received: Fri, 23-Oct-87 02:27:19 EDT References: <2997@husc6.UUCP> <2520@cbmvax.UUCP> Reply-To: dag@chinet.UUCP (Daniel A. Glasser) Organization: Chinet - Public Access Unix Lines: 51 Keywords: Six character external identifier minimum conformance ANSI standard Summary: Complaints about six char complaints -- some observations Oh come on now! It has been said before, and will be said again... I have a copy of the ANSI document in front of me, and the six character limit is not a fixed number -- It is a MINIMUM for conforming compilers. Those of you who don't want to make your programs run on these older systems with this old limitation on object format will still be writing standard ANSI C, you just won't be maximally portable. It is outside of the ANSI C standardization effort to specify link environments or formats. The reason that compilers for $500 machines can support long names yet $100,000 machines can't is that the $500 machines are NEW. The compiler writers knew they wanted/needed long external names and guided the creation of the linkers on those machines. The program translator proposal is okay for some, but the resulting code would be less maintainable since well chosen short names are easier to recognise. I have worked for both sides of the dotted line. I used to work for a major computer manufacturer and now I work for a C compiler writing company. From the former, I learned just how difficult it is to change software tools (which, for non-UNIX systems are usually not written in C, and which often pre-date UNIX anyway) and from the latter, I have learned just how much hostility you run into when you try to replace what has been entrenched as the "standard" for that system, even if your utility is far better (versitility, speed, features, robustness, etc.) even if you supply utilities for converting both individual objects and entire libraries to your new format. Don't go damning the compiler/computer vendors for this 6 character minimum, the product I am working on intends to be ANSI compatible and support flex-name style identifiers (these are not contradictory) but will allow the user to enable name collision checking (runtime switch) for maximal portability. The programmer who has written and debugged an application with long names needs only log the output from the compiler using this switch and create a list of "#define"s to make shorter names to be put in some common include file for the application. Request: Would someone at DEC who is, or know someone who is, connected with the RSX group please post some estimation of the size of the TKB source and the "language" it is written in? Do you know anyone who understands the whole thing? (MULP may, Covert may, Maybe Day?) Disclaimer: My employer neither has knowlege of or condones my posting in this subject. I will not name them, but if you know, don't bother them with it. I take all responsibility for my comments. Send replies/flames to ...!{cbmvax|ihnp4}!mwc!gorgon!dag rather than the originating machine for this posting. I get the mail there more regularly. -- Daniel A. Glasser ...!ihnp4!chinet!dag ...!ihnp4!mwc!dag ...!ihnp4!mwc!gorgon!dag One of those things that goes "BUMP!!! (ouch!)" in the night.