In Chapter4, we
argued that C has been successful because it acts as a layer of thin
glue over computer hardware approximating the “standard
architecture” of [BlaauwBrooks]. There is, of course, more to the story than
that. To understand the rest of the story, we'll need to take a brief
look at the history of C.
The White Book described enhanced Version 6 C, with one
significant exception involving the handling of public storage.
Ritchie's original intention had been to model C's rules on FORTRAN
COMMON declarations, on the theory that any machine that could handle
FORTRAN would be ready for C. In the common-block model, a public
variable may be declared multiple times; identical declarations are
merged by the linker. But two early C ports (to Honeywell and IBM 360
mainframes) happened to be to machines with very limited common
storage or a primitive linker or both. Thus, the Version 6 C compiler
was moved to the stricter definition-reference model (requiring at
most one definition of any given public variable and the
extern keyword tagging references to it) described
in [Kernighan-Ritchie].