Book Review - Code: The Hidden...

code

Code: The Hidden Language of Computer Hardware and Software by Charles Petzold is a book that takes you through a journey from the most basic code concepts to building a fully functional mental representation of a computer. It explains the theory and basic components behind all modern computers; as a software developer is important to understand how the tool you use every day works behind the scenes to have a complete big picture representation of how the code you write interacts with it.

Who is it for

Coming from a computer science degree I was familiar with most topics on this book, and although I certainly learned some new things, I think software developers coming from non-formal background will benefit most from the material. Also, if you are not a software developer but want to know how computers work, this book is useful because makes it easy to grasp and understand the concepts without prerequisites.

What is it about

Its main objective is describing in detail how a computer works, what each component does and how they interact together and how data is represented; what makes it easy to follow is that it uses an incremental approach: it begins with the most basic concepts and gradually builds towards a full-blown computer.

The first topic is about describing what is a code. It takes you through codes that have existed for centuries: Morse and braille, how they work and why are they efficient; then, it complements the definition with a couple examples of using non-decimal number systems, building from decimal (10) down to binary (2) which is the basis of the modern computer; after that, it goes on to explain how electricity works and how telegraphs used it to enable long-distance communication. With the basic concepts down, it then continues explaining logic gates, flip-flops, bytes, all the way to a fully functioning computer.

It is especially interesting that it explains core computer science topics like the Von Neumann architecture, which is still used in modern computers, and then relates them with topics that its main target audience are familiar with: programming languages, object-oriented programming and graphical user interfaces.

What I liked most

The book, far from being a purely technical book, sets a casual tone with plenty of real-life examples that go a long way towards making you understand the concepts, along with interesting history lessons and useful diagrams. This is why no prior knowledge is required and people interested in how computer work (without being in the computer industry) can pick up this book too.

I would recommend reading this book regardless of your background. If you come from a formal computer science background, this book summarizes well the first two or three semesters from the career, and it is always good to have solid understanding of the basics; on the other side, if you haven’t had any formal training in computer science this book is a great gateway into the basic concepts with an easy-to-follow structure and relatable examples.