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.