Ritchie
remains a simple and small language, translatable with simple and small compilers. Its types and
operations are wellgrounded
in those provided by real machines, and for people used to how
computers work, learning the idioms for generating timeand
spaceefficient
programs is not difficult.
At the same time the language is sufficiently abstracted from machine details that program
portability can be achieved.
Equally important, C and its central library support always remained in touch with a real
environment. It was not designed in isolation to prove a point, or to serve as an example, but as a
tool to write programs that did useful things; it was always meant to interact with a larger operating
system, and was regarded as a tool to build larger tools. A parsimonious, pragmatic approach
influenced the things that went into C: it covers the essential needs of many programmers, but
does not try to supply too much.
Finally, despite the changes that it has undergone since its first published description, which
was admittedly informal and incomplete, the actual C language as seen by millions of users using
many different compilers has remained remarkably stable and unified compared to those of similarly
widespread currency, for example Pascal and Fortran. There are differing dialects of C
most noticeably, those described by the older K&R and the newer Standard C
C has remained freer of proprietary extensions than other languages. Perhaps the most significant
extensions are the ‘far’ and ‘near’ pointer qualifications intended to deal with peculiarities of
some Intel processors. Although C was not originally designed with portability as a prime goal, it
succeeded in expressing programs, even including operating systems, on machines ranging from
the smallest personal computers through the mightiest supercomputers.
C is quirky, flawed, and an enormous success. While accidents of history surely helped, it
evidently satisfied a need for a system implementation language efficient enough to displace
assembly language, yet sufficiently abstract and fluent to describe algorithms and interactions in a
wide variety of environments.
but on the whole,Acknowledgments
It is worth summarizing compactly the roles of the direct contributors to today’s C language.
Ken Thompson created the B language in 196970;
it was derived directly from Martin
Richards’s BCPL. Dennis Ritchie turned B into C during 197173,
keeping most of B’s syntax
while adding types and many other changes, and writing the first compiler. Ritchie, Alan Snyder,
Steven C. Johnson, Michael Lesk, and Thompson contributed language ideas during 19721977,
and Johnson’s portable compiler remains widely used. During this period, the collection of
library routines grew considerably, thanks to these people and many others at Bell Laboratories.
In 1978, Brian Kernighan and Ritchie wrote the book that became the language definition for several
years. Beginning in 1983, the ANSI X3J11 committee standardized the language. Especially
notable in keeping its efforts on track were its officers Jim Brodie, Tom Plum, and P. J. Plauger,
and the successive draft redactors, Larry Rosler and Dave Prosser.
I thank Brian Kernighan, Doug McIlroy, Dave Prosser, Peter Nelson, Rob Pike, Ken
Thompson, and HOPL’s referees for advice in the preparation of this paper.
References
[ANSI 89] American National Standards Institute,
Systems
[Anderson 80] B. Anderson, ‘Type syntax in the language C: an object lesson in syntactic innovation,’
SIGPLAN Notices
[Bell 72] J. R. Bell, ‘Threaded Code,’ C. ACM
[Canaday 69] R. H. Canaday and D. M. Ritchie, ‘Bell Laboratories BCPL,’ AT&T Bell Laboratories
internal memorandum, May, 1969.
[Corbato 62] F. J. Corbato, M. MerwinDagget,
R. C. Daley, ‘An Experimental Timesharing
System,’
AFIPS Conf. Proc. SJCC, 1962, pp. 335344.
[Cox 86] B. J. Cox and A. J. Novobilski,
Programming: An EvolutionaryAmerican National Standard for Information Programming Language C, X3.1591989.15 (3), March, 1980, pp. 2127.16 (6), pp. 370372.ObjectOriented
No comments:
Post a Comment
THE WORLD NEW TECHNOLOGY