Post by David Kleinecke
I would say that the C language is the language defined by
the phrase structure grammar.
In my view there are two Cs. The first is the language appearance and
grammar mechanics describing logical operation. This is comprised of
things human beings would readily use to translate thought into an
explicit form the compiler can reliably interpret. The second is the
inner compilation mechanism which takes that grammar and structure and
produces replicable output on any system.
I personally tend to place greater significance on the language
appearance and the mechanics describing logical operation, and less
significance on the actual output. Why this seemingly huge discrepancy?
I do this because the variations between "reasonable" C compilers are
typically very small, meaning while they can produce code that works
perfectly on one system, and flatly fails on another, they are typically
overcome by changing only one or two small things. And, it's easy to
create tests and compare one compiler to another so as to easily track
down what is different in each.
As a result, far greater ease is found in identifying differences be-
tween C compilers, while the overall complexity of the grammar and
language mechanics outweighing the generated code by a large margin.
Note: This conclusion assumes, of course, reasonable C compilers ...
meaning C compilers that will generally produce correct code
when not dealing with fringe cases.
I believe C is a philosophical approach to translating human thought
into machine expression more than anything else. There is no other
language quite like it. It's close to metal, not overly verbose for
what it does, and requires only a handful of extensions to make it a
truly desirable language for its class of developers.
Rick C. Hodgin