The guest contributors (Ken Arnold, Steven M. Bellovin, Stuart
Feldman, Jim Gettys, Steve Johnson, Brian Kernighan, David Korn, Mike
Lesk, Doug McIlroy, Marshall Kirk McKusick, Keith Packard, Henry
Spencer, and Ken Thompson) added a great deal of value to this
book. Doug McIlroy, in particular, went far beyond the call of duty in
the thoroughness of his critique and the depth of his contributions,
displaying the same care and dedication to excellence which he brought
to managing the original Unix research group thirty years ago.
Special thanks go to Rob Landley and to my wife Catherine
Raymond, both of whom delivered intensive line-by-line critiques of
manuscript drafts. Rob's insightful and attentive commentary actually
inspired more than one entire chapter in the final manuscript, and he
had a lot to do with its present organization and range; if he had
written all the text he pushed me to improve, I would have to call him
a co-author. Cathy was my test audience representing non-technical
readers; to the extent this book is accessible to people who aren't
already programmers, that's largely her doing.
This book benefited from discussions with many other people over
the five years it took me to write it. Mark M. Miller helped me
achieve enlightenment about threads. John Cowan supplied some insights
about interface design patterns and drafted the case studies of
wily and VM/CMS, and Jef Raskin showed me
where the Rule of Least Surprise comes from. The UIUC System
Architecture Group contributed useful feedback on early chapters. The
sections on What Unix Gets Wrong and
Flexibility in Depth were directly inspired by
their review. Russell J. Nelson contributed the material on Bernstein
chaining in Chapter7.
Jay Maynard contributed most of the material in the MVS case study in
Chapter3. Les Hatton provided many helpful
comments on the Languages chapter and motivated
the portion of Chapter4
on Optimal Module Size. David A. Wheeler
contributed many perceptive criticisms and some case-study material,
especially in the Design part. Russ Cox helped develop the survey of
Plan 9. Dennis Ritchie corrected me on some historical points about
C.
Hundreds of Unix programmers, far too many to list here,
contributed advice and comments during the book's public review period
between January and June of 2003. As always, I found the process of
open peer review over the Web both intensely challenging and intensely
rewarding. Also as always, responsibility for any errors in the
resulting work remains my own.
The expository style and some of the concerns of this book have
been influenced by the design patterns movement; indeed, I flirted with the
idea of titling the book Unix Design
Patterns. I didn't, because I disagree with some of the
implicit central dogmas of the movement and don't feel the need to use
all its formal apparatus or accept its cultural baggage. Nevertheless,
my approach has certainly been influenced by Christopher Alexander's
work[3] (especially
The Timeless Way of Building and A
Pattern Language), and I owe the Gang of Four and other
members of their school a large debt of gratitude for showing me how
it is possible to use Alexander's insights to talk about software
design at a high level without merely uttering vague and useless
generalities. Interested readers should see Design
Patterns: Elements of Reusable Object-Oriented Software
[GangOfFour] for an introduction to design
patterns.
The title of this book is, of course, a reference to Donald
Knuth's The Art of Computer Programming. While not
specifically associated with the Unix tradition, Knuth has been an
influence on us all.
Editors with vision and imagination aren't as common as they
should be. Mark Taub is one; he saw merit in a stalled project and
skillfully nudged me into finishing it. Copy editors with a good ear
for prose style and enough ability to improve writing that isn't like
theirs are even less common, but Mary Lou Nohr makes that grade. Jerry
Votta seized on my concept for the cover and made it look better than I
had imagined. The whole crew at Addison-Wesley gets high marks for
making the editorial and production process as painless as possible,
and for cheerfully accommodating my control-freak tendencies not just
over the text but deep into the details of the book's visual design,
art, and marketing.