Dec 13 - 19
Ships from: Book Depository US Sold by: Book Depository US
Other Sellers on Amazon
Follow the Author
Code: The Hidden Language of Computer Hardware and Software 1st Edition
There is a newer edition of this item:
Enhance your purchase
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.
About the Author
Charles Petzold has been writing about Windows programming for 25 years. A Windows Pioneer Award winner, Petzold is author of the classic Programming Windows, the widely acclaimed Code: The Hidden Language of Computer Hardware and Software, Programming Windows Phone 7, and more than a dozen other books.
- ASIN : 0735611319
- Publisher : Microsoft Press; 1st edition (October 11, 2000)
- Language : English
- Paperback : 400 pages
- ISBN-10 : 9780735611313
- ISBN-13 : 978-0735611313
- Item Weight : 1.19 pounds
- Dimensions : 6 x 1 x 8.9 inches
- Best Sellers Rank: #52,694 in Books (See Top 100 in Books)
- Customer Reviews:
About the author
Reviewed in the United States on January 22, 2021
Reviews with images
Top reviews from the United States
There was a problem filtering reviews right now. Please try again later.
Have you ever wondered just how your computers really work? I mean, really, really work. Not as in "an electrical signal from memory tells the processor the number to be added," but what the electrical signal is, and how it accomplishes the magic of switching on the circuits that add while switching off the other circuits that would do other things with the number. I have. I have wondered this a lot over the past decades.
Yet somehow over the past several decades my hunger for an explanation has never been properly met. I have listened to people explain how two switches wired in series are an "AND"--only if both switches are closed will the lightbulb light. I have listened to people explain how IP is a packet-based communications protocol and TCP is a connection-based protocol yet the connection-based protocal can ride on top of the packet-based protocol. Somehow these explanations did not satisfy. One seemed like answering "how does a car work?" by telling how in the presence of oxygen carbon-hydrogen bonds are broken and carbon dioxide and water are created. The other seemed like anwering "how does a car work" by telling how if you step on the accelerator the car moves forward.
Charles Petzold is different. He has hit the sweet spot exactly. Enough detail to satisfy anyone. Yet the detail is quickly built up as he ascends to higher and higher levels of explanation. It remains satisfying, but it also hangs together in a big picture.
In fact, my only complaint is that the book isn't long enough. It is mostly a hardware book (unless you want to count Morse Code and the interpretation of flashing light bulbs as "software." By my count there are twenty chapters on hardware, and five on software. In my view only five chapters on software--one on ASCII, one on operating systems, one on floating-point arithmetic, one on high-level languages, and one on GUIs--is about ten too few. (Moreover, at one key place in his explanation (but only one) he waves his hands. He argues that it is possible to use the operation codes stored in memory to control which circuits in the processor are active. But he doesn't show how it is done.)
Charles Petzold's explanatory strategy is to start with the telegraph: with how opening and closing a switch can send an electrical signal down a wire. And he wants to build up, step by step, from that point to end with our modern computers. At the end he hopes that the reader can look back--from the graphical user interface to the high-level language software constructions that generate it, from the high-level language software constructions to the machine-language code that underlies it, from the machine-language code to the electrical signals that load, store, and add bits into the computer's processor and into the computer's memory.
But it doesn't stop there. It goes further down into how to construct an accumulator or a memory bank from logic gates. And then it goes down to how to build logic gates--either out of transistors or telegraph relays. And then deeper down, into how the electrons actually move through a transistor or through a relay and a wire.
And at the end I could look back and say, yes, I understand how this machine works in a way that I didn't understand it before. Before I understood electricity and maybe an AND gate, and I understood high level languages. But the whole vast intermediate realm was fuzzy. Now it is much clearer. I can go from the loop back to the conditional jump back to the way that what is stored in memory is fed into the processor back to the circuits that set the program counter back to the logic gates, and finally back to the doped silicon that makes up the circuit.
So I recommend this book to everyone. It is a true joy to read. And I at least could feel my mind expanding as I read it.
Code is a very clear explanation of how computers work, taking you from how people encode information (Morse code, Braille) to the basics of electricity to boolean algebra, switches and gates , to machine language, and beyond. While you may not actually be able to build a simplistic computer from scratch after reading the book, you’ll have a greater appreciation of how how much goes behind common devices like calculators and programming languages.
The books starts off slowly, using metaphors to explain the basics of encoding and basic calculation. It then gets into a deep dive about Boolean algebra and machine language, before giving a tour of the history of computing from The Difference Engine, to Hollerith Cards to microprocessors. Less technical readers may want to skim the middle sections of the book, or at least expect a slower reading pace.
While some of the technology details about how “modern” computers and computer languages work are out of date, the principles are still valid, so if you were every curious about how a keyboard, file system, or a display really works, or how computers bootstrap (start up when they have no programs loaded), this book is for you.
My only critique of the book is that it addresses a variety of audiences at various parts, and each class of reader might find some sections to shallow or too deep. I still recommend the book, whether you want to learn these details for the first time, or want a refresher of some things that you learned one but now take for granted.
Looking back on it, I would blame the ignorance of the inner workings of computers that some programmers have on the decline of having to learn Assembly language (starting in the early nineties?), the lowest level programming language sans actual Machine Code, where one would be forced to deal with the raw inner workings of a computer naturally. I myself hope to learn it one day after reading this book :D Instead, I was taught the C programming language and what we learned in school became only more abstract in regards to the actual hardware...
This is where this wonderful book came into play. Since I recieved it half-a-year ago, it must have been read/devoured by me a dozen times or more - it goes from teaching the make-up of various codes (morse, braille, etcetera) to showing how some simple to understand concepts can be combined until a working computer, calculator, etcetera, can be built....... it gives one a great foundation for learning what Computer Science is all about or gives a newer-generation Programmer, like me, much needed knowledge on how that beige box basically works, on a hardware level!
The best thing is that those computer analogies can be finally thrown out the window - we all heard them before - like how "ram is like a table, or workspace. The bigger it is, the more things you can have ready and available at one time. The hard drive is like your drawers and cabinets. You can store more stuff there, but to use it, you have to take it out first and put it either on the table (RAM) or hold it in your hand (cache)." Petzold also uses analogies when he introdues topics but quickly moves beyond them, giving his audiences real understanding of the subject - which is very welcoming since analogies tend to explain function well but break down quickly when one is determined to learn more about a topic.
It is probably one of the few computer books on my shelf that can't get outdated and that's good, because it still will be there in 20 years.
Top reviews from other countries
I purchased this as I had started to do a little coding myself but wanted to know how everything worked underneath the hood. This answered those questions to enough of a depth that satisfied my needs - very happy with this book.
I am an amateur programmer and wanted to understand how it all works. I still don’t fully understand because I probably lack the intelligence but a smarter person would be able to grasp the theory using this book.
I can only recommend this book to people who are not satisfied with 20 min. youtube summaries and want to dig deeper.
I own a great many awesome CS books. But this one went to the top of my list very quickly, perhaps just barely 20 pages in. It's not a description of who did what, or how a particular piece of technology works. It's a story of how our modern world came to be. And it's a brilliant story.
Petzold challenges the reader right at the start - assume you're 10 years old and in your home, trying to talk to your friend on the other side of the street. Of course, you don't have a phone or anything like that. You need to use technology which is freely available and will not wake up your parents. Step by step, you discover Morse code (discarding several options prior to reaching this stage). Then you solve various challenges, like assuming your friend does not live in a direct line of sight.
Little by little, we learn about Braille code, simple flashlights, relays, then go on to more ambitious concepts like logic gates, flip-flops and, ultimately, a fully functional computer made of relays and other simple components (which is, I should point out, purely fictional, of course). And I enjoyed every step of this journey.
The book is written with the general reader in mind, it does not target software developers or engineers. I cannot say how someone with no prior computer knowledge would find it; it is beyond my ability to imagine myself without everything I've learned since I began my career path as a programmer. Perhaps the point where assembly is introduced would be a bit too much, or the descriptions of Intel's 8080 and Motorola's 6800. But hey, we do get from flashlights to computers within 400 pages, so it can't all be a smooth ride.
Also, I should mention, the reader is bound to notice how old the book is :) Many technologies that were all around us at the time of writing are already gone and that was barely 20 years ago...
All in all, I probably didn't learn much I didn't already know, but if I ever recommend a computer book to a non-programmer this would be it. Very enjoyable and informative. You will not regret buying this.
Beside that, this is a rare unicorn of a book. It's rigorous and written well. That's a rare combination for this genre. It's actually fun to read, and pretty much the standard in bridging computer engineering with software development, and is very accessible to anyone I'd say. If you're not a particularly technical person but always wondered about the "magic" of how computers work this is perfect.
It's pretty high-level in terms of abstraction but that's a good thing as far as I'm concerned, you can take the knowledge from this book and apply it universally.
If you're already a CompEng or EE student I'd probably look elsewhere for something a little more applied. CS students however this is perfect for you.