On Tue, 11 Apr 2017, Jecel Assumpcao Jr. via cctalk wrote:
These are all very good points. I agree I was
exagerating by saying the
iAPX432 and 8086 couldn't run C.
Or were you implying that nothing worthwhile has ever been written for
80x86 (in ANY language?)? That would be harder to argue with.
C's greatest weakness, and C's greatest strength, is that it lets you do
things that you shouldn't. (Such as putting a pointer into an int, etc.)
As Holub titled one of his books, C gives you "enough rope to shoot
yourself in the foot".
If you stick to only doing things "the way that you are supposed to", then
C code is actually pretty portable. But what's the fun in THAT?
You have to take full responsibility for what you do with C.
It is YOUR responsibility to decide what casts are safe to do.
It is YOUR responsibility to put in all runtime error checking -
if you don't check every denominator for a zero value, then any
resulting black holes are YOUR responsibility.
If you are sure that nothing can ever be out of range, then you can save
object code by not putting in runtime error checking.
The problem is, of course, that too many people are "sure", that shouldn't
be. Hence, you get an amazing amount of software that can never be truly
reliable.
For example, if you know for sure that no file will ever be larger than
2GB, then you can get away with using a signed 32 bit "long" int for file
size, or simply printf("%ld", FILESIZE) for displaying it. (Try using a
sector editor (such as DEBUG) and changing the last 4 bytes of a DOS
Directory entry to FFFF FFFFh.)
I am, of course, embarrassed by the quality of most of the code that I
have ever written.
--
Grumpy Ol' Fred cisin at
xenosoft.com