The Practice of Programming

%A Brian W. Kernighan
%A Rob Pike
%T The Practice of Programming
%D February 1999
%G ISBN 0-201-61586-X
%I Addison-Wesley, Inc.
%P 267 + xii pp

Kernighan is coauthor of "The C Programming Language" book. He's also coauthor of "The AWK Programming Language" and "The UNIX Programming Environment" (this last one also with Rob Pike). Kernighan also wrote some influential books on programming style with P.J. Plauger. He also authored an interesting language comparison paper with Chris Van Wyk

Rob Pike is well known for his controversial "Notes on Programming in C" and for his work on the Newsqueak language and on the Plan9 Operating System. I also liked his "Systems Software Research is Irrelevant" presentation.

This book is oriented towards programmers that already know how to code in one or more languages and tells them about all those areas that a good programmer needs to know, but that are rarely covered in other books. The chapters of the book are style, algorithms and data structures, interfaces, debugging, testing, performance, portability and notation. Really good stuff. Bound to improve you as programmer, no matter your background or experience.

If you want to compare the book to something else, I'd say at times the book feels like a more concise version of McConnell's "Code Complete", but with far less drawings and much more emphasis on working code. It also has some overlap with Jon Bentley's "Programming Pearls", but Bentley's book, being a collection of essays, is more like a whirlwind tour, while tpop has more structure.

The source code for the book is available online. The code is in C, C++, Java, Awk, TCL and Perl. I have to say that in their hands C actually looks elegant!