Code was recommended to me when I was 17 years old, browsing the computer book section in Barnes and Nobles. A man who worked as a full-time Java software developer struck up a conversation with me and asked why I was in this section. Growing up, the computer book section was often vacant. I was to see someone come over actually look for a book on programming. I told him that I was pretty handy in Python but wanted a more in-depth understanding of everything from hardware to software. One day, I wanted to become a software developer, I had said. He took a book off the shelf and looked at it for a moment. Then, he handed it to me, saying, “This is probably the best resource. If you can understand it, it will take you far. Even better, the author breaks everything down to make everything seem simple.”
I read the book. However, after doing so, I took a break from the technology world for a few years. When I decided to come back into the world of self-learning software and hardware engineering, I remembered the book and purchased it on the Google Play Store. That was when I truly grew to appreciate the book.
Often, I find myself recommending this book. Some of the people I have met who want to learn more often ask where to start, especially when debating a career in software or hardware engineering. Code immediately comes out of my mouth. By reading the book, which covers hardware in the first half and software in the last half, readers are able to find what interests them most.
Charles Petzold describes the evolution of the computer in the book. He starts with a wire, battery, and a light build. Then he adds in a switch and delves into Morse code. Continuing, he goes on to talk about punch card machines and looming machines.
Halfway through Code, he begins talking about creating more complicated, yet simple circuits using digital logic. When he began introducing the topic, I started to feel nervous. All the other previous references I had read regarding digital logic left me scratching my head. More importantly, I didn’t see where digital logic tied into the circuits I was seeing. Even though I felt uneasy about delving into digital logic, I powered ahead. I was surprised to find that thanks to Petzold’s explanations, I now had a firm understanding of NOR, XOR, and NAND gates.
Towards the halfway point of the book, Petzold begins to dive into software and where it meets with hardware. The book covers a vast amount of topics in software like such as low and high level programming languages. It even touches on operating systems. All the while, Petzold is telling the reader what is happening all the down to the BUS lines.
By the end of the book, the reader has built a solid foundation of how a computer works at the hardware and software level. To people new to learning anything computer related and those who aren’t professional software developers or computer engineers, the book provides invaluable insight as to how a seemingly magical machine works. There might as well be a real magical gnome living inside the computer making the magic happen by crunching numbers and performing operations at superhuman computational speed. This book strips back that magic and reveals a world that can be easily explained in a way that doesn’t involve a gnome living inside the computer.
The value of this book can best be summarized through a quote in the preface of the book in which Petzold talks about why he wrote it:
“I want Code to be a book that makes you understand these things, not in some abstract way, but with a depth that just might even rival that of Electrical Engineers and Programmers.”
All in all, this book is an indispensable asset to anyone who’s into DIY and self-education wishing to pursue knowledge in the digital world of CPUs, RAM, bits, and bytes.