on July 25, 2002
The book starts out very solid, describing all the building blocks of a computer. The beginning is the best book I've seen so far describings everything from the binary system to electrical circuits, to gates to simple calculators, to memory, to a complete machine with a "control panel". But after that, the book started getting a LOT more broad (not necessarily a bad thing). It seems almost as if Petzold wanted to tell you everything about the world of computers, but couldn't fit it in a book such as this; so he dabbed a little here and there of a few terms, history, etc... (allowing you the option to look up anything you wanted if you had the interest).
My oppinion is that the book is _great_ up to about the middle of the book, after which he just condenced all the rest of the information which would otherwise takes thousands of pages to describe in as much details as he described how to build a physical logic machine... I think that if someone isn't a "techie" or isn't in the computer field, they may have some hard time understanding a few minor points... but overall, this is a GREAT book.. one of a kind.
Greatly recommended for everyone's library... I can honestly say, I always told people "a computer is nothing more than zero's and one's"... but until I read this book, I couldn't BUILD one... now I can (given time! :).
P.S. This book is perfect for those who didn't necessarily go to college and learned everything on their own... it covers some CS, CE, and EE. Those who went to college with either of those majors probably learned the greatest part of this book... but it's a great review.
on August 4, 2003
Yes, that's right! CODE is the greatest book on the face of the earth!
Why? Here's my story, and go judge for yourself.
I'm using computers for around four years. My question was always "How is this thing doing it's stuff?". Although I have no idea how other electronic stuff work, the computer did bothered me more then anything else because the computer seems to do some kind of THINKING, that's why it triggered my THINKING. This question kept on staying in my head until two weeks ago. It really bothered me. All along this four years I was looking for an answer to my question. I bought books, went to the library a thousand times, but nothing helped me. I learned a few programming languages along my journey, but it did not clarify how it really works. So I decided to learn Assembly Language because I taught that that's where I'm going to find the answer to my question. I must admit that it did helped me out quite a bit, but not to the extent I expected. I used a great book called "Assembly Language Step-by-Step" by Jeff Duntemann, which is a great book, but since the subject of the book is not to teach you how computers work, it didn't helped me enough to satisfy my desire for the answer to my question. I contacted Jeff Duntemann, the author of the book and I told him my problem. He referred me to this book CODE. So I rushed and bought this book. The rest of the story is self-understood, the book made my day and my life. And that's why I'm restating "This is the greatest book on the face of the earth".
on July 9, 2015
Simply the best introduction to fundamental computing from an electronics perspective to those without a formal Comp. Sci. degree there is in my opinion.
As a Perl programmer - and one could say any high level programming language - I am abstracted from the hardware so have no real idea of what goes on 'in the engine' compartment. True, a lot of the information is now historic and is utterly unnecessary to know in these days of virtualised cloud computing on demand with pay-per use billing....but for those interested it is an insight to that now passing (passed?) era of 'the Before Time'.
This book has a very smooth, swallow learning curve - more a 'learning line' - and goes from a simple on-off telegraph relay used as a transmission device all the way through how n-bit adders and '1s complement' is used to to interact with memory blocks to do subtraction through to their implications and use in assembly language with registers of modern processors.
The section on coding of language (Braille is used as an example) is also enlightening.
From the discussions I've had with others who have done formal Computer Science degrees (I haven't - yet) this book covers a sizable chunk of the fundamental computing topics.
After reading this book I will never look at a division operation in one of my programs in the same way again!
on August 11, 2010
That is what the title should have been. I feel like I've taken a course in Electrical Engineering. Not exactly what I was expecting but really fun and educational. He literally builds a computer from the ground up. He starts with a switch and a light bulb and by the end you have a computer. It is really that simple (but phenomenally complex!!!).
The author is just wonderful. He does seem to repeat himself a bit, and I did find myself skimming a couple pages after I understood something enough for my tastes, but that could be just me. His use of illustrations is just the best. Most authors get lazy and try to put everything in writing. This author tries to convey as much information in the diagrams as possible, but while still keeping them so clear. Extremely useful! Sometimes you can just look at the diagram and understand without even needing to read the text! An illiterate could almost come out knowing how a computer works.
The book is long and thorough. Be prepared to learn it all. But if you're the type that wants that understanding, you will get it. Everything is built on first principles so you will have a solid understanding. Every computer programmer should know this stuff.
on May 2, 2002
The critical thing to remember about "Code" is audience. This is a book targeted at a smart person who knows little about computers, and really wants to get a fundamental understanding. Those who are willing to dedicate time and some heavy brain power to it will get a lot out of it. Although well written, the tone is dry, and the concepts covered here are not lightweight. Essentially, Petzold covers a college-level course on computer logic and design, starting at ground level, and taking you through a lot of territory. For computer people, this a great book to give to someone else.
If you're a computer person, don't read this book. You won't be happy, because it's not meant for you, you've heard it all before, and you'll soon grow tired of it. If you've always wanted to explain the details of computers to some other person, then give them this book.
It's a little uneven at times, and the tone is dry. It may not hold the interest of any but the most dedicated reader. Occasionally, it seems like there was stuff that was neat, and Petzold really wanted it in the book, even though it doesn't really help make his point. I found the material on Morse code, Braille, UPC codes, and film cartridges interesting, but any one of these would have made his point. Similarly, his sudden dive into the history of computing is distracting - he hasn't really focused on the characters of computing in the 250 pages before this, and quickly sticking this in the middle doesn't help elucidate the concepts presented in "Code."
For someone who is interested in the details of computers, and willing to invest the time to learn them, this is an excellent book. Be prepared - there's a lot of detailed information here, but, if you get through it, you'll be rewarded with an in-depth understanding of computers and "Code."
on October 3, 2001
I am a general reader with 'some' interest in computer programming. I also have 'some' knowledge and interest about almost anything in this world. I found this book when I was looking for a programming related book in our local bookstore. I picked it up since it interested me initially due to its reference to morse code etc. I used to be intrigued by morse code (which I had found in one of my dad's telegraphy books) and used to even use it with a friend while keeping our language a secret.
I must say that I found the book really amazing which is why I am writing the review. I also feel that it should be classified in more of general interest books (the bookstore had it under the software books as I mentioned earlier). I believe there might be other readers with general non-fiction interest who might miss this excellent opportunity just because they were not looking for some software book.
Finally, I want to put a note of appreciation here for whoever designed the cover (I tried looking on the inside jacket). It is amazing while being strikingly simple. That is actually the first thing that caught my attention. Seems like a summary of all the design theories you ever read about. Highest degree of simplicity achieved by conscious thought and effort. Very intellectually provoking.
on April 4, 2001
This was one of those books that I overlooked on the shelves several times. Who would want to pickup a book like this squashed inbetween some stuff that might actually get me some inside scoop on how to design this or program that. But one day I looked at this book and just for curiosities sake decided to take a look inside of it. What I found surprised me. Unlike most computer books, this one grasped me right from the first page! You must agree when I say the typical computer book is difficult to read, often boring, and lacks any non-abstract visualization. However, the author is very fluid in style of writing. I don't think I ever had to turn back a page to reread anything. And there are almost as many diagrams as pages; each of them CLEARLY describing what is going on. The book itself is also very interesting. The first few chapters mention little about a computer itself but by the time your done with them, you realize you have the potential of starting to realize how a computer actually works at the lowest level possible. Then the book starts to gain momentum and the author goes on to switches then gates then memory then computer systems on a whole. Throughout the chapters though he leaves no gaps. How does he do this? Well he primarly moves the text in such a fashion that he kind of asks the question, "well what if we wanted to do this?" again and again. So your knowledge always builds on your past knowledge.
All in all this was a very good book. I would recommend this is a good and easy read for the advanced computer user to the complete beginner.
on December 7, 2000
Have you ever opened up the case of your PC, only to find that there are seemingly millions of lego-esque pieces stuck together? Have you ever wondered how computing went from the abacus to the Palm IV? Have you ever asked how the engineers are able to do the things they do?
Well, ask no more. Instead, read this book. Charles Petzold is able to describe the workings of a simple computer, starting from the ground floor. He begins with descriptions of a simple circuit, and slowly works his way to more and more complex structures. You learn about flashlights, Morse code, and the early computers, and how each has impacted modern computing.
Will this book teach you how to program? No. But if you were not a computer science major or electrical engineer in college, this book will lay some of the foundations for understanding this technology. The technical aspects get a little dense at times, but this did not detract from the impact of this book.
If you have been curious about what goes on in that beige box, now is your time to investigate. This is the place to start.
on May 28, 2000
Charles Petzold a does an outstanding job of explaining the basic workings of a computer. His story begins with a description of various ways of coding information including Braille, Morse code, and binary code. He then describes the development of hardware beginning with a description of the development of telegraph and relays. This leads into the development of transistors and logic gates and switches. Boolean logic is described and numerous electrical circuits are diagramed showing the electrical implementation of Boolean logic. The book describes circuits to add and subtract binary numbers. The development of hexadecimal code is described. Memory circuits are assembled by stringing logic gates together. Two basic microprocessors are described - the Intel 8080 and the Motorola 6800. Machine language, assembly language, and some higher level software languages are covered. There is a chapter on operating systems. This book provides a very nice historical perspective on the development of computers. It is entertaining and only rarely bogs down in technical detail.
on November 27, 1999
I think that this is the best book that I have read all year. In some sense this is the book that I have been looking for for twenty-five years--the book that will enable me to understand how a computer does what it does. And--given the centrality of computers in our age--it has been a long wait. But now it is over. Charles Petzold (1999), Code: The Hidden Language of Computer Hardware and Software does a much better job than anything else I have ever seen in explaining computers--what they really are, and how they really work.
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.