C is an imperative and generalist programming language. Invented in the early 1970s to rewrite UNIX, C has become one of the most widely used languages. Many more modern languages like C ++, C #, Java and PHP take aspects of C.
The C language was invented during the year 1972 in the Bell Laboratories. It was developed at the same time as UNIX by Dennis Ritchie and Ken Thompson. Ken Thompson had developed a predecessor of C, the B language, which is itself inspired by BCPL. Dennis Ritchie has made the B language evolve in a new version sufficiently different, adding in particular the types, so that it is called C1.
Although C is officially inspired by B and BCPL, there is a strong influence of PL / I (or PL360); We could say that C was at Unix and at PDP-11 what PL / I was for the rewrite of Multics.
Subsequently, Brian Kernighan helped popularize the C language. He also made some last-minute changes.
In 1978, Kernighan was the principal author of the book The C Programming Language describing the language finally stabilized; Ritchie had dealt with appendices and examples with Unix. We also call this book "K & R", and we speak of traditional C or C K & R when we refer to the language as it existed at that time.
In 1983, the American National Standardization Institute (ANSI) formed a committee for standardization (X3J11) of the language, which in 1989 reached the so-called ANSI C or C89 standard (formally ANSI X3.159-1989). In 1990, this standard was also adopted by the International Organization for Standardization (C90, C ISO, formally ISO / IEC 9899: 1990). ANSI C is an evolution of C K & R which remains extremely compatible. It takes up some C ++ ideas, including the concept of prototype and type 2 qualifiers.
Between 1994 and 1996, the ISO working group (ISO / IEC JTC1 / SC22 / WG14) issued two corrections and one amendment to C90: ISO / IEC 9899 / COR1: 1994 Technical Corrigendum 1, ISO / IEC 9899 / AMD1: 1995 Integrity of C and ISO / IEC 9899 / COR1: 1996 Technical Corrigendum 2. These rather modest changes are sometimes referred to as C89 with amendment 1, or C94 / C953,4. Three header files have been added, two of which are large characters and one that defines a number of macros related to the ISO 646 character standard.
In 1999, a new language evolution was standardized by ISO: C99 (formally ISO / IEC 9899: 1999). New features include variable-size arrays, restricted pointers, complex numbers, compound literals, statements mixed with statements, inline functions, advanced floating-point support, and C ++ comment syntax. The standard C99 library has been enriched with six header files since the previous standard.
In 2011, ISO ratifies a new version of standard 5: C11, formally ISO / IEC 9899: 2011. This evolution introduces in particular the support of the multi-threaded programming, expressions of generic type, and a better support of Unicode.