C
Systems· stable, mature, slow change· since 1972 · Dennis Ritchie
Programming language for operating systems and other code that has to work close to the hardware.
Draft from 2026-10-30, not yet checked claim by claim against its sources. Help verify it.
Born from
In 1969 Ken Thompson created the B language at Bell Labs, and B had no types. The PDP-11's byte addressing exposed B's limits, so Dennis Ritchie added types, int and char, and wrote C, and in 1973 the Unix kernel was rewritten in it.
What it trades away
Cost: No bounds checks and no memory ownership rules, so buffer overflows and use-after-free bugs are the programmer's job, and undefined behaviour often compiles without an error.
Where it fits
| Slot | Fit | |
|---|---|---|
| systems | ●●● | |
| embedded | ●●● | |
| server | ●●○ | |
| cli | ●●○ | |
| wasm | ●●○ | |
| browser | ○○○ | Only through WebAssembly, not as a browser language. |
Why it exists
In 1969 Ken Thompson created the B language at Bell Labs. B was BCPL “squeezed into 8K bytes of memory and filtered through Thompson’s brain”, and it had no types. The PDP-11 exposed its limits. Dennis Ritchie wrote that the machine’s byte addressing “exposed several inadequacies of B’s semantic model”, and that “a typing scheme was necessary to cope with characters and byte addressing” (Ritchie, The Development of the C Language). C added the types int and char, with arrays and pointers to them, and in 1973 the Unix kernel was rewritten in it.
What it trades away
C gives the programmer the machine with almost nothing in between. It has no runtime bounds checks and no rules about who owns a piece of memory, so buffer overflows and use-after-free bugs are the programmer’s job to prevent. The compiler may accept code with undefined behaviour without an error, and the standard leaves many details to each implementation, so the same code can behave differently on different compilers. The ISO working group still revises the language and adopted C23 in 2024 (WG14).
Where it won
The Linux kernel is written in the C programming language, and its documentation says it is typically compiled with gcc in the GNU dialect of ISO C11 (Linux kernel docs). Unix followed the same path. Ritchie’s account says that “writing the Unix kernel in C had given us enough confidence” in the language, and the kernel for the PDP-11 was rewritten in C in 1973 (Ritchie).
Named wins
- Linux kernel, which its own documentation says is written in the C programming language source
- Unix, whose kernel was rewritten in C in 1973 source
Evolution
Reacts to: b, bcpl
Led to: C++, Go, PHP, Python, Zig
Weigh it against: C++, Rust, Zig
Timeline
- 1969Ken Thompson creates the B language at Bell Labs source
- 1972Ritchie calls 1972 the most creative period of C's development source
- 1973The Unix kernel is rewritten in C for the PDP-11 source
- 1978Kernighan and Ritchie publish The C Programming Language source
- 1989The X3J11 committee finishes its ANSI C standard report source
- 2024C23 is adopted as the current ISO standard source
Links
Sources
- https://csapp.cs.cmu.edu/2e/docs/chistory.html
- https://docs.kernel.org/process/programming-language.html
- https://www.open-std.org/jtc1/sc22/wg14/
- https://pldb.io/concepts/c.html
Unverified draft, 2026-10-30.Edit the facts · edit the story · JSON · Markdown