Book shelf suggestions


#1

Hi all,

I’m brand new to the low level programming scene and was hoping the community could suggestion some of the “Must Have” books for someone who wants to learn and will learn systems programming.

Thanks in advance,
Jeramy


#2

It depends a lot on what kind of low-level programming you are interested in. For my background (OSdeving + scientific computing), three useful books were:

  • Modern Operating Systems, by Andrew S. Tanenbaum (a general tour of what an operating system does under the hood)
  • Structured Computer Organization, same author (a general tour of the kind of hardware that one can find in a computer, was rather specific to x86 PCs at the time I read it but newer editions may have followed the modern trend towards more embedded hardware coverage)
  • Computer Architecture: A quantitative approach, by John L. Hennessy and DA. Patterson (a bit more specialized towards number-crunching hardware and its performance, proved very useful when learning about performance optimization)

#3

If you’ve not read Knuth’s The Art Of Computer Programming, it might also be a good suggestion. Knuth even invented an assembly language to be able to count the number of operations.

I might sound lame, but the Rust Book, plus practice, will make you a great low-level engineer. Rust makes it safe and easy to play with Linux system calls.


#4

Wow, The Art of Computer programming is almost $190 on Amazon!


#5

Art of Computer Programming is a classic but I wouldn’t put say it is a must read for system developers. It is an extremely detailed and in depth look at parts of theoretical computer science and the mathematical proof behind it. I only read Vol 1 and I enjoyed it but I think there are better books on the same subject. I’d recommend Cormen’s Algorithm’s before I’d recommend Art of Computer Programming Vol 1. It doesn’t go to near the depth that AOCP does, but most people don’t need near that depth.

I’m going to second the recommendation of Hennessy and Patterson. Its well written, detailed, interesting and extremely useful for systems programmers. Having a solid understanding of branch prediction, CPU caches, virtual memory etc ends up being much more important for system develop than it is for other fields.

It isn’t a book but its still a great read, I’d suggest Ulrich Drepper’s “What Every Programmer Should Know About Memory”


#6

For a programmer, Computer Systems: A Programmer’s Perspective (3rd Edition) is exactly what you need. You get to learn the hardware knowledge a programmer needs, and how your software interacts with those hardware.
It is also one of the best books in terms of clarity, and a real joy to read.


#7

I just received Computer Systems: A Programmer’s Perspective (3rd Edition) in the mail yesterday. This book is amazing. Thanks for the suggestion!