The Art of Unix Programming *
Raymond, Eric S.
Addison-Wesley 2003
ISBN 0-13-142901-9
525pp
Date finished: 2003-12-22
[Buy this book] (why?)
Raymond's book attempts to explain the principles of good Unix-style programming circa 2003, and overall it succeeds very well. It discusses the Unix tradition of small programs that perform a single task, the panopoly of available languages and when to use each one, different IPC techniques, and a survey of development tools such as make. Some parts, such as the discussion of configuration, are so detailed that they're boring, but the more general discussions of application design are addictively fascinating, and I cheered the suggestions to use higher-level languages and to avoid threads. However, nothing in the book really turned my head upside down; the closest was the mention of SNG, which converts PNG files to and from an editable text format. It's an absurdly simple yet useful idea that I haven't seen before.
What are the book's faults? Most of them are relatively minor points, especially given that there's no other recent book that covers the same topic.
- In spots there's too much history. Chapter 2 is a thirty-page history of Unix from its invention through the corporate battles of the 1980s and the winnowing of the 1990s thanks to the open-source Unix variants, and later on the chapter on portability discusses the parade of Unix standardization groups that concluded with POSIX. I don't really think anyone should really care about the fact that Uniforum, Ultrix, or NeWS once existed, whatever their influence has been.
- The largest omission from the case studies is Daniel Bernstein's software, which is a model of how to design systems that reinvent nothing they don't need to (consider daemontools, or tinydns's approach of having a userspace program parse the configuration files so that the server process has no extraneous code. I'd love to see Bernstein write a similar book, as his uncompromising approach would be more likely to point out new ways of tackling problems
- There are occasional splashes of self-congratulation or silly assertion. My favorite silly assertion is a mention that "Commercial Unix distributions that have [removed] the BUGS section or euphemizing it ... have invariably fallen into decline."
Still, this book is definitely worth reading for anyone trying to build applications on Unix.