A big, heavy Unix book by Brian W. Kernighan and Rob Pike. It is not a reference manual or a tutorial; its main purpose is to express the Unix philosophy. Topics include shell programming, filters, programming with standard I/O, Unix system calls, program development and document preparation. Some of the material is dated; for example, the C code is not ANSI C. Nevertheless this is a classic book for understanding how to use Unix effectively.

The book isn't physically heavy, but, like K&R, looms large in the list of books any serious programmer of a certain class of systems must possess.

Unlike K&R, however, it is not a reference. (The UNIX systems have evolved and diverged just enough to make any one reference work either inapplicable to some of them, extremely heavy, or both.) It is a text on how to make use of the standard UNIX tools, which are largely unchanged over time and flavor, to create programs both trivial and nontrivial.

It emphasizes the software toolkit methodology and presents the shell as a viable programming language once you have added in all of the other tools the system shipped with. It doesn't get to C until later, and, as has been said, the C it uses isn't modern C.

However, it introduces yacc alongside C and, as the final example of the book, takes a step-by-step tour of how to make your own interpreted language. The text shows explicitly how to craft a language roughly on par with an early BASIC dialect (albeit sans line numbers and with a C-like syntax), but any interested and competent programmer should be able to extend the design into something more workable. Turing-completeness has never been so much fun!

UNIX was a system created by a small group of people. It places value on small tools that can be completely grokked by a single mind, and such tools are used and created in this book. "The Unix Programming Environment" teaches the UNIX design philosophies by example, and it teaches them well.

Learn from it, grasshopper.

Log in or register to write something here or to contact authors.