Most beginner programming books suck because they suffer from the same problem: they assume previous knowledge.
Read a Python book and the author will use Java to explain Python classes.
Read a Golang book and the author will use C to explain string formatting.
Read a C book and the author will use assembly language to explain data structures.
Why can’t authors just explain a programming language without having to resort to references?
SICP is the only book I’ve found that doesn’t use any references. The first chapter teaches you programming with LISP without assuming that you studied any other language.
The goal of SICP is to teach you programming from scratch and it’s the only book I’ve found so far that reaches that goal.
The only thing I don’t like about SICP is that it’s written by people who only teach programming but don’t do any programming themselves. That’s why the code examples are full of impractical math examples like finding the fixed point of a line.
Who cares about maths when the money is in building CRUD apps to steal people’s information and resell it for massive profits?
We need more books like SICP but written by practitioners.