Book: Structure and Interpretation of Computer Programs (SICP)
One of the best book in computer science is The Structure and Interpretation of Computer Programs by Harold Abelson, Gerald Jay Sussman, Julie Sussman.
The cover features a wizard talking lambda with a witch, with the foot of the table showing.
Should you read SICP?
i read the first 3 chapters of SICP (out of a total of 5) in 1998. It was one of the best programing book i've read. perhaps among top 3. but today (year 2019), i think its value decrease a lot.
Because, first of all, there's ten thousand times more great info on programing or computer science on the web. (for example Wikipedia) Secondly, the landscape changed. There are 20 times more langs and proraming fields with a magnitude more libraries.
The book doesn't teach any practical computing nor actual comp sci.
so shoud you still read it?
i think it's just depends on you. If you do have time to read a programing book that's not exactly a concrete tutorial of something, but more philosophical, it's a good one.
to put in context: for example, if you want to learn haskell, there's lots concrete books. For Scheme Lisp, the official tutorial and doc at Racket Scheme site [https://racket-lang.org/] is pretty good. (SICP doesn't really teach Scheme, also the version used can't readily run. it's i think MIT Scheme.)
if you want to learn theoretical computer science, such as formal languages, automata, algorithms, data structures, computability theory, etc, the SICP doesn't touch any of that.
So what's sicp good for? i think it's like reading essay or novel. It builds your thought about programing. Read it with a cup of tea for pleasure.
Origin of SICP cover art
It's from Le moyen âge et la renaissance (The Middle Ages and the Renaissance) published in 1847, by Paul Lacroix (1806 to 1884) (aka P.L. Jacob, Bibliophile Jacob). (a 5 volume book on the manners, customs and dress of the Renaissance)
(thanks to SICP Cover Demystified by Conor Hoekstra, CppCon 2020)