🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: net.lang.c
Article #9456

Re: Significant deficiency in C

#9456
From: Henry Spencer
Date: Sat, 04 Oct 1986 05:49
35 lines
2473 bytes
> That C promotes all values of type char to int before using them in an
> expression ... [is a performance disaster on an 8-bit machine] ...
> I think this is a significant deficiency in C.  Is ANSI doing anything to
> eliminate this or decrease its effect? ...  Is a potential doubling or
> tripling of text processing speed not significant enough to be worth
> redefining a  programming language for?

Only when it's really necessary to redefine the language to solve the
problem.  The X3J11 drafts state clearly that the semantics as given in
the draft define the required effects, and the compiler is free to get
those effects by whatever means it chooses.  In particular, if it can
determine that the result will only be 8 bits and that no overflow hassles
intervene, it is entirely free to use 8 bits, essentially optimizing out
the promotion.  This is in fact an example the drafts use.

> Perhaps the problem is that UNIX and C have traditionally been implemented
> only on machines ...in which using an 8-bit register always automatically
> tied up a 16-bit or larger register...

This is quite true, but as it happens it's not that hard for a compiler for
a small machine to optimize the code to use 8 bits most of the time.  The
only unoptimizable case is in function calls, and that is less of a
hassle.  It is, of course, quite possible to write a stupid compiler that
doesn't try to do this optimization.  In fact, there are quite a few of
them.  Particularly in the 8088 world, which is such a huge and uncritical
market that any get-rich-quick artist who puts an attractive package around
shoddy software can count on making a profit.  (There *is* some pretty good
8088 software, but Sturgeon's Law -- "95% of everything is crap" -- very
definitely applies.)

In short, you are being victimized by a stupid compiler, not a stupid
language.
-- 
				Henry Spencer @ U of Toronto Zoology
				{allegra,ihnp4,decvax,pyramid}!utzoo!henry
Technical Details
Message-ID: <7182@utzoo.UUCP>
Path: arc1-ca.pugleaf.net!utzoo!henry
References: <4200@brl-smoke.ARPA>

Show Full Headers
Complete Article Headers
Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: arc1-ca.pugleaf.net!utzoo!henry
From: henry@utzoo.UUCP (Henry Spencer)
Newsgroups: net.lang.c
Subject: Re: Significant deficiency in C
Message-ID: <7182@utzoo.UUCP>
Date: Sat, 4-Oct-86 01:49:25 EDT
Article-I.D.: utzoo.7182
Posted: Sat Oct  4 01:49:25 1986
Date-Received: Sat, 4-Oct-86 01:49:25 EDT
References: <4200@brl-smoke.ARPA>
Organization: U of Toronto Zoology
Lines: 35