Ritchie
System as well as a small group of researchoriented
industrial, academic, and government organizations
outside our company, its real growth began only after portability had been achieved. Of
particular note were the System III and System V versions of the system from the emerging Computer
Systems division of AT&T, based on work by the company’s development and research
groups, and the BSD series of releases by the University of California at Berkeley that derived
from research organizations in Bell Laboratories.
During the 1980s the use of the C language spread widely, and compilers became available
on nearly every machine architecture and operating system; in particular it became popular as a
programming tool for personal computers, both for manufacturers of commercial software for
these machines, and for endusers
interesting in programming. At the start of the decade, nearly
every compiler was based on Johnson’s
compiler products.
pcc; by 1985 there were many independentlyproducedStandardization
By 1982 it was clear that C needed formal standardization. The best approximation to a
standard, the first edition of K&R, no longer described the language in actual use; in particular, it
mentioned neither the
only after it was published did the language support assigning them, passing them to and
from functions, and associating the names of members firmly with the structure or union containing
them. Although compilers distributed by AT&T incorporated these changes, and most of the
purveyors of compilers not based on
authoritative description of the language.
The first edition of K&R was also insufficiently precise on many details of the language,
and it became increasingly impractical to regard
embody even the language described by K&R, let alone subsequent extensions. Finally, the
incipient use of C in projects subject to commercial and government contract meant that the
imprimatur of an official standard was important. Thus (at the urging of M. D. McIlroy), ANSI
established the X3J11 committee under the direction of CBEMA in the summer of 1983, with the
goal of producing a C standard. X3J11 produced its report [ANSI 89] at the end of 1989, and
subsequently this standard was accepted by ISO as ISO/IEC 98991990.
From the beginning, the X3J11 committee took a cautious, conservative view of language
extensions. Much to my satisfaction, they took seriously their goal: ‘to develop a clear, consistent,
and unambiguous Standard for the C programming language which codifies the common,
existing definition of C and which promotes the portability of user programs across C language
environments.’ [ANSI 89] The committee realized that mere promulgation of a standard does not
make the world change.
X3J11 introduced only one genuinely important change to the language itself: it incorporated
the types of formal arguments in the type signature of a function, using syntax borrowed
from C++ [Stroustrup 86]. In the old style, external functions were declared like this:
void or enum types. While it foreshadowed the newer approach to structures,pcc quickly picked up them up, there remained no complete,pcc as a ‘reference compiler;’ it did not perfectlydouble sin();
which says only that
floatingpoint)
value. In the new style, this better rendered
sin is a function returning a double (that is, doubleprecisiondouble sin(double);
to make the argument type explicit and thus encourage better type checking and appropriate conversion.
Even this addition, though it produced a noticeably better language, caused difficulties.
The committee justifiably felt that simply outlawing ‘oldstyle’
function definitions and declarations
was not feasible, yet also agreed that the new forms were better. The inevitable compromise
was as good as it could have been, though the language definition is complicated by permitting
both forms, and writers of portable software must contend with compilers not yet brought up to
standard.
X3J11 also introduced a host of smaller additions and adjustments, for example, the type
No comments:
Post a Comment
THE WORLD NEW TECHNOLOGY