C Standards

Richard B. Johnson (root@quark.analogic.com)
Thu, 21 May 1998 09:20:39 -0400 (EDT)

This would have been sent from root@chaos.analogic.com,, but that address is now being aliased by some machine
that doesn't have a root account so all mail is being rejected.

Okay, Okay. I am wrong. I am wrong. I am wrong.

About 8 to 10 years ago, I needed to prepare a document to support
COTS (Commercial Off The Shelf) software support for some equipment
and supporting software to be used by NASA/Ames. At that time, most
software used by (or funded by) the US Government had to be written in

We wanted to develop and support software in the C Language.
Therefore, I wrote a "Big black book" to support the project. You
probably know that, with government contracts, you don't win a design
review by referencing 20 to 30 texts on some subject. You need a
single document. I wrote such a document by including the essential
elements of 20 or more C Language texts, plus the new ANSI
specifications (which had just defined 'const' and specified new
prototyping standards).

At that time, the C Language had stabilized into a tool that could be
relied upon to produce uniform binaries and uniform runtime behavior,
which was a customer requirement. This uniformity was assured because
new "ANSI" compilers used uniform code-generation standards and
produced uniform runtime behavior.

Needless to say that after documenting all this stuff, I become known
as an "expert".

Unfortunately times have changed. I just spent 10 hours last night
trying to find rules in the new C standards that could have been used
to support such a project today. We are all lucky that C is now an
approved language for use in some US Government projects because,
based upon the new standards, it would probably not be approved if
subjected to the same reviews again today.

The new C standards seem mostly to be disclaimers for compiler design.
Compilers used to be, in Dennis Richie's words, "High level
assemblers". They used to be deterministic in their behavior.

What I have found in this 10 hour nightmare should scare the hell out
of everybody that uses the C language in business.

The fact that one no longer is required to de-reference pointers to
functions, and the fact that there is no longer a "C calling
convention", the reverse of the "Pascal calling convention", should
bother the hell out of anybody that makes libraries.

The fact that a compiler is now free to rearrange code in any way it
wishes, should bother the hell out of anybody who writes software that
controls machines.

The fact that parentheses can be ignored by the compiler except for
mathematics. The list goes on.

So I was wrong. Practically everything I learned about and defended so
that we would not have to write software in ADA, has been decimated.
Nice job!

Further. I was not quite aware that the C Language had become a
religion. I always though it was a tool. Judging from both my public
and private mail, I have been attacking motherhood, apple pie, and
world-wide religious ethics. The retribution has been, well, funny!

All last night my 'chaos' machine was aliased on the internet by a
machine that didn't have a root account so email to
root@chaos.analogic.com was rejected. I do have one or two friends
that sent me the information so I could figure out what was happening.
Would whoever is aliasing please stop.

This machine is not on the linux-kernel list.

Richard B. Johnson
Project Engineer
Analogic Corporation
Penguin : Linux version 2.1.102 on an i586 machine (66.36 BogoMips).
Warning : It's hard to stay on the trailing edge of technology.
MS-DOS : Program Loader
Unix : Angry Operating System
VAX/VMS : Obsolete Operating System
Linux : Engineering tool
Windows : Typewriter

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu