
Ask HN: What are some of the best written programming books? - ishanr
I recently read Russ Olsen&#x27;s Eloquent Ruby and I loved it.<p>It is incredibly readable; the code and the stories mixing amazingly with real world examples and what not.<p>What are some of yours?
======
trequartista
Some love for - The C Programming Language - Kerninghan & Ritchie -

[http://www.amazon.com/The-Programming-Language-Brian-
Kernigh...](http://www.amazon.com/The-Programming-Language-Brian-
Kernighan/dp/0131103628)

~~~
theGREENsuit
I have this book at home, have read it and although it covers a lot in a short
volume, I didn't get out of it as much as I did out of C Programming: A Modern
Approach by KN King. Once I bought King's book, C made a lot more sense, the
book was fun to read and follow. K&R's book was, to me, less "how & why" but
more "how". Pointers, in particular, is what I enjoyed more in King's book.
That chapter alone made buying the book worth its money.

------
cfeduke
Any book written by Charles Petzold is an enjoyable read, though particularly
the non-MS specific titles Code and The Annotated Turing.

Java Concurrency in Practice (2006) is older but relevant and clearly
describes concurrency on the JVM. A must read for any Java, Scala, Clojure,
etc. software engineer; well-written, enjoyable, concise.

Practical Object Oriented Design in Ruby by Sandi Metz is a fun read packed
with good principles for working in Ruby that are applicable in general to
object oriented programming.

Smalltalk Best Practice Patterns by Kent Beck is worth a read because the
general principles are applicable to any OOP language.

Clean Code by Robert Martin is excellent but a time commitment. (If you had to
pick between SICP and Clean Code because time is at a premium I'd err on the
side of Clean Code for practicality. Writing maintainable code is paramount.)

The Joy of Clojure (Fogus/Houser) is excellent and mentally digestable even if
you have no Lisp or Clojure background.

~~~
why-el
I second this recommendation. "Code" is a very enjoyable read indeed.

------
cjpa
The Little Schemer By Daniel P. Friedman and Matthias Felleisen -
[https://mitpress.mit.edu/index.php?q=books/little-
schemer](https://mitpress.mit.edu/index.php?q=books/little-schemer)

Why's poignant guide to Ruby - [http://mislav.uniqpath.com/poignant-
guide/book/](http://mislav.uniqpath.com/poignant-guide/book/)

------
sebg
SICP (Structure and Interpretation of Computer Programs) -
[https://mitpress.mit.edu/sicp/full-text/book/book-
Z-H-4.html...](https://mitpress.mit.edu/sicp/full-text/book/book-
Z-H-4.html#%_toc_start) (free version)

~~~
talles
When talking about the very best books of our area, this is first one that
always pop in my mind.

Uncle bob have put beautifully here (5th paragraph):
[http://thecleancoder.blogspot.com.br/2010/08/why-
clojure.htm...](http://thecleancoder.blogspot.com.br/2010/08/why-clojure.html)

------
abecedarius
Knuth: he's an excellent writer with a sense of humor.

Anything coauthored by Kernighan is a good bet, though the material is not
quite so ageless. Similar remarks for P.J. Plauger.

Norvig doesn't just write exquisite code, but good prose too.

I always liked Abelson & Sussman's style, even though it's more textbookish.
Abelson also co-wrote Turtle Geometry, which is almost unknown these days and
still eye-opening. (It's more of a math book than a programming one, but its
point is to be both.)

Daniel Hillis: The Pattern on the Stone, The Connection Machine.

Richard O'Keefe, The Craft of Prolog.

Jon Bentley.

I remember pg's On Lisp as good.

------
Sukotto
Programming Pearls: Jon Bentley

The Pragmatic Programmer: Hunt and Thomas

The C Programming Language: Kernighan and Ritchie

~~~
brg
Seconding Programming Pearls by Jon Bentley. Although a bit dated, I reread
this book for its insight in to problem solving. It is a great primer for
programming problem interviews.

------
a_bonobo
Check out the Stealing The Network series if you're into security -

it's a bunch of short stories about network security usually written from the
POV of a hacker who's trying to gain access to a system. The stories are very
tech-heavy to the point that parts of the stories are non-fiction, with huge
excerpts from console sessions and the like.

------
jaryd
Might be an unpopular language but "Learning Perl" was pretty helpful for me
when I was coming up.

~~~
SwellJoe
_Learning Perl_ is an excellent book. It's one of the reasons I still consider
Perl a pretty good teaching and learning language, despite it's bad reputation
among some programmers. All of the big O'Reilly books for Perl are truly
excellent, in fact, and a big part of why O'Reilly developed such a reputation
for excellence (which, I think, has faded somewhat in the past decade or
so...at least for me...I don't tend to automatically choose the O'Reilly
title, anymore, whereas that used to be what I always picked up first).

------
mdm_
My favorite is Javascript: The Good Parts by Douglas Crockford. It's clear,
concise, the railroad diagrams are super helpful, and from what I've seen of
Crockford's lectures on YouTube, it also really captures his voice.

------
S4M
My favorite one is Paradigms or Artificial Intelligence Programming:
[http://norvig.com/paip.html](http://norvig.com/paip.html)

------
justincormack
Programming in Lua by Roberto Ierusalimschy is one of the best introductions
to any programming language. Hw writes the new version along with each
language release now, on the grounds that if you cannot explain it right then
the language feature probably needs fixing.

~~~
Arnt
That was one of the rules for the Qt documentation too, back when I worked on
it. It's a great rule.

------
itg
I really enjoyed Land of Lisp [http://landoflisp.com](http://landoflisp.com)

------
blackle
Operating Systems: Design and Implementation - Andrew S. Tanenbaum

Always a good one when you want to brush up on arcane knowledge.

------
numeromancer
I like The Little Book of Semaphores:
[http://greenteapress.com/semaphores/](http://greenteapress.com/semaphores/)

------
henesy
Common Lisp: A Gentle Introduction to Symbolic Computation by David S.
Touretzky is solid for learning the fundamentals of thinking in and writing
lisp.

[http://www.cs.cmu.edu/~dst/LispBook/](http://www.cs.cmu.edu/~dst/LispBook/)

Bump for the K&R as well, great book, helped me get my feet wet with C quickly
and effectively.

------
justin66
Michael Kerrisk's _The Linux Programming Interface_ is truly great.

------
idlemind
My favourites are more about the general craft of software development than
specifics e.g.

The Pragmatic Programmer: Hunt and Thomas

The Mythical Man Month: Frederick Brooks

~~~
a_bonobo
You may also enjoy Glass' Facts and Fallacies of Software Engineering, it's
similar to Mythical Man Month (and cites it and overlaps in parts) but the
focus is a bit wider, with many small essays on a particular problem in
programming or management of programmers

------
mavelikara
Functional Programing in Scala
([http://www.manning.com/bjarnason/](http://www.manning.com/bjarnason/))

More recent than most books mentioned here, but I found it remarkably well-
written. Irrespective of what happens to Scala, this book has a good chance to
be useful 10 years from now.

------
lurdawg
Computer Systems: A Programmer's Perspective by Randal E. Bryant, David R.
O'Hallaron

[http://www.amazon.com/Computer-Systems-Programmers-
Perspecti...](http://www.amazon.com/Computer-Systems-Programmers-Perspective-
Edition/dp/013409266X)

------
more_original
"Effective Java" by Joshua Bloch is very good.

------
jjmanton
I really enjoy the Big Nerd Ranch books, although I am a bit biased because
they sign my paychecks.

~~~
kelukelugames
I love the one for iOS development. It's perfect even for people new to
programming. Will you ever re-write the Andriod version to be just as beginner
friendly? I would love to hand it off to my girlfriend so she can learn how to
do apps. Right now it is harder to grok than the iOS one.

------
agumonkey
A curated PLT (Programming language theory) list :
[http://steshaw.org/plt/](http://steshaw.org/plt/)

A Github hosted list of free programming books (merging SO and other sources):
[https://github.com/vhf/free-programming-
books/blob/master/fr...](https://github.com/vhf/free-programming-
books/blob/master/free-programming-books.md)

------
cosmolev
It's not even published yet, but based on the 7 of 11 chapters available I can
say the book gonna be really fundamental.

Designing Data-Intensive Applications

The Big Ideas Behind Reliable, Scalable, and Maintainable Systems

By Martin Kleppmann

[http://shop.oreilly.com/product/0636920032175.do](http://shop.oreilly.com/product/0636920032175.do)

[http://dataintensive.net/](http://dataintensive.net/)

The author has great sense of humor.

------
sebastianconcpt
A remarkable classic [http://www.amazon.com/Design-Patterns-Elements-Reusable-
Obje...](http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-
Oriented/dp/0201633612)

And Kent Beck's [http://www.amazon.com/Smalltalk-Best-Practice-Patterns-
Kent/...](http://www.amazon.com/Smalltalk-Best-Practice-Patterns-
Kent/dp/013476904X)

------
sanoli
This gem is too often left out:

How to Design Programs - An Introduction to Programming and Computing

[http://www.htdp.org/](http://www.htdp.org/)

------
jrw
In addition to those already mentioned:

\- Stevens: Advanced Programming in the Unix Environment

and more recently,

\- Kerrisk: The Linux Programming Interface.

Also, almost anything by Kernighan (with several different co-authors).

------
macintux
For both entertainment value and incisive exploration of dark corners in the
language, "Expert C Programming: Deep C Secrets" is a fantastic book.

------
burncycle
Accelerated C++ by Andrew Koenig and Barbara Moo
([http://www.amazon.com/Accelerated-C-Practical-Programming-
Ex...](http://www.amazon.com/Accelerated-C-Practical-Programming-
Example/dp/020170353X)). One of the best introductory programming books, and
one of the best introductory books in general, that I've ever read.

------
vollmond
Clean Code -- Robert C. Martin

------
akbar_R
Taming text [http://www.amazon.com/Taming-Text-Find-Organize-
Manipulate/d...](http://www.amazon.com/Taming-Text-Find-Organize-
Manipulate/dp/193398838X) Natural Language Processing with Python
[http://www.nltk.org/book/](http://www.nltk.org/book/)

------
pels
C# in Depth by Jon Skeet is amazing and is great to brush up your C# skills! A
word of warning though: it's excellent for developers with experience in .NET,
but does not serve as an introduction to the language/framework. The knowledge
is not easily applicable to other languages either. That aside - it is still
the best programming book I've read thus far.

------
rubiquity
Eloquent Ruby is one of my favorite books, too. That book really motivated me
to learn how programming languages work. Here are a few other books I found to
be enjoyable and well-written:

Programming Erlang by Joe Armstrong

Programming Elixir by Dave Thomas

Seven (more) Languages In Seven Weeks by Bruce Tate

Think Bayes, Think OS, How To Think Like A Functional Programmer (Think OCaml)
and The Little Book of Semaphores by Allen B. Downey

------
dtamhk
Higher-Order Perl [http://hop.perl.plover.com/](http://hop.perl.plover.com/)

------
deepaksurti
The Elements of Computing Systems:
[http://www.nand2tetris.org](http://www.nand2tetris.org). A great, fun, do it
yourself projects with subtle hints to move forward. Helps you lay a good
foundation for programming.

Helped me a lot when I ventured into 3D graphics and game programming.

------
joshvm
Code by Charles Petzold

Not so much programming, but very good if you're interested in how your
computer actually works.

------
tswartz
Geek Sublime by Vikram Chandra. The connections between the worlds of art and
technology.

[http://www.amazon.com/Geek-Sublime-The-Beauty-
Code/dp/155597...](http://www.amazon.com/Geek-Sublime-The-Beauty-
Code/dp/1555976859)

------
Galanwe
"Large Scale C++ Software Design" by John Lakos

This book made me understand that writing software is not just about creating
opaque binaries with _stuff_ inside. It's also about what does this binary
depends on, which symbols does it exports, how is it built, etc.

------
alphaBetaGamma
While on this subject, would anybody recommend a book in french? It would be
for my nephew who is quite smart, high-school age, and knows java an python. I
would like to expose him to something different: lisp, or functional
programming.

~~~
kod
[http://pagesperso-
systeme.lip6.fr/Christian.Queinnec/WWW/LiS...](http://pagesperso-
systeme.lip6.fr/Christian.Queinnec/WWW/LiSP.html)

Might be jumping in at the deep end if he's never seen lisp before, but it was
originally published in french...

------
sayems
Thinking in Java, Java Generics and Collection, Head First Design Patterns

------
hacym
Any suggestions on theory books (not exclusively on a language) that isn't too
dense? Not looking for a textbook, but something that is a lighter read that
can help me with the logical parts of programming.

------
mattsaintdev
Fortran/ClearWin+ simple and to the point

[http://www.silverfrost.com/manuals/clearwin.pdf](http://www.silverfrost.com/manuals/clearwin.pdf)

------
hbharadwaj
Eloquent JavaScript by Written by Marijn Haverbeke

------
jrochkind1
Design Patterns: Elements of Reusable Object-Oriented Software
[http://www.amazon.com/Design-Patterns-Elements-Reusable-
Obje...](http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-
Oriented/dp/0201633612/)

Practical Object-Oriented Design in Ruby by Sandi Metz.
[http://www.poodr.com/](http://www.poodr.com/)

~~~
talles
Maybe it's a matter of taste, but I found the GoF book really boring (and a
little _self hyped_ TBH).

~~~
kat
If you want a good alternative to the GoF book try Head First Design Patterns.
I findit much more approachable and much more enjoyable to read.
[http://www.amazon.com/Head-First-Design-Patterns-Freeman-
ebo...](http://www.amazon.com/Head-First-Design-Patterns-Freeman-
ebook/dp/B00AA36RZY)

------
jashkenas
Yo progg'n books — I'm really happy for you, I'll let you finish, but The
Poignant Guide is one of the best books on programming of all time. One of the
best of all time!

[http://mislav.uniqpath.com/poignant-
guide/book/chapter-1.htm...](http://mislav.uniqpath.com/poignant-
guide/book/chapter-1.html)

------
revskill
The Design Patterns book

------
HugoDaniel
Parallel and Concurrent Programming in Haskell By Simon Marlow

------
slvn
the d programming language by andrei alexandrescu (ISBN-13: 978-0321635365)

------
desbest
C in Easy Steps

