There’s a reason this book is still required reading decades after it was written. K&R doesn’t waste your time. Every page earns its place.
What strikes you immediately is the density — not in a painful way, but in the way that good technical writing should be dense. You feel like you’re reading notes from people who genuinely understood what they were building and why.
The exercises are still worth doing. Not because they teach you syntax — you’ll pick that up fast — but because they force you to think about how memory works, how the machine underneath C actually behaves. There’s something almost meditative about implementing strcat from scratch and finally understanding why C strings are the way they are.
If you’re coming from a higher-level language, this book will feel foreign at first. That foreignness is the point. C is close to the metal in a way that reshapes how you think about software. After K&R, you’ll never look at a string the same way again.
I’ve re-read sections of this multiple times. It’s not a book you read once.
What I took away: A cleaner mental model of memory, a deep respect for simplicity in language design, and the habit of actually thinking about what the machine is doing.