This summer we hosted 23 interns at the Don’t Panic Labs office. These interns were placed into four separate teams, with each team tasked to develop a product based around a specific need. Spencer Farley, who was a member of the Carnac team and is now a member of the Don’t Panic Labs team, shares his thoughts on the book Code: The Hidden Language of Computer Hardware and Software by Charles Petzold.
As Mr. Petzold states in the preface, Code is “a unique journey through the evolution of the digital technologies that define the modern age.” So, how computers work? Yes, but so much more! Code is not special because of its subject but rather because of how it weaves together the many and varied pieces that compose the topic.
Code takes its structure from the very object it seeks to explain: a computer. Starting with the idea of communication and building upward, Code takes readers through a series of creations and revisions to model major steps in the development of computers and their components. One of my favorite characteristics of Code is that nothing comes from a vacuum. Each idea is derived from a set of circumstances and from previously developed ideas to solve a specific problem. There are no major breakthroughs, just a series of little (but important) developments.
Another characteristic I loved about this book is that first there is a problem, then an idea is developed. Once a problem and a concept are defined, a technology is developed to fill them. After the reader has grappled with and appreciates a given topic, Mr. Petzold gives a brief history lesson that provides context.
Coming into this book with little knowledge of the development of computers, I found that ideas were fed gradually and well explained. There were few sticking points, especially for such an immense amount of information. This book also uses many terms and conventions typical to the computer industry and is careful to clearly define terms before they are used.
This book isn’t just for beginners though. One of my co-workers commented that “having learned everything in school, it gave me a great appreciation for the book.”
In summary, Code is a superb recount of the evolution of computers that explains why each step was developed, how it works and how it came to exist. I strongly recommend this book for anyone looking to understand the background of computers.
Below is Code’s table of contents which give a nice view of the book’s progression.
Chapter One Best Friends
Chapter Two Codes and Combinations
Chapter Three Braille and Binary Codes
Chapter Four Anatomy of a Flashlight
Chapter Five Seeing Around Corners
Chapter Six Telegraphs and Relays
Chapter Seven Our Ten Digits
Chapter Eight Alternatives to Ten
Chapter Nine Bit by Bit by Bit
Chapter Ten Logic and Switches
Chapter Eleven Gates Not Bill
Chapter Twelve A Binary Adding Machine
Chapter Thirteen But What About Subtraction?
Chapter Fourteen Feedback and FlipFlops
Chapter Fifteen Bytes and Hex
Chapter Sixteen An Assemblage of Memory
Chapter Seventeen Automation
Chapter Eighteen From Abaci to Chips
Chapter Nineteen Two Classic Microprocessors
Chapter Twenty ASCII and a Cast of Characters
Chapter Twenty One Get on the Bus
Chapter Twenty Two The Operating System
Chapter Twenty Three Fixed Point Floating Point
Chapter Twenty Four Languages High and Low
Chapter Twenty Five The Graphical Revolution