Ken Thompson

Last updated

Ken Thompson
Brian Kernighan and Ken Thompson.jpg
Brian Kernighan (left) and Ken Thompson (right) in 2019
Born
Kenneth Lane Thompson

(1943-02-04) February 4, 1943 (age 81)
NationalityAmerican
Alma mater University of California, Berkeley (B.S., 1965; M.S., 1966)
Known for
Awards
Scientific career
Fields Computer science
Institutions

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-developed the Go programming language.

Contents

Other notable contributions included his work on regular expressions and early computer text editors QED and ed, the definition of the UTF-8 encoding, and his work on computer chess that included the creation of endgame tablebases 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, Louisiana. 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." [3]

DEC PDP-7, as used for initial work on Unix Pdp7-oslo-2005.jpeg
DEC PDP-7, as used for initial work on Unix

Thompson received a Bachelor of Science in 1965 and a master's degree in 1966, both in Electrical Engineering and Computer Sciences, from the University of California, Berkeley, where his master's thesis advisor was Elwyn Berlekamp. [4]

Career and research

Thompson was hired by Bell Labs in 1966. [5] 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. [6] [7] He also created a video game called Space Travel . Later, Bell Labs withdrew from the MULTICS project. [8] In order to go on playing the game, Thompson found an old PDP-7 machine and rewrote Space Travel on it. [9] 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 files, a command-line interpreter, pipes 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". [10] After initial work on Unix, Thompson decided that Unix needed a system programming language and created B, a precursor to Ritchie's C. [11]

In the 1960s, Thompson also began work on regular expressions. 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 expressions into nondeterministic finite automata in order to make expression matching faster. [12]

1970s

Version 6 Unix running on the SIMH PDP-11 simulator, with "/usr/ken" still present Version 6 Unix SIMH PDP11 Emulation KEN.png
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 prolific 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." [13] 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: [14]

I did the first of two or three versions of UNIX all alone. And Dennis became an evangelist. Then there was a rewrite in a higher-level language that would come to be called C. He worked mostly on the language and on the I/O system, and I worked on all the rest of the operating system. That was for the PDP-11, which was serendipitous, because that was the computer that took over the academic community.

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". [14]

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 (BSD). [15]

In early 1976, Thompson wrote the initial version of Berkeley Pascal at the Computer Science Division, Department of Electrical Engineering and Computer Science, UC Berkeley (with extensive modifications and additions following later that year by William Joy, Charles B. Haley [16] [17] [18] and faculty advisor Susan Graham).

Thompson wrote a chess-playing program called "chess" for the first version of Unix (1971). [19] Later, along with Joseph Condon, Thompson created the hardware-assisted program Belle, a world champion chess computer. [20] He also wrote programs for generating the complete enumeration of chess endings, known as endgame tablebases, 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 Thompson's various contributions to computer chess. [19]

1980s

Plan 9 from Bell Labs, running the acme text editor, and the rc shell Plan 9 from Bell Labs (with acme).png
Plan 9 from Bell Labs, running the acme text editor, and the rc shell

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 persistent compiler 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. [21] In 2023, the backdoor's annotated source code was published online. [22]

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 and rc, 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." [23]

1990s

In 1992, Thompson developed the UTF-8 encoding scheme together with Rob Pike. [24] 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. [25]

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. [26]

In 1995, Thompson collaborated on music compression with Sean Dorward, based on original research work done by Jim Johnston, under the guidance of Joe Hall and Jont Allen. [27] [28]

2000s

In late 2000, Thompson retired from Bell Labs.

In 2004, he assisted in the implementation of Turochamp, a chess program Alan Turing devised in 1948, before any computers existed that could execute it. [29]

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. [30] 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: [14]

When the three of us [Thompson, Rob Pike, and Robert Griesemer] got started, it was pure research. The three of us got together and decided that we hated C++. [laughter] ... [Returning to Go,] we started off with the idea that all three of us had to be talked into every feature in the language, so there was no extraneous garbage put into the language for any reason.

Awards

National Academies

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 minicomputers". [31] In 1985 he was elected a Member of the National Academy of Sciences. [2]

Turing Award

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". In his acceptance speech, "Reflections on Trusting Trust", Thompson outlined an attack in the form of a compiler backdoor that has been referred to as the Thompson hack or the trusting trust attack, and is widely considered a seminal computer security work in its own right. [32]

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". [33]

Fellow of the Computer History Museum

In 1997, both Thompson and Ritchie were inducted as Fellows of the Computer History Museum for "the co-creation of the UNIX operating system, and for development of the C programming language". [34]

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". [35]

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". [36]

Japan Prize

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. [37]

Personal life

Ken Thompson is married and has a son. [38] [19]

See also

Related Research Articles

B is a programming language developed at Bell Labs circa 1969 by Ken Thompson and Dennis Ritchie.

<span class="mw-page-title-main">Dennis Ritchie</span> American computer scientist, co-creator of the Unix operating system

Dennis MacAlistair Ritchie was an American computer scientist. He created the C programming language and, with long-time colleague Ken Thompson, the Unix operating system and B programming language. Ritchie and Thompson were awarded the Turing Award from the ACM in 1983, the Hamming Medal from the IEEE in 1990 and the National Medal of Technology from President Bill Clinton in 1999.

<span class="mw-page-title-main">Multics</span> Time-sharing operating system

Multics is an influential early time-sharing operating system based on the concept of a single-level memory. Nathan Gregory writes that Multics "has influenced all modern operating systems since, from microcomputers to mainframes."

QED is a line-oriented computer text editor that was developed by Butler Lampson and L. Peter Deutsch for the Berkeley Timesharing System running on the SDS 940. It was implemented by L. Peter Deutsch and Dana Angluin between 1965 and 1966.

<span class="mw-page-title-main">PDP-7</span> Minicomputer introduced in 1964

The PDP-7 is an 18-bit minicomputer produced by Digital Equipment Corporation as part of the PDP series. Introduced in 1964, shipped since 1965, it was the first to use their Flip-Chip technology. With a cost of US$72,000, it was cheap but powerful by the standards of the time. The PDP-7 is the third of Digital's 18-bit machines, with essentially the same instruction set architecture as the PDP-4 and the PDP-9.

<i>A Commentary on the UNIX Operating System</i> Book

A Commentary on the Sixth Edition UNIX Operating System by John Lions is a highly influential 1976 publication containing analytical commentary on the source code of the 6th Edition Unix computer operating system "resident nucleus" software, plus copy formatted and indexed by Lions, of said source code obtained from the authors at AT&T Bell Labs. It is also commonly referred to as the Lions Book.

Joseph Frank Ossanna, Jr. was an American electrical engineer and computer programmer who worked as a member of the technical staff at the Bell Telephone Laboratories in Murray Hill, New Jersey. He became actively engaged in the software design of Multics, a general-purpose operating system used at Bell.

TYPSET is an early document editor that was used with the 1964-released RUNOFF program, one of the earliest text formatting programs to see significant use.

roff is a typesetting markup language. As the first Unix text-formatting computer program, it is a predecessor of the nroff and troff document processing systems.

<span class="mw-page-title-main">Douglas McIlroy</span> American mathematician and computer scientist

Malcolm Douglas McIlroy is an American mathematician, engineer, and programmer. As of 2019 he is an Adjunct Professor of Computer Science at Dartmouth College. McIlroy is best known for having originally proposed Unix pipelines and developed several Unix tools, such as spell, diff, sort, join, graph, speak, and tr. He was also one of the pioneering researchers of macro processors and programming language extensibility. He participated in the design of multiple influential programming languages, particularly PL/I, SNOBOL, ALTRAN, TMG and C++.

Robert H. Morris Sr. was an American cryptographer and computer scientist.

<span class="mw-page-title-main">Jack Dennis</span> American computer scientist (born 1931)

Jack Bonnell Dennis is an American computer scientist and Emeritus Professor of Computer Science and Engineering at Massachusetts Institute of Technology.

<i>Space Travel</i> (video game) 1969 video game

Space Travel is an early video game developed by Ken Thompson in 1969 that simulates travel in the Solar System. The player flies their ship around a two-dimensional scale model of the Solar System with no objectives other than to attempt to land on various planets and moons. The player can move and turn the ship, and adjust the overall speed by adjusting the scale of the simulation. The ship is affected by the single strongest gravitational pull of the astronomical bodies.

<span class="mw-page-title-main">History of Unix</span>

The history of Unix dates back to the mid-1960s, when the Massachusetts Institute of Technology, AT&T Bell Labs, and General Electric were jointly developing an experimental time-sharing operating system called Multics for the GE-645 mainframe. Multics introduced many innovations, but also had many problems. Bell Labs, frustrated by the size and complexity of Multics but not its aims, slowly pulled out of the project. Their last researchers to leave Multics – among them Ken Thompson, Dennis Ritchie, Doug McIlroy, and Joe Ossanna – decided to redo the work, but on a much smaller scale.

<span class="mw-page-title-main">Bulls and cows</span> Code-breaking game

Bulls and cows is a code-breaking mind or paper and pencil game for two or more players. The game is played in turns by two opponents who aim to decipher the other's secret code by trial and error.

<span class="mw-page-title-main">Software feature</span> Distinguishing characteristic or capability of software

In software, the term feature has several definitions, which are often distinct from the more general definitions of the term. The Institute of Electrical and Electronics Engineers (IEEE) defines the term in IEEE 829 as a "distinguishing characteristic of a software item ".

<span class="mw-page-title-main">Unix</span> Family of computer operating systems

Unix is a family of multitasking, multi-user computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, and others.

<span class="mw-page-title-main">TMG (language)</span>

In computing TMG (TransMoGrifier) is a recursive descent compiler-compiler developed by Robert M. McClure and presented in 1965. TMG ran on systems including OS/360 and early Unix. It was used to build EPL, an early version of PL/I.

Joseph Henry 'Joe' Condon was an American computer scientist, engineer and physicist, who spent most of his career at Bell Labs. The son of Edward Condon and Emilie Honzik Condon, he was named after the 19th-century American physicist Joseph Henry.

Rudd Canaday is an American computer systems engineer and a previous member of the technical staff at the Bell Telephone Laboratories in Murray Hill, New Jersey, credited to co-develop the initial design of the Unix file system. In 2015 he joined a Palo Alto based tech startup, Entefy, as a Senior Architect & Engineer.

References

  1. "IEEE Emanuel R. Piore Award Recipients" (PDF). IEEE. Archived from the original (PDF) on Nov 24, 2010. Retrieved Mar 20, 2021.
  2. 1 2 "Kenneth Thompson". www.nasonline.org. Archived from the original on Oct 21, 2021. Retrieved Jun 9, 2019.
  3. Seibel 2009, p. 450.
  4. "Thesis Students". Elwyn Berlekamp's Home Page. University of California, Berkeley Department of Mathematics. Archived from the original on Oct 21, 2021.
  5. "Ken Thompson: developed UNIX at Bell Labs" . Retrieved Oct 31, 2016.
  6. Thompson, K. L. (1969). "Bon User's Manual" (PDF). Multics History Project. Multics Documents: MIT Computer Science & Artificial Intelligence Lab. p. 1. Archived from the original (PDF) on Feb 14, 2021. Retrieved Mar 18, 2021.
  7. Ritchie, Dennis. "The Development of the C Language". Bell Labs . Retrieved Oct 31, 2016.
  8. J. Stanley Warford (2009). Computer Systems. Jones & Bartlett Publishers. p. 460. ISBN   978-1-4496-6043-7.
  9. Ritchie, Dennis M. (2001). "Space Travel: Exploring the solar system and the PDP-7". Bell Labs. Archived from the original on Dec 26, 2015. Retrieved Feb 4, 2016.
  10. Ritchie, Dennis M. "The Evolution of the Unix Time-sharing System". Archived from the original on Oct 21, 2021. Retrieved Oct 31, 2016.
  11. Dennis M. Ritchie. "The Development of the C Language". Bell Labs/Lucent Technologies. Retrieved Oct 31, 2016.
  12. Cox, Russ. "Regular Expression Matching Can Be Simple And Fast". Archived from the original on Oct 21, 2021. Retrieved Oct 30, 2016.
  13. McIlroy, M. D. (1987). A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 (PDF) (Technical report). CSTR. Bell Labs. 139. Archived from the original (PDF) on May 4, 2014.
  14. 1 2 3 "Dr. Dobb's: Interview with Ken Thompson". May 18, 2011. Archived from the original on Oct 21, 2021. Retrieved Nov 10, 2014.
  15. Salus, Peter H. (2005). "Chapter 7. BSD and the CSRG". The Daemon, the Gnu and the Penguin. Groklaw.
  16. "Setting Up Unix – Seventh Edition" (PDF). Retrieved Jan 3, 2024.
  17. "BYTE.com". www.landley.net. Retrieved Jan 3, 2024.
  18. "Computing from the Dark Ages: My Fifty-Year Odyssey". Indico. Apr 25, 2019. Retrieved Jan 3, 2024.
  19. 1 2 3 Dennis Ritchie (Jun 2001). "Ken, Unix and Games". ICGA Journal . 24 (2). Archived from the original on Oct 21, 2021. Retrieved Mar 5, 2020.
  20. "Joe Condon (obituary)". Physics Today. 2013. doi:10.1063/PT.4.1752.
  21. Thompson, Ken (1984). "Reflections on trusting trust". Communications of the ACM . 27 (8): 761–763. doi: 10.1145/358198.358210 .
  22. Cox, Russ (Oct 25, 2023). "Running the "Reflections on Trusting Trust" Compiler".
  23. Seibel 2009, p. 475.
  24. Pike, Rob (Apr 30, 2003). "UTF-8 history". Archived from the original on Oct 21, 2021.
  25. "Usage Statistics and Market Share of UTF-8 for Websites, June 2019". w3techs.com. Archived from the original on Oct 21, 2021. Retrieved Jun 9, 2019.
  26. Khamlichi, M.el. "Ken Thompson UNIX systems father". Unixmen. Archived from the original on Oct 21, 2021. Retrieved Oct 31, 2016.
  27. Platt, Charles. "Music on Demand". Wired. ISSN   1059-1028 . Retrieved Jan 3, 2024.
  28. Ken Thompson - Closing Keynote - SCaLE 20x , retrieved Jan 3, 2024
  29. "Reconstructing Turing's "Paper Machine"". Sep 23, 2017.
  30. School, Stanford Law. "Biographies of Amici Curiae in Oracle America, Inc., v. Google, Inc". Stanford Law School. Retrieved Jul 27, 2023.
  31. "Dr. Ken Thompson". National Academy of Engineering. Archived from the original on Oct 21, 2021.
  32. Thompson, Ken (1984). "Reflections on trusting trust". Communications of the ACM . 27 (8): 761–763. doi: 10.1145/358198.358210 .
  33. "IEEE Richard W. Hamming Medal Recipients" (PDF). IEEE. Archived from the original (PDF) on Jul 26, 2011. Retrieved May 29, 2011.
  34. "Ken Thompson". Computer History Museum. Archived from the original on Oct 21, 2021. Retrieved Oct 29, 2016.
  35. "Bell Labs Luminaries Dennis Ritchie And Ken Thompson To Receive National Medal Of Technology". ScienceDaily. Dec 8, 1998. Archived from the original on Oct 21, 2021.
  36. "Ken Thompson Receives Kanai Award for Impact of UNIX System". Bell Labs. Mar 25, 1999. Archived from the original on Mar 26, 2013.
  37. Evangelista, Benny (Jan 25, 2011). "Ken Thompson, Dennis Ritchie win Japan Prize". The San Francisco Chronicle.
  38. "Ken Thompson: A Brief Introduction". The Linux Information Project. Aug 24, 2007. Retrieved Mar 5, 2020.

Sources

Listen to this article (4 minutes)
Sound-icon.svg
This audio file was created from a revision of this article dated 17 June 2006 (2006-06-17), and does not reflect subsequent edits.