TITLE: A Personal Pantheon of Programming Books
AUTHOR: Eugene Wallingford
DATE: April 29, 2016 3:30 PM
DESC:
-----
BODY:
Michael Fogus, in the latest issue of
Read-Eval-Print-λove,
writes:
The book in question was Thinking Forth by Leo Brodie
(Brodie 1987) and upon reading it I immediately put it
into my own "personal pantheon" of influential programming
books (along with SICP, AMOP, Object-Oriented Software
Construction, Smalltalk Best Practice Patterns, and
Programmers Guide to the 1802).
Mr. Fogus has good taste.
Programmers Guide to the 1802
is new to me. I guess I need to read it.
The other five books, though, are in my own pantheon influential
programming books. Some readers may be unfamiliar with these
books or the acronyms, or aware that so many of them are
available free online. Here are a few links and details:
-
Thinking Forth
teaches us how to program in Forth, a concatenative language
in which programs run against a global stack. As Fogus
writes, though, Brodie teaches us so much more. He teaches
a way to think about programs.
- SICP is
Structure and Interpretation of Computer Programs,
hailed by many as the greatest book on computer programming
ever written. I am sympathetic to this claim.
- AMOP is
The Art of the Metaobject Protocol,
a gem of a book that far too few programmers know about.
It presents a very different and more general kind of OOP
than most people learn, the kind possible in a language like
Common Lisp. I don't know of an authorized online version
of this book, but there is
an HTML copy
available.
-
Object-Oriented Software Construction
is Bertrand Meyer's opus on OOP. It did not affect me as
deeply as the other books on this list, but it presents the
most complete, internally consistent software engineering
philosophy of OOP that I know of. Again, there seems to be
an unauthorized version
online.
- I love Smalltalk Best Practice Patterns and have
mentioned it a couple of times over the years [
1
|
2
]. Ounce for ounce, it contains more practical wisdom for
programming in the trenches than any book I've read. Don't
let "Smalltalk" in the title fool you; this book will help
you become a better programmer in almost any language and
any style. I have a PDF of a pre-production draft of SBPP,
and Stephane Ducasse has posted
a free online copy,
with Kent's blessing.
|
There is one book on my own list that Fogus did not mention:
Paradigms of Artificial Intelligence Programming,
by Peter Norvig. It holds perhaps the top position in my
personal pantheon. Subtitled "Case Studies in Common Lisp",
this book teaches Common Lisp, AI programming, software
engineering, and a host of other topics in a classical case
studies fashion. When you finish working through this book,
you are not only a better programmer; you also have working
versions of a dozen classic AI programs and a couple of
language interpreters.
Reading Fogus's paragraph of λove for Thinking
Forth brought to mind how I felt when I discovered
PAIP as a young assistant professor. I once wrote
a short blog entry
praising it. May these paragraphs stand as a greater testimony
of my affection.
I've learned a lot from other books over the years, both books
that would fit well on this list (in particular,
A Programming Language
by Kenneth Iverson) and others that belong on a different list
(say,
Gödel, Escher, Bach
-- an almost incomparable book). But I treasure certain
programming books in a very personal way.
-----