History of the c programming language

The Creation of C

The c programming language was created by Dennis Ritchie in 1971 . It is derived from the B programming language , created by ken Thompson in 1969 . The B programming language is derived from the BCPL programming language , created by martin Richards in 1966 .

All these languages , were affected one way or another , with the Algol 60 programming language , created in 1960 .

The C programming language had similarities with both BCPL and B , but mainly differed in being a typed language .

The reference books for the C programming language , between 1971 and 1974 , were :

The Classic , or traditional , or k&R , C

Later on , some changes were made to the programming language . Such as , the addition of new types like: short and union , a notation for casting: (type-name) expression , and the ability to create a name for new types using the: typedef operator . This version of C , is known as classic or traditional or k&R C .

The referencefor the c programming language between 1976 – 1983 was :

Some syntactic changes , existed between C 1974 , and classic C , such as in initializing a variable .

int y 3;
/* Initialize a variable in C 1974 */

int y = 3;
/* Initialize a variable in C 1978 */

And some semantic changes , existed between C 1974 , and classic C , for example :

/* Decrement y by 2 , in C 1974 */

/* Assign -2 to y , in C 1978 */

A portable library for input and output , was also described in the reference book .

ANSI C or C89 or C90

After that , further changes were made to the language , such as the addition of the enum type , and the const qualifier , and some semantic changes . As such , there was a necessity to standardize the C programming language.

In 1983 , the American national standard institution formed the X3J11 committee . The aim of this committee was to standardize the C programming language .

In 1989 , the committee released the ANSI C 1989 standard , adopted by the international standardization organization ISO as ISO/IEC 9899:1990 .

Ansi C introduced a new way to declare functions , the old way could still be used with some limitations .

For example in classic C , function could be declared as follow :

name (argument list, if any)
argument declarations, if any
declarations and statements, if any

Whereas in ANSI C , functions are declared :

return-type function-name(argument declarations) {
    declarations and statements

ANSI C also changed the semantic meaning , of hexadecimal and octal integer literal , which are now first considered to be of type int , instead of being of type unsigned int .

ANSI C , also introduced the standard C library , which contains a set of portable headers . The headers declare some functions , for example a declaration of input and output functions , and define some macros , and types .

The draftfor ISO/IEC 9899:1990 C standard , can be found here .

Later revisions

After the release of the ISO/IEC 9899:1990 C standard , standardization efforts continued . These standardization efforts , are just revisions of the C standard .

These revisions , contain some additions or removals to the standard C library , for example , the removal of the gets function , in the c11 revision .

Or they are , just some syntactic or semantic changes to the C language , like the addition of some keywords , such as the _Atomic keyword , in the c11 standard .

The revisions are as follow :

All versions of C , are more or less forward compatible .

Aim of the C language

A C program , is compiled to machine language . It is portable , as long as you stick with the C standard , and the C standard library .

So the C programming language is portable , you have direct control of the machine , and there is no virtual machine or interpreter , sitting between your programs and the computer , as such the C language is used for system programming .

When C was created , its was created to be the programming language , of the Unix operating system .

Other references