* SICP, by Abelson and Sussman
* Lisp (3rd ed), by Winston and Horn
* The Art of Prolog, by Sterling and Shapiro
It's like the same book written by different authors, and all of them are good.
* SICP, by Abelson and Sussman
* Lisp (3rd ed), by Winston and Horn
* The Art of Prolog, by Sterling and Shapiro
It's like the same book written by different authors, and all of them are good.
Though, really, a lot of what it covers is much more common knowledge now than it was when I first read it. High-order functions and functions-as-first-class-citizens (ch1) are ubiquitous and most programmers I know are comfortable with them (which wasn't the case in the early 2000s, at least in my circle). Lists, maps, pairs, and symbolic structures are covered in ch2, but most people are comfortable thinking in such terms now. Ch3 covers handling state, and I think there are good ideas in that chapter that still haven't been broadly disseminated.
But where the book really shines is the last 2 chapters - I haven't seen much of those ideas (virtual register machine and writing a compiler for it) covered elsewhere. It's still a great way to get exposed to some fundamentals of computing from a pure software environment. But I think you could be quite a capable programmer without ever doing that.
Yes, its a book that uses lisp, but its not a lisp book. Its about programming techniques, i felt.
Of all the books that are usually recommended to be read and nobody actually does, this is the one that i actually read and liked.
I don't think you can have a good software education, in the sense of having a complete one, without studying LISP. It's a foundational paradigm of programming. It's kind of like studying physics and skipping Maxwell's equations, paraphrasing Alan Kay.
https://www.gnu.org/software/mes/manual/html_node/LISP-as-Ma...
So if you already have a solid CS education it's not really necessary, except maybe for the enjoyment of reading a really well thought through pedagogical work. Which can sometimes help coalesce concepts and the connections between them.