
What do flashlights, the British invasion, black cats, and seesaws have to do with computers? In CODE, they show us the ingenious ways we manipulate language and invent new means of communicating with each other. And through CODE, we see how this ingenuity and our very human compulsion to communicate have driven the technological innovations of the past two centuries. Using everyday objects and familiar language systems such as Braille and Morse code, author Charles Petzold weaves an illuminating narrative for anyone who’s ever wondered about the secret inner life of computers and other smart machines. It’s a cleverly illustrated and eminently comprehensible story—and along the way, you’ll discover you’ve gained a real context for understanding today’s world of PCs, digital media, and the Internet. No matter what your level of technical savvy, CODE will charm you—and perhaps even awaken the technophile within.
Code: The Hidden Language of Computer Hardware and Software - Charles Petzold
Some reviews: https://www.goodreads.com/en/book/show/44882.Code
I read it in my second year of studying computer-science during the summer break, and it completely changed how I view computing.
First of all, the contents alone are quite valuable, even though it is an old book, as it basically walks you through building a simple relay computer on paper, with a CPU, RAM, simplified input devices, teaches you Intel 8080 assembly as an example of assembly programming, and then even goes over a simplified BIOS, OS, GPU and higher-level languages at the end, and it does not assume you have any previous knowledge; it starts from the basic physics behind electricity, then goes into boolean algebra, logic gates, etc. It's basically computer-architecture for the layman.
Beyond the content of the book, I think the biggest mark it left on me is that it taught me that there is no magic behind the layers of abstraction, and that breaking problems and concepts down into simpler ones can make what initially seems like a very complex topic into something that someone can easily follow and understand.
After I read the book, a lot of things I had already learnt at university felt like they made more sense, and I then took courses like Computer Architecture and Digital Circuit Design, where I felt a lot more confident than I probably would have, had I not read that book. It definitely colored how I viewed a lot of the courses I took at university after having read it.
In my career as a software developer, I still often think about that book, and I love to learn things by re-inventing the wheel and building simpler versions of complex existing software.
Code: The Hidden Language of Computer Hardware and Software by Charles Petzold - This has been on my to-read list for years. Pretty great so far.