The C programming language was developed in the years 1969 to 1973, although the first published description did not appear until the book "The C Programming Language" written by Brian Kernighan and Dennis Ritchie was published in 1978. The early versions of the C language were strongly influenced by a language called BCPL which itself was a derviative of Algol.
The early development of C was closely linked to the development of the UNIX
operating system. Large portions of the code of the UNIX
operating system were eventually written in C and problems encountered in transferring UNIX
to various computers were reflected into the design of the C language. The modest hardware available to the UNIX
developers was also reflected in the language design, most notably the use of separate library functions for operations such as input and output. Until the early 1980s the language was almost exclusively associated with UNIX
The widespread introduction of microprocessor based computer systems in the early 1980s also saw a rapid growth in the use of C on such systems. C compilers were known to be small and many of the start-up operations that produced the early microprocessor based computer systems were staffed by ex-students who had encountered the language whilst at university.
As early as 1982 it became clear that the informal description of the language in Kernighan & Ritchie's book was not good enough. ANSI
established a committee known as X3J11 in 1983. This committee produced a report defining the language at the end of 1989. The report was known as X3.159 but the standard was soon taken over by ISO with the designation ISO/IEC 9899-1990. This version of the language is known as ANSI
-C to distinguish it from the earlier version of the language described in Kernighan and Ritchie's book. The earlier version of the language is known as K&R C. C++ and Objective-C are different languages developed from C. The GNU C compiler, often known by the command that invokes it, gcc , is public domain software available for both UNIX
based systems. It supports a version of the language close to the ANSI
All the code presented in these notes, unless specifically indicated otherwise, confirms to the ANSI
standard. Many compiler writers and vendors produce C compilers that will compile code conforming to the ANSI
standard but they also provide a variety of extensions to suit the particular target environment. Such extensions are ususally extra library routines for functions such as PC screen handling and interfacing direct to MSDOS
system functions. Sometimes the extensions include extra features introduced into the language, usually to cope with some of the problems of memory management on MSDOS
based systems. In the UNIX
environment such extensions are less common, UNIX
systems are normally supplied with a compiler and the extensions appear as extra libraries for functions such as driving X-Windows displays or network communications.
All C programmers ought to be aware of what is and what isn't standard in their particular environment. The better compiler writers usually make this fairly clear in their manuals.
It is also often possible to obtain further special purpose application specific libraries for use with C compilers to provide facilities such as database handling, graphics, numerical analysis etc.
This is an excellent set of notes on Programming in C.∞
Relevance for performance testing
Several load testing tools (more specifically the Rational and Mercury Interactive product offerings) deploy dumbed-down versions of C as their test script language.