book
Structure and Interpretation of Computer Programs
by Harold Abelson and Gerald Jay Sussman
★★★★★
Visit Resource ↗This book changed how I think about programming. It introduces the concept of data abstraction and metalinguistic abstraction in a way that is both profound and accessible (if you don't mind parentheses).
Key Takeaways
- Abstraction is key: Building complex systems is all about managing complexity through abstraction layers.
- Programs are data: Lisp's homoiconicity is a powerful concept.
(define (factorial n)
(if (= n 0)
1
(* n (factorial (- n 1)))))
A must read for anyone serious about CS.