Jim's Programming Book List

C Programming

Kernighan and Ritchie, The C Programming Language, Second Edition
This is the classic introduction to C programming. If you use the language at all, you are going to have this book on your shelf some day, so you might as well get this as your first book. Get a different introductory book only if you absolutely need to.
Harbison and Steele, C: A Reference Manual, Fourth Edition
Sort of an expansion of the reference manual in the appendix of Kernighan and Ritchie. A good intermediate between the introductory sections of K&R and the full-blown standard. Good exposition of the standard C library together with a documentation of the ``traditional'' library.
Plauger, Standard C
I don't have this one yet, but Plauger was central to the development of the ANSI C standard, and also did an excellent job with...
Plauger, The Standard C Library
A complete reproduction of the C Standard Library document, together with discussions on history, rationale, usage, and a complete implementation in C. Even if you don't care about how the standard library is implemented (you should), it's always good to study a well-documented large software system in C.
Summit, C Programming FAQs
Although much of it is geared toward deprogramming users of Microsoft tools, it has a lot of good stuff. Often a better way of accessing material if you have a specific question but don't know how to approach the reference material.
Schildt, The Annotated ANSI C Standard
WARNING: The annotations are so bad that the book can be quite harmful without applying Clive Feather's critique. A cheap source of the text of the ANSI C standard (which has since been superseded by the mostly-identical ISO C standard), if you don't mind the missing pages and occasional typos. If I had it to do over again, I'd just buy the standard document, but applying all of Feather's criticisms was educational in itself. Don't get any other Schildt books, though.

UNIX Programming

Kernighan and Pike, The UNIX Programming Environment
This book is for UNIX what K&R is for C. If you learn all of the material in chapter 8 you will be an above-average UNIX programmer.
Lewine, POSIX Programmer's Guide
Look here before the manual for your particular system. Vendor's don't differentiate between their gratuitious extensions and portable practices.
UNIX Research System, Tenth Edition
The reference for the last of the Research UNIX releases from Bell Labs, the one true source of it all. Good collection of some updated supplementary documents.

Network Programming

Comer, Internetworking with TCP/IP
A good programmer's introduction to the Internet.
Stevens, UNIX Network Programming, Second Edition
After you've read Comer as an introduction, Stevens gives the nuts and bolts for practical network programming in the UNIX environment.

General Programming

Kernighan and Pike, The Practice of Programming
K&P do it again. Even experienced programmers will learn something from this book. Gives C, C++, and Java examples while general discussing programming issues.
Richard Gabriel, Patterns of Software
The ``software patterns'' movement has become as big a buzzword-laden bandwagon as ``object-oriented X''. Gabriel, one of the first to bring Alexander's Pattern Language ideas to software, is able to point out the strengths and weaknesses of many different approaches to programming, including an insightful critique of ``abstraction'' as an end-all, be-all of software design.