Harold Abelson and Gerald Jay Sussman wrote Structure and Interpretation of Computer Programs, often called SICP, as the textbook for the introductory MIT computer science course in the 1980s. It became one of the most influential CS books ever written.
The book uses Scheme, a small dialect of Lisp, to teach not just programming but the deeper ideas under it. Recursion, abstraction, building languages inside languages, the relationship between code and data.
This is not a beginner book in the modern sense. It’s intellectually demanding, and many programmers come back to it years into their careers and find new things they couldn’t have understood before.
For self-taught programmers who want a serious foundation, or for working developers who want to deepen their understanding of what programming actually is, SICP still has no real equivalent. The MIT lectures by the authors are also freely available and worth watching alongside.