Ken Thompson
Inventor of Unix and B, who co-created the Go language half a century later
Ken Thompson (born 1943) is one of the most prolific systems inventors in computer science history. During 30 years at Bell Labs, he co-created the Unix operating system (1969) and B language (C's predecessor) with Dennis Ritchie, and co-invented UTF-8 character encoding (1992) with Rob Pike. After 1993, he participated in Plan 9 and Inferno OS research. After joining Google in 2006, he co-designed the Go language (2007-2009) with Rob Pike and Robert Griesemer, once again injecting his simple systems design philosophy into a new programming language. Thompson and Ritchie jointly received the 1983 Turing Award for Unix/C contributions.
Methodologies
- Understandability-First Design Method - Every component of a system should be able to be completely understood by a single engineer in a reasonable time; exceeding this threshold is a signal of design loss of control.
- Progressive Language Simplification Method - Apply a 'don't add unless necessary, default fail' high-threshold test to every new language or system feature, not 'add unless there's a reason not to'.
Key decisions and timeline
- 1966 Joined Bell Labs, Participated in Multics Project - Studying the best existing systems is the most effective way to find breakthrough points for next-generation system design.
- 1969 Built Unix Prototype on Discarded PDP-7, Invented File System and Shell - The driving force of personal projects (games) can sometimes produce influence beyond any formal project; pragmatic motivation gave birth to a revolutionary system.
- 1969 Designed B Language — Direct Predecessor of C - An 'imperfect first version' is often an unskippable prerequisite for a 'perfect second version'; failed iterations are necessary groundwork for successful ones.
Beliefs and mental models
- Belief 1 - Thompson's design philosophy: the best system is one that can be completely understood by a single experienced person. Unix's initial kernel was extremely small; every component's responsibility could be completely described. This 'understandability' is the core metric of system excellence.
- Belief 2 - Thompson argued in his 1983 Turing lecture 'Reflections on Trusting Trust': a compiler can have a backdoor implanted that cannot be detected by inspecting the source code, revealing the fundamental vulnerability of the entire computer trust chain.
- Belief 3 - Unix was the 'second attempt' after Multics' failure — simpler, faster, more practical. Thompson's B language paved the way for C; Go is Thompson's 'fiftieth rebuild' of C/C++ problems. Important systems often require failed predecessor versions.
- Model 1
- Model 2
- Model 3