Brian Kernighan on UNIX, C, AWK, AMPL, and the Genesis of Modern Computing at Bell Labs
Summary
This episode features Brian Kernighan, a pivotal figure in computer science, discussing the origins and philosophy of UNIX, the C programming language, and his experiences at the legendary Bell Labs. The conversation delves into the historical context of computing, tracing its evolution from punch-card systems to the advent of time-sharing, exemplified by MIT's CTSS and the ambitious, albeit ultimately over-engineered, Multics project. Kernighan recounts how the withdrawal of Bell Labs from Multics created a void that Ken Thompson, Dennis Ritchie, and others filled by developing UNIX on a PDP-7, emphasizing the rapid, almost singular, productivity of its initial creation.
The discussion highlights key distinctions in early computing paradigms, contrasting the resource-intensive Multics with UNIX's minimalist approach, driven by the constraints of modest hardware. Kernighan clarifies that UNIX, while widely distributed to universities in source code form, was initially proprietary, not open-source, a nuance that shaped its eventual widespread adoption and the emergence of projects like Berkeley UNIX and Linux. He also touches upon the challenges of programming in assembly language, underscoring the immense skill required for early operating system development and the unique capabilities of pioneers like Ken Thompson.
Practical insights emerge from the UNIX philosophy, which prioritized creating an environment for programmer productivity through simple, generalized mechanisms and short feedback loops. Kernighan explains how the necessity of efficiency on limited hardware led to elegant design choices, such as treating devices and processes as files, a concept further explored in Plan 9. He describes the joy of programming in such an environment, where ideas could quickly be prototyped and refined through immediate peer feedback within the collaborative Bell Labs culture.
The broader implications of this historical narrative underscore the profound impact of Bell Labs' unique environment—a hub of brilliant minds fostering open collaboration—on the trajectory of computing. The episode reflects on the serendipitous nature of UNIX's global dominance and its foundational role in modern operating systems like Linux. Kernighan also offers a perspective on programming as a blend of art and science, emphasizing the creative problem-solving aspect and the reward of creating tools that others find useful, even if they complain about them.
Key Quotes
I think the gist of it is that at Bell Labs and in 1969 there were a group of people who had just finished working on the multics project which was itself falling on to CTS s so we can go back sort of an infinite regress in time but the CTS s was a very very very nice time sharing system was very nice to use.
the idea of time sharing was that you take basically that same computer but connect to it with something that looked like an electric typewriter they could be a long distance away it could be closed but fundamentally what the operating system did was to give each person who was connected to it and wanting to do something a small slice of time on to do a particular job
Multics was meant to be the system that would do everything that C TSS did but do it better for a larger population that's all the usual stuff
Bell Labs realizing this wasn't going anywhere on a time scale they cared about pulled out his project and this left several people with an acquired taste for really really nice computing environments but no computing environment
this famous story that his wife went away to California for three weeks taking their one-year-old son and three weeks and he sat down and wrote an operating system which ultimately became Unix
Ken Thompson who did that first one is kind of the singularity in my experience of programmers with no disrespect to you or even to me he's gonna die several leagues removed
I think one aspect the fundamental philosophy was to provide an environment that made it easy to write her easier productive to write program so as men as a programmer environment
it absolutely was not open source it was very definitely proprietary licensed but it was licensed freely to universities in source code form for many years
I think part of the reason for efficiency was that it began on extremely modest hardware very very very tiny and so you couldn't get carried away you couldn't do a lot of complicated things because you just didn't have the resources either processor speed or memory and so that enforced a certain minimal 'ti of mechanisms and maybe a search for generalizations
programming itself is fun it's puzzle solving in a variety of ways but I think it's even more fun when you do something that somebody else then uses even if they whine about it not working the fact that they used it is as part of the reward mechanism
Concepts
Themes
- Innovation and the genesis of foundational technologies
- The evolution of computing paradigms
- The role of collaborative environments in scientific breakthroughs
- Design philosophy in software engineering (simplicity, generalization)
- The interplay of hardware constraints and software design
- The human element and individual genius in technological development
- The accidental or serendipitous nature of technological success
Related to:
Technology Insights
Key Figures
- Brian Kernighan
- Ken Thompson
- Dennis Ritchie
- Fernando Corbató
- Bill Joy
- Richard Stallman
- Linus Torvalds
Programming Languages Mentioned
- C
- AWK
- AMPL
- Go
- Assembly
Operating Systems Mentioned
- UNIX
- Multics
- CTSS
- Linux
- Plan 9
Institutions Mentioned
- Princeton University
- Bell Labs
- MIT
- General Electric
- Digital Equipment Corporation (DEC)
- Xerox PARC
Hardware Mentioned
- IBM 7094
- PDP-7
Design Principles
- Simplicity
- Generalization
- Programmer productivity
- Short feedback loops
- Efficiency through constraint