Wizard Book: Structure and Interpretation of Computer Programs
One of the best book in computer science 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.
i read the first 3 chapters of SICP (out of a total of 5) in 1998. It was 1 of the best programing related 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 1k 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.
i think there's a version of it for elisp and clojure too. and i think python too.
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.
Book is free online At https://mitpress.mit.edu/sicp/
There are also free online course taught by the authors.
[Structure and Interpretation of Computer Programs Video Lectures By Hal Abelson And Gerald Jay Sussman. At http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/ , accessed on 2015-06-10 ]
There's also a open source by MIT, At http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/
See also: Why You Should Avoid the Jargon Tail Recursion