Structure and Interpretation of Computer Programs
Harold Abelson, Gerald Jay Sussman, Julie Sussman
A complex, dense, mind blowing book...it is incredible how fast you get used to Lisp syntax
A complex, dense, mind blowing book...it is incredible how fast you get used to Lisp syntax
A book that explains the most common and useful OOP patterns in the context of game programming, but this knowledge goes beyond this context. You can find techniques that give you a better understanding of complex design systems, i.e frameworks.
I know it is not a book, but it is a great collection of lectures and articles about functional programming. Scott Wlaschin demonstrates that functional programming is not more difficult than Object Oriented Programming, it is just unfamiliar.
This book is the bedrock of my approach to programming. Refactoring is the only way to properly design continuously evolving systems. Don't repeat yourself, but still avoid to abstract too early. Let code smells tell you what is the best design pattern to apply.
I've heard that this book is outdated. Not to me. What is clean code? This book gives you a great starting point, and also allows you to further develop your conception of what clean code means. I will always suggest this book to everyone starting programming.