On Tue, Apr 11, 2017 at 08:38:22PM -0400, Charles Dickman via cctalk wrote:
Subject: If C is so evil why is it so successful?
Seriously, I think the #1 reason is that K&R was fantasically well-written.
If you barely skim that book, you know C.
It's *almost* a good low(-ish)-level language, but unfortunately it's the
wrong kind of low-level: it's designed mainly to be easy to compile, but
access to bits and bytes is much more fiddly than it needs to be. It would
have been nice if it had stolen FORTRAN-77's idea of declaring a variable
in the size that you want (I'm talking about INTEGER*2 vs. INTEGER*4 etc.),
instead of just "knowing" what the difference is between int and long and
maybe long long on some architectures and using limits.h plus enough #ifs
to probably, usually, get the size you meant.
That plus the ability to specify endianness of variables, at least as
an option (and also bit order for bit fields -- justifiably rarely used
because we just can't trust them) would have made it a much better fit
for the kinds of stuff it's so often used for (like touching on-disk
structures or or device registers or stuff sent over the network w/o ending
up in a ridiculous talk vs. ntalk situation). But instead it's just so
lazy ... the compiler barely does anything, and even when you're *trying*
to write portable code, you often fail w/o realizing it, and if it's not
portable then it might as well be assembly and get the benefits that come
with that.
It's still better than lots of other languages. It's just not nearly as
good at what it's *for* as it would have been with a bit more effort.
John Wilson
D Bit