If you have been reading my book reviews, you know that I like history. Recently I wrote about Sapiens and I quoted Churchill - you know the guy who pretty much led the fight against Nazis - saying that “a nation that forgets its history has no future”. John Kennedy went more broadly when he wrote “without history, we have no future.” But what is our history as developers? What is the history of computer science?
There are some interesting sources, books, initiatives. Like there was the now seemingly (and sadly) inactive (as of July 2020) channel of Byte Sized. A book that is not directly about our history, but touching some parts deeply was Coders At Work, a really long book including 16 interviews with highly appreciated computer scientists and programmers.
Recently, I found some references to Code: The Hidden Language of Computer Hardware and Software by Charles Petzold. You might find some parts a bit old but it should not distract you. After all, it is about our history whether you use a few hundred MBs of RAM or 16 GB, it doesn’t change the basic rules of how computer memory was invented and how it evolved. Whether you ride a TGV, a Shinkansen, or just a simple train it doesn’t change the fact how we invented the steam engine and put it on wheels moving on rails.
This book doesn’t only go back to the 1930s, but centuries. It starts laying down the foundations by analyzing the Morse code, the Braille alphabet, the Boolean algebra, the telegraphs. Code goes beyond just telling our history. What gives particular value to this book, it is that it doesn’t just share how certain things evolved and got invented, it really tries to include not-so-techy people, the author tried his best to make everyone understand how the computer works.
That’s why it really goes back to the basics. This, of course, requires a lot of topics, starting from the different numeral systems, how you can encode characters (Braille, Morse), how you can build simple relays, adders, and what physical limitations you hit while you try to scale these solutions. After all, it takes about 2/3s of the book to reach the topic of integrated circuits.
So why you should read this book? Because it gives you a much deeper understanding and appreciation of our field. If you learned a lot of CS - either at school or from books - you might be able to simply skim through certain chapters, but even so, it will put some events into context. Your PC/laptop will be less of a black box for you and you’ll understand better the works of people such as Shannon, von Neumann or even people working with potentially more low-level languages such as C/C++ not to mention Assembly.
You’ll understand the difficulties behind building a full adder circuit, something most of us wouldn’t be able to do these days - and can be a “tricky” interview question.
If you are not interested in what is inside the box if you just want things to work and don’t care about whether you understand or not as long as it works, this book is not for you. But if you want to look behind the scenes, if you are interested in long-forgotten connections, decisions that influenced the way we work, even if it seemingly doesn’t make sense now, Code: The Hidden Language is for you. And reading a relatively long book is a cheap price to pay for such a knowledge.