Programming Books that Make You Smarter

These are wonderful books that would help anyone become a better programmer. Most of these are known and loved by a small group of geeks, but are not picked up by a broader audience because of the programming language used in them.

In many cases, however, the message conveyed is not how to program in the given language, but how to look at programming problems from another perspective. Every language needs a different mindset, and I believe that these books make you think in ways you never did before. I would recommend them even if you will never program in these languages.

Some of the books are distributed on the internet for free, I hope the links will stay working.



Common Lisp

(See also Scheme / Lisp for books on other lisps.)


Factor & Forth








Scheme / Lisp

(See also Common Lisp.)


Language-independent Books

Here I list some books that are about programming generally, and do not use any specific language.

My favorites

I love all these books, but there are some I consider exceptional. If I had to choose just a few, the list would go like this…

Elementary books:

  1. Structure and Interpretation of Computer Programs
  2. Starting Forth
  3. The (New) Turing Omnibus

Advanced books:

  1. Programming Pearls (& More Programming Pearls) [requires basic programming skills]
  2. On LISP [requires basic Lisp knowledge]
  3. Pearls of Functional Algorithm Design [requires basic Haskell knowledge]

Books for conoisseurs:

  1. Anatomy of LISP
  2. The Implementation of Functional Programming Languages [requires basic Haskell knowledge]
  3. jonesforth [requires basic Forth knowledge]

So what should I read?

My highly opinionated guide would be something like this:

  • Lisp block:
    1. Structure and Interpretation of Computer Programs
    2. Practical Common Lisp
    3. On LISP
    4. (if you want more => Let Over Lambda, Common Lisp Recipes, Anatomy of LISP / Lisp in Small Pieces)
  • Low-level language block:
    1. The Art of Assembly Language
    2. Starting Forth
    3. jonesforth
    4. Moving Forth
    5. (Factor docs)
  • General block:
    1. The (New) Turing Omnibus
    2. The Algorithm Design Manual (and if you liked it, Introduction to Algorithms)
    3. Programming Pearls (and if you liked it, More Programming Pearls)
    4. Prolog Programming for Artificial Intelligence (or: Artificial Intelligence - A Modern Approach / Paradigms of Artificial Intelligence)
  • OOP block:
    1. Smalltalk, Objects, and Design
    2. Object-Oriented Programming in Common Lisp
    3. The Art of the Metaobject Protocol
  • Haskell block:
    1. Learn You a Haskell for Great Good
    2. Real World Haskell
    3. Pearls of Functional Algorithm Design
    4. (if you want more => The Implementation of Functional Programming Languages, together with An Introduction to Lambda Calculi for Computer Scientists)

(The blocks can be studied in sequence or in parallel.)

Note that all books in bold are free, so you can start learning right away!

Author: Peter Salvi

Created: 2017-08-31 Thu 19:14

Emacs 24.3.1 (Org mode 8.2.4)