Kenneth Lane Thompson (born February 4, 1943) is an American pioneer of computer science. Thompson worked at Bell Labs for most of his career. There, he designed and created the first Unix operating system. He also developed the B programming language, which came before the C language. He was one of the people who helped create and develop the Plan 9 operating system.
He also worked on regular expressions and early text editors like QED and ed. He helped define the UTF-8 encoding. Additionally, he contributed to computer chess by creating endgame tablebases and the chess machine Belle.
Since 2006, Thompson has worked at Google. There, he helped create the Go programming language. In 1983, he won the Turing Award along with his long-time colleague, Dennis Ritchie. He is regarded as one of the greatest computer programmers in history.
Early life and education
Thompson was born in New Orleans, Louisiana. When asked how he learned to program, Thompson said, "I was always interested in logic, and even in grade school I would solve math problems using binary numbers, and other similar tasks. Just because I was curious."
Thompson earned a Bachelor of Science degree in 1965 and a Master's degree in 1966, both in electrical engineering and computer sciences, from the University of California, Berkeley. His master's thesis advisor was Elwyn Berlekamp.
Career and research
Thompson joined Bell Labs in 1966. During the 1960s, Thompson and Dennis Ritchie worked on the Multics operating system at Bell Labs. While developing Multics, Thompson created the Bon programming language. He also designed a video game called Space Travel. Later, Bell Labs stopped working on the Multics project. To continue playing the game, Thompson used an old PDP-7 computer and rewrote Space Travel for it. Eventually, the tools created by Thompson and others became the Unix operating system. Working on a PDP-7, a team led by Thompson and Ritchie, including Rudd Canaday, developed a hierarchical file system, the concept of computer processes and device files, a command-line interpreter, pipes for communication between programs, and small utility programs. In 1970, Brian Kernighan suggested the name "Unix," which was a play on the name "Multics." After early work on Unix, Thompson decided Unix needed a system programming language and created B, a predecessor to Ritchie's C language.
In the 1960s, Thompson also started working on regular expressions. He had developed the CTSS version of the editor QED, which used regular expressions to search text. QED and Thompson's later editor, ed (the standard text editor on Unix), helped make regular expressions popular. Today, most programs that use regular expressions rely on some version of Thompson's notation. He also invented Thompson's construction algorithm, which converts regular expressions into nondeterministic finite automata to speed up matching.
In the 1970s, Thompson and Ritchie worked together on Unix. They were so active in developing Research Unix that Doug McIlroy later said their names were often linked to most of its features. In a 2011 interview, Thompson said the first versions of Unix were written by him, and Ritchie helped promote and improve the system. Feedback from Thompson's Unix development influenced the creation of the C programming language. Thompson later said the C language "grew up" during a system rewrite and became ideal for writing systems.
In 1975, Thompson took a break from Bell Labs and returned to his college, UC Berkeley. There, he helped install Version 6 Unix on a PDP-11/70. Unix at Berkeley later became its own system, known as the Berkeley Software Distribution (BSD).
In early 1976, Thompson wrote the first version of Berkeley Pascal at UC Berkeley's Computer Science Division. Later that year, William Joy, Charles B. Haley, and faculty advisor Susan Graham made major changes to it.
Thompson created a chess-playing program called "chess" for the first version of Unix in 1971. Later, with Joseph Condon, he designed Belle, a world champion chess computer. He also wrote programs to generate endgame tablebases for all 4, 5, and 6-piece chess endings, allowing computers to make perfect moves in specific positions. With help from John Roycroft, Thompson shared his early results on a CD-ROM. In 2001, the ICGA Journal dedicated an entire issue to Thompson's contributions to computer chess.
In 1983, Thompson and Ritchie received the Turing Award "for their development of generic operating systems theory and specifically for the implementation of the UNIX operating system." His acceptance speech, "Reflections on Trusting Trust," described a security attack now called the Thompson hack or trusting trust attack. This speech is considered a key work in computer security. In 2023, the backdoor's annotated source code was published online. At the end of his speech, Thompson criticized how some journalists portrayed hackers positively, such as the 414s.
A defense against the Thompson hack was created by David A. Wheeler. His method, called diverse double compilation, prevents the hack by comparing reproducible builds.
In the 1980s, Thompson and Ritchie continued updating Research Unix, which used a BSD codebase for the 8th, 9th, and 10th editions. In the mid-1980s, Bell Labs began work on a new operating system to replace Unix. Thompson played a major role in designing and building Plan 9 from Bell Labs, a system that expanded Unix principles to all parts of the operating system. Some programs from later versions of Research Unix, like mk and rc, were also used in Plan 9.
Thompson tested early versions of the C++ programming language for Bjarne Stroustrup by writing programs in it. Later, he refused to use C++ because of frequent changes between versions. In a 2009 interview, Thompson said, "It does a lot of things half well and it's just a garbage heap of ideas that are mutually exclusive."
In 1992, Thompson developed the UTF-8 encoding system with Rob Pike. UTF-8 became the main way to encode text on the internet, used in over 90% of web pages by 2019.
In the 1990s, work began on the Inferno operating system, a research project based on a portable virtual machine. Thompson and Ritchie continued their collaboration with Inferno and other researchers at Bell Labs.
In 1995, Thompson worked on music compression with Sean Dorward, based on research by Jim Johnston, under the guidance of Joe Hall and Jont Allen.
In late 2000, Thompson retired from Bell Labs.
In 2004, he helped implement Turochamp, a chess program Alan Turing designed in 1948 before computers existed.
He worked at Entrisphere, Inc. as a fellow until 2006.
As of 2024, he works at Google, first as a Distinguished Engineer and later as a Google Advisor. Recent work has included co-designing the Go programming language. Referring to himself and the other original authors of Go, he states:
Awards
In 1980, Thompson was chosen to join the National Academy of Engineering for "designing UNIX, an operating system whose efficiency, breadth, power, and style helped a generation use minicomputers." In 1985, he was selected as a Member of the National Academy of Sciences.
In 1983, Thompson and Ritchie were both honored with the Turing Award "for creating theories about general operating systems and for building the UNIX operating system." During his speech, titled "Reflections on Trusting Trust," Thompson described a security attack involving a compiler backdoor, known as the Thompson hack or the trusting trust attack. This work is widely seen as a major contribution to computer security.
In 1990, Thompson and Dennis Ritchie were awarded the IEEE Richard W. Hamming Medal by the Institute of Electrical and Electronics Engineers (IEEE) "for creating the UNIX operating system and the C programming language."
In 1997, Thompson and Ritchie were both named Fellows of the Computer History Museum "for co-creating the UNIX operating system and for developing the C programming language." In 2024, Thompson shared a detailed oral history with the museum.
On April 27, 1999, Thompson and Ritchie received the 1998 National Medal of Technology from President Bill Clinton for co-inventing UNIX and the C programming language. These innovations "led to major progress in computer hardware, software, and networking systems and helped grow an entire industry, strengthening American leadership in the Information Age."
In 1999, the Institute of Electrical and Electronics Engineers awarded Thompson the first Tsutomu Kanai Award "for his role in creating the UNIX operating system, which has been a key platform for distributed systems work for many years."
In 2011, Thompson and Dennis Ritchie were given the Japan Prize for Information and Communications "for pioneering work in developing the UNIX operating system."
Personal life
Ken Thompson is married and has a son. He used Apple products but later changed to Raspberry Pi OS because of problems he had with Apple products.