← History

C 1972

Portable assembler: you manage the memory, the machine does what you say.

Paradigmsimperative, procedural, structured
Typingstatic, weak, manual
Extensions.c .h
Created byDennis Ritchie

Influenced by: bcpl algol b assembly

C is the original systems language: a small, fast, statically but weakly typed procedural language created at Bell Labs to write Unix. Memory is entirely manual - there is no garbage collector, no destructors, and no built-in ownership. You allocate with malloc/calloc/realloc, release with free, and reach memory directly through raw pointers and pointer arithmetic. That power comes with undefined behavior: get the lifetime or the bounds wrong and the program is yours to debug.

What makes it distinctive

History

C was created in 1972 by Dennis Ritchie at Bell Labs. It grew directly out of Ken Thompson's B language (1969), which was itself a stripped-down descendant of Martin Richards' BCPL and, more distantly, ALGOL 60. B was typeless and word-oriented; as Unix was ported toward the byte-addressed PDP-11, Ritchie added data types (char, int, structs) and a richer expression syntax, producing what was first called "New B" and then C.

C's defining moment was the rewrite of the Unix kernel in C around 1973. This made Unix one of the first operating systems written largely in a high-level language, and it gave C its reputation as a "portable assembler" - close enough to the hardware to be efficient, abstract enough to move between machines.

In 1978 Brian Kernighan and Dennis Ritchie published The C Programming Language, whose informal specification became known as K&R C. As C spread, the need for a formal standard grew. ANSI standardized the language in 1989 (C89, also called ANSI C), and ISO adopted essentially the same text in 1990 (C90, ISO/IEC 9899:1990).

The language was modernized by C99 (1999), which added // comments, variable-length arrays, long long, and designated initializers. C11 (ISO/IEC 9899:2011) introduced multithreading (<threads.h>), atomics, _Static_assert, and anonymous structs/unions. C17 (a.k.a. C18, ISO/IEC 9899:2018) was a bug-fix release with no new features. The current standard, C23 (ISO/IEC 9899:2024), was published on October 31, 2024; it makes bool, true, false, nullptr, static_assert, and thread_local first-class, adds typeof, binary literals, and <stdckdint.h> checked arithmetic. The committee responsible is ISO/IEC JTC1/SC22/WG14, now working toward "C2y".

Ritchie and Thompson received the ACM Turing Award in 1983 for Unix; more than fifty years on, C remains the lingua franca of operating systems, embedded firmware, language runtimes, and the C ABI that nearly every other language must speak to.

Resources

See it in Code Compare →