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.