HomeTechnology & BuildingTechnology & Invention

Ken Thompson

b. 1943 Tier II

A video game needed a machine, and the machine grew Unix

Portrait of Ken Thompson
A.C.Diller — 2019 — CC BY-SA 4.0 via Wikimedia Commons

He was doing arithmetic in binary in grade school, for no reason except that logic interested him. Thompson took a bachelor's degree at Berkeley in 1965 and a master's in 1966, both in electrical engineering and computer sciences, with the coding theorist Elwyn Berlekamp supervising his thesis. Bell Labs hired him the same year and put him on Multics, the enormous shared time-sharing system that Bell eventually walked away from. While it lasted he wrote a language called Bon and a game called Space Travel that flew a ship around a simulated solar system. When Bell pulled out of the project, the machine the game ran on went with it, and Thompson went looking for another one.

He found a cast-off PDP-7 to run the game on, and what grew up around it was Unix. With Dennis Ritchie and Rudd Canaday he built a hierarchical file system, processes, device files, a command-line interpreter and pipes — the idea that one program's output is the next program's input. Brian Kernighan named the thing in 1970 as a pun on Multics. Thompson wrote B, which became Ritchie's C, and the editors QED and ed, which carried regular expressions out of theory and into everyday text handling. With Joseph Condon he built Belle, a chess machine in custom hardware that won the World Computer Chess Championship in 1980 and in 1983 became the first machine to play at master strength. He also computed the complete solution to every four, five and six-piece chess ending.

His Turing Award lecture in 1983 was not a victory speech. Under the title Reflections on Trusting Trust he described teaching a compiler to slip a backdoor into a login program, and to slip the backdoor-inserting code into any future compiler, so that both instructions vanish from any source anyone can read. The conclusion was that you cannot trust code you did not write entirely yourself, and that inspecting the source is no defense. He closed by criticizing journalists for treating teenage intruders as folk heroes. The annotated source of the hack was finally published in 2023. Thompson has been just as flat about tools he dislikes — he tested early C++ for Bjarne Stroustrup, then refused to work in it, and has said the three designers of Go agreed at the outset that they hated C++.

Almost everything he built is still load-bearing. The file system, the shell, the pipe and the small-tools habit are the shape of Linux, macOS, Android and most of what runs in a server rack. UTF-8, which he and Rob Pike defined in 1992, carried more than nine out of ten web pages. The trusting-trust attack remains an unsolved problem in computer security, and the standard answer — diverse double compilation, worked out by David A. Wheeler — is a way around it rather than a cure. Thompson retired from Bell Labs in late 2000, spent six years at a startup, and joined Google in 2006, where he co-designed Go and was still listed as an advisor in the mid-2020s.

Lifespan

15401700180019002030

Ken Thompson's life against the full span of the corpus — the fading end marks a life still in progress.

Notable works

  • Unix invention
    Begun on a discarded PDP-7 with Dennis Ritchie and Rudd Canaday
    1969
  • The B programming language invention
    The direct predecessor of Dennis Ritchie's C
    1969
  • Belle invention
    Built with Joseph Condon — world computer chess champion, later donated to the Smithsonian
    1980
  • Reflections on Trusting Trust speech
    His Turing Award lecture, and a founding text of computer security
    1984
  • UTF-8 invention
    Defined with Rob Pike — now the encoding of most of the web
    1992
  • The Go programming language invention
    Designed at Google with Rob Pike and Robert Griesemer
    2009

Life in brief

with age at each point
  • February 4, 1943 aged 0 Born in New Orleans
  • 1966 aged ~23 Takes a master's at Berkeley and is hired by Bell Labs His thesis advisor was the coding theorist Elwyn Berlekamp.
  • 1969 aged ~26 Rewrites Space Travel on a discarded PDP-7, and Unix grows around it A file system, processes, a shell and pipes.
  • 1970 aged ~27 Brian Kernighan suggests the name Unix, as a pun on Multics
  • 1975 aged ~32 Takes a sabbatical at Berkeley and installs Version 6 Unix there What Berkeley did with it afterward became BSD.
  • 1980 aged ~37 Belle wins the World Computer Chess Championship The first system to win using purpose-built chess hardware.
  • 1983 aged ~40 Shares the Turing Award with Dennis Ritchie His lecture explained how to hide a backdoor inside a compiler.
  • 1992 aged ~49 Defines UTF-8 with Rob Pike
  • 2006 aged ~63 Joins Google, where he co-designs Go He had retired from Bell Labs in late 2000 after 34 years.

Related

Contemporaries

Technology & Building, born within 25 years
Programming Languages