It's amazing that so many people use computers for hours every day without having the slightest ideas about the articulation within. At best, people may have changed a graphics card or added a hard drive. Maybe they installed something. Even without trying any of these things, there are some useful computer science concepts which really ought to be General Knowlege, but where would you learn them?
This short, easy to digest book is about the universal ideas behind computer and software design (so it won't go out of date for a while!). The stuff which operating systems try so hard to hide away from us, but which keeps popping up for no apparent reason. Why do the numbers 256 and1024 keep appearing? Why is compression less than pure magic?
I've been programming since the early 1980s, so I wondered how much I would learn from this book. I was thinking I could use it with my students (mostly artists and desingers). Actually, there are a lot of very elegant and simple descriptions here of stuff which I use all the time, plus many things I had no idea about (such as encryption). It's a voyage from the lowest levels of computer design - the nuts and bolts of switches and 'flow' up to entirely readable descriptions of parallel and quantum computing.
The only failing is that the people who should read this book probably wont, because they're scared it will go over their heads. (It wouldn't, but they might wonder why they need to bother with abstractions like these). Even if you think you know the basics, this book might surprise you with some refreshing perspectives and metaphors so you can explain yourself to others without their eyes glazing over.
Great for beginner programmers, curious tinkerers and an excellent little gift for a teenager with computer interests (if you're afraid your kid plays too many computer games, this book will make their game playing more meaningful).