Several weeks ago a good friend of mine told me about the book Code: The Hidden Language of Computer Hardware and Software. I picked it up for the Kindle and could not put it down! It does an awesome job of explaining the basics of computers by first explaining some of the early forms of binary communication such as Morse code and Braille. Then it dips into a small aside on how electricity works and begins to describe how you can build different kinds of logic gates with relays.
Before you know it the book is building adding circuits and explaining how to use carry over bits to continue to add larger and larger bytes of data with just an 8 bit adder. After constructing the adder the circuits get more and more complex as you are shown how you can do subtraction by adding with the twos compliment. Then the book sneakily introduces hexadecimal and assembly.
If you read this book you’ll have a pretty good understanding as to what is happening under the hood of computers. It does a fantastic job of explaining how your PC componants work together, such as the CPU, RAM, data bus, and I/O devices. The only thing I found a little off was sometimes, especially near the end, the book would jump around a lot with it’s topics and then kind of ended talking about fiber optics.
Another great thing I love about this book is the history. It explains why a byte is 8 bits, where some of the first computers were used, and how they moved from a mechanical to solid integrated circuits. Reading this book has me book marking and wanting to read more into the history that happened with IBM, Bell Labs, Xerox, Intel, and a whole other myriad of players from the fifties to about the late eighties.
I recommend this book to any developer who wants a deeper knowledge of how their software is working on the “metal.” It does a fantastic job of quickly covering in 400 pages the overall basics of computer science.