T1#research

The C Language — Dennis Ritchie

Dennis Ritchie, designer of the C language (Japan Prize ceremony, 2011)
SourceDenise Panyik-Dale (Wikimedia Commons, via Flickr) · CC BY 2.0 · View on Commons

Metadata

Date
Decade
1970s
Tier
T1
Sources
05
Connections
05
Tags
#research

C was not built for portability. Ritchie is explicit about it: "At the time we did not put much weight on portability; interest in this arose later." The motive was narrower—to write a system in something above assembler, on a cramped machine. Portability came out of it afterwards, and it is what ended up mattering.

From B to C

In 1969, Ken Thompson wrote the first UNIX in the assembly language of the PDP-7. On that same PDP-7 he built a language of his own, which he called B—in Ritchie's description, BCPL squeezed into 8K bytes of memory. B predates the PDP-11 entirely. Ritchie later dismissed the common guess that B's ++ was built to use the PDP-11's auto-increment addressing: it is, he wrote, "historically impossible, since there was no PDP-11 when B was developed."

B had two limits. It had no types; every value was a machine word, which made handling characters awkward. And its PDP-7 compiler emitted not machine instructions but threaded code. When the Unix project acquired a PDP-11 in 1970 and B was moved onto it, the slowness of threaded code ruled out recoding the operating system or its central utilities in B from the start.

In 1971 Dennis Ritchie added a character type to B and, at the same time, rewrote its compiler to generate PDP-11 machine instructions directly. He called the result NB, for "new B." The transition from B to C was therefore inseparable from the arrival of a compiler that could produce code fast and small enough to compete with assembly. By Ritchie's own account the most creative period was 1972, and by early 1973 the essentials of modern C were complete.

1973 — Rewriting UNIX in C

What made C historically decisive was the rewrite of the UNIX kernel in C, in the summer of 1973. Thompson had tried once already, in 1972, using a version of C that did not yet have structures, and had given up.

Writing an operating system in a high-level language was not new. Multics—the project Bell Labs had just withdrawn from—was written in PL/I, and Ritchie names it as a "pioneering (though not original)" element they deliberately deferred: PL/I was not to their taste, and assembly was the practical choice at the time.

What was different about C was its output. Unlike B with its threaded code, the compiler from NB onward emitted machine code that could compete with assembly. The operating system could be moved into a high-level language without paying for it in performance.

That choice is what made UNIX portable. In 1977 Steve Johnson, Ken Thompson, and Ritchie began moving UNIX onto the Interdata 8/32—while, concurrently and independently, Richard Miller at the University of Wollongong in Australia was porting it to the Interdata 7/32. A general-purpose operating system had been made to run on a dissimilar architecture by recompiling its source. UNIX was no longer a property of the PDP-11.

K&R

What put C in front of the world was the book Brian Kernighan and Dennis Ritchie published in February 1978, The C Programming Language—universally known as K&R. Two hundred and twenty-eight pages. A complete language presented in that space.

The division of labour was clean. By Ritchie's account, Kernighan wrote almost all of the expository material; Ritchie was responsible for the appendix containing the reference manual and for the chapter on interfacing with the UNIX system. That appendix became the de facto definition of the language for anyone writing a C compiler, and stayed that way for over a decade, until the ANSI standard was adopted in 1989. The name "K&R C" comes from there.

The terseness of the prose, the smallness of the examples, the visible design behind it—K&R has been cited, repeatedly, as one of the most influential programming books ever written.

Half a Century Later

In 2026, C remains one of the most widely used languages in the world. The Linux kernel, the Windows kernel, the cores of macOS and iOS, the Android system layer, databases, web servers, embedded firmware—nearly everything beneath the application layer of modern computing still runs C.

A vertical stack of languages, descended from C, sits on top of it. C++ (1985), Objective-C (1984), Java (1995), C# (2000), Go (2009), Rust (2010), Zig (2016)—each, with its own syntax and design, defines itself against C in some way.

Dennis Ritchie was found dead at his home in Berkeley Heights, New Jersey, on 12 October 2011, aged 70. Steve Jobs had died exactly a week earlier; the coverage that day was Jobs. Outside the technical press, Ritchie's death was scarcely noted.

But among the computers operating in the world that day, the hard ones to find would have been those not executing, somewhere down the stack, the language he had designed.

Questions this page answers

Who created C, and when?
Dennis Ritchie at Bell Labs, around 1972. He built it out of Ken Thompson's B by adding a character type and a type system.
When was UNIX rewritten in C?
The kernel was rewritten in C in the summer of 1973. The 1977 Interdata port then showed that a general-purpose OS could be moved to a dissimilar architecture by recompiling its source.
Was C the first high-level language used to write an operating system?
No. Multics was written in PL/I before it. What made C decisive is that it did the same while its compiler still emitted code small and fast enough to compete with hand-written assembly.

Sources

  1. TertiaryB (programming language) — Wikipedia

    Accessed 2026-08-03

  2. TertiaryC (programming language) — Wikipedia

    Accessed 2026-08-03

Last updated:

Share