Concepts, Techniques, and Models of Computer Programming (ISBN 0-262-22069-5) is a big book at 900+ pages, and it covers a lot of ground. I expect it will take about two years to get through it, depending on how many of its exercises I do and how many other books I read at the same time.
It is natural to compare this book to Structure and Interpretation of Computer Programs (SICP) (ISBN 0-262-51087-1). That is the book that I still wish I’d first read in 1981 rather than in 2001. This book is not giving the same aha! moments (maybe just because I have read SICP). This book may in the end be of more practical use than the mind-expansion induced by SICP, if only because this book covers constraint programming, which I will find useful for xmlroff.
Now, the programming concepts book that I really want would be the successor to Lisp in Small Pieces (ISBN 0-521-56247-3), but AFAICT, it hasn’t been finished.
Any comments on ‘Lisp in Small Pieces’ Tony? Not a book I’ve come across, though I’ve read (most of) SICP.
From the web page (http://pagesperso-systeme.lip6.fr/Christian.Queinnec/WWW/LiSP.html) for the book:
This book covers Lisp, Scheme and other related dialects, their interpretation, semantics and compilation. To sum it up in a few figures: 500 pages, 11 chapters, 11 interpreters and 2 compilers.
If you haven’t finished SICP, then you won’t want this book.
If you’re looking for resources for learning Scheme, there’s a list at http://community.schemewiki.org/?category-texts that might help.