Kenneth Lane Thompson (born February 4, 1943) is an American pioneer of computer science
. Thompson worked at Bell Labs
for most of his career where he designed and implemented the original Unix
operating system. He also invented the B programming language
, the direct predecessor to the C programming language
, and was one of the creators and early developers of the Plan 9
operating system. Since 2006, Thompson has worked at Google
, where he co-invented the Go programming language
Other notable contributions included his work on regular expression
s and early computer text editors QED
, the definition of the UTF-8
encoding, and his work on computer chess that included the creation of endgame tablebase
s and the chess machine Belle
. He won the Turing Award
in 1983 with his long-term colleague Dennis Ritchie
Early life and education
Thompson was born in New Orleans
. When asked how he learned to program, Thompson stated, "I was always fascinated with logic and even in grade school I'd work on arithmetic problems in binary, stuff like that. Just because I was fascinated."
Thompson received a Bachelor of Science
in 1965 and a Master's degree
in 1966, both in Electrical Engineering and Computer Science
, from the University of California, Berkeley
, where his master's thesis advisor was Elwyn Berlekamp
Career and research
Thompson was hired by Bell Labs
in 1966. In the 1960s at Bell Labs, Thompson and Dennis Ritchie
worked on the Multics
operating system. While writing Multics, Thompson created the Bon
programming language. He also created a video game called ''Space Travel
''. Later, Bell Labs withdrew from the MULTICS project. In order to go on playing the game, Thompson found an old PDP-7
machine and rewrote ''Space Travel'' on it.
Eventually, the tools developed by Thompson became the Unix operating system
: Working on a PDP-7
, a team of Bell Labs researchers led by Thompson and Ritchie, and including Rudd Canaday
, developed a hierarchical file system
, the concepts of computer processes
and device file
s, a command-line interpreter
for easy inter-process communication, and some small utility programs. In 1970, Brian Kernighan
suggested the name "Unix", in a pun on the name "Multics".
After initial work on Unix, Thompson decided that Unix needed a system programming language and created B
, a precursor to Ritchie's C
In the 1960s, Thompson also began work on regular expression
s. Thompson had developed the CTSS
version of the editor QED
, which included regular expressions for searching text. QED and Thompson's later editor ed
(the standard text editor on Unix) contributed greatly to the eventual popularity of regular expressions, and regular expressions became pervasive in Unix text processing programs. Almost all programs that work with regular expressions today use some variant of Thompson's notation. He also invented Thompson's construction algorithm
used for converting regular expression into nondeterministic finite automaton
in order to make expression matching faster.
_running_on_the_[[SIMH_[[PDP-11.html" style="text-decoration: none;"class="mw-redirect" title="SIMH.html" style="text-decoration: none;"class="mw-redirect" title="Version 6 Unix running on the [[SIMH">Version 6 Unix running on the [[SIMH [[PDP-11">SIMH.html" style="text-decoration: none;"class="mw-redirect" title="Version 6 Unix running on the [[SIMH">Version 6 Unix running on the [[SIMH [[PDP-11 simulator, with "/usr/ken" still present]]
Throughout the 1970s, Thompson and Ritchie collaborated on the Unix operating system; they were so influential on [[Research Unix]] that [[Doug McIlroy]] later wrote, "The names of Ritchie and Thompson may safely be assumed to be attached to almost everything not otherwise attributed."
In a 2011 interview, Thompson stated that the first versions of Unix were written by him, and that Ritchie began to advocate for the system and helped to develop it:
Feedback from Thompson's Unix development was also instrumental in the development of the C programming language. Thompson would later say that the C language "grew up with one of the rewritings of the system and, as such, it became perfect for writing systems
In 1975, Thompson took a sabbatical
from Bell Labs and went to his alma mater, UC Berkeley. There, he helped to install Version 6 Unix
on a PDP-11/70
. Unix at Berkeley would later become maintained as its own system, known as the Berkeley Software Distribution
Ken Thompson wrote a chess-playing program called "chess" for the first version of Unix (1971).
Later, along with Joseph Condon
, Thompson created the hardware-assisted program Belle
, a world champion chess computer
He also wrote programs for generating the complete enumeration of chess
endings, known as endgame tablebase
s, for all 4, 5, and 6-piece endings, allowing chess-playing computer programs to make "perfect" moves once a position stored in them is reached. Later, with the help of chess endgame expert John Roycroft
, Thompson distributed his first results on CD-ROM
. In 2001, the ''ICGA Journal
'' devoted almost an entire issue to Ken Thompson's various contributions to computer chess.
Throughout the 1980s, Thompson and Ritchie continued revising Research Unix, which adopted a BSD codebase for the 8th, 9th, and 10th editions. In the mid-1980s, work began at Bell Labs on a new operating system as a replacement for Unix. Thompson was instrumental in the design and implementation of the Plan 9 from Bell Labs
, a new operating system utilizing principles of Unix, but applying them more broadly to all major system facilities. Some programs that were part of later versions of Research Unix, such as mk
, were also incorporated into Plan 9.
Thompson tested early versions of the C++
programming language for Bjarne Stroustrup
by writing programs in it, but later refused to work in C++ due to frequent incompatibilities between versions. In a 2009 interview, Thompson expressed a negative view of C++, stating, "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 scheme together with Rob Pike
. UTF-8 encoding has since become the dominant character encoding for the World Wide Web
, accounting for more than 90% of all web pages in 2019.
In the 1990s, work began on the Inferno
operating system, another research operating system that was based around a portable virtual machine
. Thompson and Ritchie continued their collaboration with Inferno, along with other researchers at Bell Labs.
In late 2000, Thompson retired from Bell Labs. He worked at Entrisphere, Inc. as a fellow
until 2006 and now works at Google
as a Distinguished Engineer. Recent work has included the co-design of the Go
programming language. Referring to himself along with the other original authors of Go, he states:
According to a 2009 interview, Thompson now uses a Linux
-based operating system.
In 1980, Thompson was elected to the National Academy of Engineering
for "designing UNIX, an operating system whose efficiency, breadth, power, and style have guided a generation's exploitation of minicomputer
s". In 1985 he was elected a Member of the National Academy of Sciences
In 1983, Thompson and Ritchie jointly 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", presented the backdoor
attack now known as the ''Thompson hack'' or trusting trust attack, and is widely considered a seminal computer security
work in its own right.
IEEE Richard W. Hamming Medal
In 1990, both Thompson and Dennis Ritchie received the IEEE Richard W. Hamming Medal
from the Institute of Electrical and Electronics Engineers
(IEEE), "for the origination of the UNIX operating system and the C programming language".
Fellow of the Computer History Museum
In 1997, both Thompson and Ritchie were inducted as Fellow
s of the Computer History Museum
for "the co-creation of the UNIX operating system, and for development of the C programming language".
National Medal of Technology
On April 27, 1999, Thompson and Ritchie jointly received the 1998 National Medal of Technology
from President Bill Clinton
for co-inventing the UNIX operating system and the C programming language which together have "led to enormous advances in computer hardware, software, and networking systems and stimulated growth of an entire industry, thereby enhancing American leadership in the Information Age".
Tsutomu Kanai Award
In 1999, the Institute of Electrical and Electronics Engineers
chose Thompson to receive the first Tsutomu Kanai Award
"for his role in creating the UNIX operating system, which for decades has been a key platform for distributed systems work".
In 2011, Thompson, along with Dennis Ritchie
, was awarded the Japan Prize for Information and Communications
for the pioneering work in the development of the Unix operating system.
Ken Thompson is married and has a son.
Bell LabsReflections on Trusting Trust
1983 Turing Award
LectureUnix and Beyond: An Interview with Ken ThompsonIEEE Computer Society
The Linux Information Project (LINFO)
*Computer Chess Comes of Age
PhotosComputer History Museum
*Computer Chess Comes of Age
Video of Interview with Ken ThompsonComputer History Museum
Reading Chess paper by HS Baird and Ken Thompson
on optical character recognition
Category:Members of the United States National Academy of Sciences
Category:American computer scientists
Category:American computer programmers
Category:American technology writers
Category:Turing Award laureates
Category:Plan 9 people
Category:Inferno (operating system) people
Category:Scientists at Bell Labs
Category:National Medal of Technology recipients
Category:UC Berkeley College of Engineering alumni
Category:Programming language designers
Category:Members of the United States National Academy of Engineering
Category:20th-century American inventors
Category:People from New Orleans