Code: The Hidden Language of Computer Hardware and Software
My friend Amanda gave this book to me for my birthday, and I was riveted – it explains in an easy to understand way how computers actually work, right down to the transistor level.
In this day and age, where much of programming is library-based, with wizards and intellisense to autocomplete your typing, it is very easy for people to become developers without ever really understanding the foundational elements of how computers work, as these complexities are all abstracted away from you. This book does an outstanding job of explaining it in a simple-to-understand way, and is also a perfect primer for anyone who is looking to get into embedded system development.