Programming book recommendations. - Programming On Unix
  • What books or web resources do you recommend for programming in general?
  • What books or web resources do you recommend for programming in Unix?

If you have some recommendation, please post a short personal review of the book.
For programming in Unix, Eric Raymond's _The Art of Unix Programming_ is essential. While it has its flaws, this book does a good job describing the philosophy and typical architectures of Unix programs. I particularly liked his discussion of various data file formats.

If you're on Linux, another essential book is Kerrisk's _The Linux Programming Interface_. In-depth explanation of the APIs and examples of how to use them.

A quirky but personal favorite on programming in general is P.J. Plauger's _Programming On Purpose_. It's an OLD book from the days of structured programming and is focused mainly on data transforms a la data flow diagrams (DFD's). I've found it to be a useful way to think about shell pipelines, but also how to structure a traditional program consisting of a main module and subroutines. His bit about lifting up one of the bubbles from the DFD and letting the other bubbles fall below it as its subroutines has always stuck with me -- along with his analysis of how which bubble you choose affects program structure.

(By the way, I highly recommend learning something about those old structured design techniques and DFD's in particular. It will shed a lot of light on Unix's pipes-and-filters model -- and also, oddly enough, prepare you for the more esoteric world of functional programming.)

Ousterhout's new book _A Philosophy of Software Design_ is also good, although I didn't find every chapter as useful as others. A little too object-oriented for my taste. But excellent advice on modular design.
D'oh! How could I list Kerrisk and not Stevens and Rago's _Advanced Programming in the UNIX Environment_?!? Similar content as Kerrisk but not Linux-centric.
Regarding online web links there would be way too many.

While not all are books per say, my all time favorites, that I can remember, are:
Other than that I got the following computer-related physical books:
  • Clean Architecture - Robert Martin
  • The clean coder: A code of conduct for professional programmers - Robert Martin
  • Software Architecture in Practice 3rd edition
  • Building evolutionary architectures - Neal Ford
  • Domain-Driven Design - Eric Evans - Currently reading, almost done
  • Beyond software architecture: Hohmann
  • Computer Architecture: A Quantitative approach - Hennesy Patterson
  • Compilers - Aho Lam Seth Ullman
  • Operating system concepts - Silberschatz
  • Algorithms: Sedgewick
But Ulrich Drepper is wrong about static vs. dynamic linking.
I side with the folks on that issue.
The Art of Unix Programming is, undoubtedly, required. It tells a lot about the Unix way and is still relevant today. Actually, one day I wrote a composition in English about this book at school (which is Russian) and got a really good mark for it haha.

Elegant Objects by Yegor Bugaenko is an eye-opening book about OOP. It's quite fun.

The best learning resource is, of course, documentation. Whenever I'm learning something new, I jump to documentation as soon as I'm done with those tutorial articles.
Do you guys know good books for programming in Xlib?
There don't seem to be many books on Xlib. The only one I have myself is Adrian Nye's 1994 "Xlib Programming Manual" for X11R5. As far as I know that book was never updated for X11R6.

If you want to program at that low level your best bet might be the online documentation at
I used Chris Tronche documentation a lot while learning XCB (and still do). It helped me with all my XCB projects as well (,,
I like a few of the Lisp books, which aren't very Unixy but are interesting and enjoyable: Touretzky's Gentle Introduction to Symbolic Computation and SICP, and of course the Little Schemer is a lot of fun. It's quite old but the Unix Programming Environment was one I found fascinating, and it got me into Roff which I'm thankful for. All the papers on the cat-v website are good too (I like the face server one)

I'd be interested to be read more about compilers. What are your recommended introductory texts, or is the dragon book the way to go?