PERSON

Ken Thompson

Principal designer of UNIX (1969). Author of the B language, the predecessor of C. Worked at Bell Labs and later at Google. Co-recipient with Dennis Ritchie of the 1983 ACM Turing Award. Later co-designed the Go programming language (2009).

Portrait of Ken Thompson
SourceA.C.Diller (Wikimedia Commons) · CC BY-SA 4.0 · View on Commons

Profile

Born
1943
Status
Living
Span
83 years
Appearances
03
Name
ENKen ThompsonJAケン・トンプソン

Ken Thompson — Builder of UNIX, returning with Go

Kenneth Lane Thompson (born 4 February 1943) designed UNIX at Bell Labs in 1969, wrote the B language (the predecessor of C), implemented grep and the practical use of regular expressions, and shared the 1983 ACM Turing Award with Dennis Ritchie. Then, after thirty-seven years at Bell, he moved to Google in 2006 and in 2009 co-designed the Go programming language with Rob Pike and Robert Griesemer. Half a century of work leaving a visible mark on operating systems, programming languages, and tooling is an unusually wide track record for a single engineer.

Background

Thompson was born in New Orleans, Louisiana, the son of a naval officer; the family moved frequently around the United States and abroad during his childhood. He took his BS (1965) and MS (1966) in electrical engineering and computer science at UC Berkeley, and went straight from his master's into the Bell Labs computer research centre at Murray Hill, New Jersey, where he stayed for thirty-six years.

He retired from Bell in 2000, was briefly a fellow at Entrisphere, and joined Google as a Distinguished Engineer in 2006. By the 2020s he is effectively retired, but treated as a continuing presence in the Go community.

Major contributions

1969: UNIX

In the summer of 1969, just after Bell Labs withdrew from the Multics project (the joint MIT-GE operating system effort), Thompson wrote the first version of UNIX on an unused DEC PDP-7 minicomputer in a corner of Murray Hill. In his own account he wrote the filesystem, the shell, an assembler, and an editor in roughly three weeks while his wife Bonnie was away in California with their son.

The name "UNIX" was suggested by his collaborator Brian Kernighan as a pun on Multics — Multi → Uni, originally spelled "UNICS" (UNiplexed Information and Computing Service).

The design philosophy of UNIX — small composable tools, "everything is a file", communication through text streams — survives in Linux (1991), macOS, iOS, Android, and almost the entire modern server infrastructure.

1969-1972: B and the road to C

The earliest UNIX was written in assembly, but Thompson wanted portability through a high-level language. He wrote B in 1969 — a stripped-down BCPL implemented as a typeless interpreter / compiler on the PDP-7. In 1971 Dennis Ritchie extended B into NB ("New B") and by 1972 had completed the typed language C. UNIX was rewritten in C in 1973, and that one decision transformed the operating system's portability: leaving assembly behind made UNIX deployable to the PDP-11, VAX, workstations, and PCs.

1968: regular expressions in practice

Thompson built regular-expression support into the QED text editor on CTSS, and brought it into the UNIX editor ed and into grep ("global regular expression print", his coinage). sed, awk, and the entire UNIX text-processing tradition descend from that decision.

Early 1980s: Belle and computer chess

With Joseph Condon, Thompson built the dedicated chess hardware Belle. It won the North American Computer Chess Championship in 1980 and the World Computer Chess Championship in 1983, and was the first machine to achieve a Master-level rating in human chess. It stands in the lineage that runs to Deep Blue (1997).

1984: "Reflections on Trusting Trust"

Thompson's 1983 Turing Award lecture (published in 1984) demonstrated the theoretical possibility of inserting a compiler back door that survives recompilation. "How far do you trust an assertion that a program is free of Trojan horses? Perhaps it is more important to trust the people who wrote the software." The talk is still read forty years on as a founding text of supply-chain security thinking.

2009: the Go language

After joining Google, Thompson started designing a new language with Rob Pike (his former Bell Labs colleague) and Robert Griesemer (a V8 engine engineer). The widely-told origin story is that Pike was frustrated by C++ compile times one afternoon, and Ken happened to be in the next office.

Released in 2009, Go was built around (1) goroutines for lightweight concurrency, (2) channels for communication between them, (3) interface types for structural / static duck typing, and (4) a small grammar and fast compilation. Docker (2013), Kubernetes (2014), Terraform, and a substantial fraction of cloud-native tooling are written in Go, which made Thompson's later language the linguistic substrate of modern cloud infrastructure.

Awards and honours

  • 1983 ACM Turing Award (with Dennis Ritchie)
  • 1990 IEEE Richard W. Hamming Medal
  • 1999 National Medal of Technology (with Dennis Ritchie)
  • 1997 ACM Software System Award (for UNIX, separate from the Turing Award)

Personal style and influence

Thompson is unusually quiet for an engineer of his standing — few talks, few interviews. Contemporary testimony from Pike and Brian Kernighan describes a working style summarised as "writes code, dislikes politics and hierarchy, will not argue about an idea until the implementation runs".

His legacy in 2026 runs on three layers. (1) The UNIX line — the Linux kernel powers Android, Chromebooks, and nearly every public-cloud server. (2) The C line — the entire descent from B to C, C++, Objective-C, Java, C#, and Rust traces back to the first high-level language he wrote on a PDP-7. (3) The Go line — the working language of cloud-native infrastructure through Docker, Kubernetes, and the surrounding ecosystem.

Writing one operating system, or designing one widely-used language, would be enough to enter the history of computing. Thompson did each, twice over, across two employers separated by four decades — a track record close to unique among computer scientists.

Appearances

  1. 1969The Birth of UNIX — Bell LabsHaving left the Multics project, Ken Thompson at AT&T Bell Labs began writing a small timesharing system on an idle PDP-7. Initially an experiment for one user, it gained a second when Dennis Ritchie joined; in 1970 it was named UNICS (later UNIX). Its rewrite in the C language (1972) gave it portability, and the operating-system lineage that followed has dominated the next half-century. Linux, macOS, Android, and iOS all descend from it.
  2. 1972The C Language — Dennis RitchieDennis Ritchie at Bell Labs extended Ken Thompson's B language with a type system, producing C. UNIX was rewritten in it in 1973, making it the first language in which an operating system could be moved to different hardware as source code. Together with the 1978 K&R book *The C Programming Language*, C became the de facto standard of systems programming for more than half a century. C++, Objective-C, C#, Go, Rust, Zig, and most current systems languages either descend from C or are deliberately designed against its model.
  3. November 2009Go Released — GoogleA systems programming language designed at Google by Robert Griesemer, Rob Pike, and Ken Thompson (the UNIX author). Starting from frustration with C++ build times and complexity, it combined garbage collection, lightweight concurrency via goroutines, and a deliberately simple syntax. Most of the cloud-native infrastructure of the 2010s—Docker, Kubernetes, Terraform, Prometheus—is written in Go.

Share