Home - Algorithms
Code (DV-MPS General)
Price: $27.99
& 2-Day * Free Nationwide Shipping! (* details)
Availability: Usually ship in 24 hours if sold by Amazon.com
Product Details
| Binding: | Hardcover |
|---|---|
| EAN: | 9780735605053 |
| Label: | Microsoft Press |
| Feature: | |
| Publisher: | Microsoft Press |
| Studio: | Microsoft Press |
Editorial Reviews
Customer Reviews
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.
Petzold attempts, and largely succeeds at, writing a book that leaves the reasonably intelligent layperson with a thorough comprehension of each layer that comprises a modern electronic computer (binary coding -> electronic representation -> transistors -> logic gates -> integrated circuits -> microprocessors -> opcodes -> assembly language -> high-level language -> applications). At times, the reader must follow along carefully, but Petzold tries to avoid needless complication.
Code is a well written and very entertaining explanation of the digital electronic technology that has become an integral part of our daily lives. Short of getting a degree in electrical engineering, this book is your best bet to understand how it works.
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.
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.
I would recommend this book to all software developers, and also anyone that has any technical hobbies. It has much technical information, but is also very easy to read.
Steve
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".
The organisation is excellent - Petzold explores one topic at a time, giving you the chance to absorb one concept before moving on to the next. And each chapter builds on what you have read before.
If you are just curious about what goes on inside your PC, or if you are involved in IT but lack an understanding of the actual box that does all the work, then this book is for you.
On the other hand, don't buy this book if you want practical information about how to be a better programmer or whatever. This book is definetely suited to an enthusiast who is honestly interested in learning arcane details. It isn't going to help anyone get a higher salary or a promotion.
That's what I really liked about this book. It was truly different from any other book you will ever buy from Microsoft Press or like publishers.
My only real critiscism is that it seems to run out of steam at the end. Chapter after chapter is devoted to the inner workings of logic gates, memory, and so on, but almost nothing is said about operating systems.
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.
Petzold's book was not like this. While other books started with flashy graphics of internal designs all flowcharts with little in the way of explanation, Code starts off simply, with two flashlights and the goal of communicating at night. This problem, of course, would be easy solved by anyone who knows of Morse code. Yet, from Petzold's pen it becomes an illuminating and amusing journey with attempts to deal with similar scenarios of every increasing complexity until I realized two-thirds of the way through that given a sufficient time and space, I could, at least in theory, build a computer. This is the greatest success of Code, in my opinion. Rather than attempting to peel away the mysteries of the system a layer at a time like an onion, it delves directly to the core and builds upon its ideas in a fashion like that of the original computer designers, until everything forms into a cohesive whole. Petzold does an excellent job of capturing his excitement for the material, making the progressive developments a joy to read about.
With my uneven background knowledge, there were a few sections that I felt that I could skim through, but also many a passage that I had to carefully scrutinize. Overall, I'd recommend this book for anyone interested in computers, from beginner to expert: Petzold provides enough explanation for a determined newcomer to understand all of the concepts, but enough breadth to still entertain and educate those with more experience in the area.
Why? Because it lays it all out. Though it goes a bit light on the actual electronics, preferring to focus on the telegraph relay as its main way of understanding what's going on, this book takes the reader from square one -- sending messages to a friend with a flashlight -- to the structure of a modern microprocessor. It's an incredibly detailed yet easily accessible look at the internals of a computer system.
Flaws? A couple -- no index, and as I said it gives short shrift to what may be the single biggest invention of the 20th century, the transistor. But by and large Petzold has written the ultimate book to explain the mysteries of the computer to the layperson. This book is a must-buy.
I liked this book very much and have recommended it to several of my friends.
If you buy no other computer book this year, and you have the same yearning as I do to know the lowest of details without having to understand complex mathematics than you should buy this book. It is an absolute master piece of technical literature. It will teach you how electricity works and flows, how computers turn that electricity into bits and bites and running programs. It will help you to easily understand the lowest levels of computers.
-=-=-=-=-=-=-=-=-=-=-=-=-
Dear Mr. Petzold,
Thank you. Thank you for writing this book! I just completed it, and am happy to say that I feel strengthened in my understanding of how computers really work. I enjoyed the examples, the humor and the simple, straightforward explanations. It is amazing to see what can be built by combining simple, tangible objects with novel ideas.
Sincerely,
Adam Monsen
-=-=-=-=-=-=-=-=-=-=-=-=-
This book is not for the easily distracted. I had to read over some of the examples many times before I felt like I really "got" them. The effort was well worth it, and I'm glad I discovered this book! If you're ready to dig in and really understand how the computer works, check it out.
This book might be thought of as a "beginner's tutorial to assembly language". Many pages are spent explaining the purpose and fuction of machine language and data.
The book is written in a very accessible manner, I would recommend it highly to a high school graduate considering pursuing a college career in any electronic engineering discipline.
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.
The book is not written as a dry textbook, but rather as if your really smart friend were to sit down and explain the history of computing to your really smart teenager. There are charts of boolean logic gate outputs, binary math tables, and electronic schematics which will likely scare off anyone who isn't seriously interested in learning the details, but the tone of the book is very informal and easy to read, and moves at just the right pace. It doesn't just throw new concepts at you without fully introducing the underpinnings, but it also doesn't spoon-feed the information to you and dwell on any one area too long. Written in 1999, the book dates itself when referring to benchmarks in computing at that point in time, but for those of us who have never seen an IBM punchcard, weren't alive when the Altair 8800 was introduced, and take terabytes of hard drive space for granted, this is an invaluable history lesson that will aid your understanding of everything a computer does.
All these are gratifying.
Starting from Chapter 17, however, the speed and depth of the book changes gear quite a bit (at least to me). From that chapter onward, it is about the relatively detailed working of a modern computer - e.g. how integrated circuits (chips) work, what microprocessors are, etc. In Chapter 18, for instance, the author answered the question in the preface: "why can't you run Macintosh programs under Windows?". It is quite rewarding to understand why.
Different readers will have different views towards this book. By profession I am a physician and have no experience in serious computing, so I myself find Chapters 21 and 22 particularly difficult. But overall I think I have learned a lot from this book. Five stars.
The nice thing about this book is the approach of moving forward in time from 1850's or so onwards to the end of 20th century, starting from simpler technologies and progressively moving to complicated ones. The author starts with an explanation about morse code, braille system, telegraphs (and even a primer on electricity), number system, boolean logic before moving onto to logic gates, half adders, full adders, doing subtraction, edge triggered flip flops and more. All the components and ideas that form part of the hierarchical abstraction of the machine is explained in minute details. I remember spending a lot of time thinking up many circuits using the concept of logic gates described here. The chapters on memory, automation and microprocessors is simply brilliant and the detailed sketches of the varying states of these components makes it very easy to comprehend. Towards the end of the book the author seem to increase the pace a bit and the final chapters such as operating system and graphical revolution does not seem to have the same kind of magic that the middle ones had. I suspect the author was wary of making the book too huge and thereby losing the interest of the reader.
This book is targeted at someone who truly wants to have an understanding of computers, i.e. if you believe that software, hardware, processors, network, high level, low level, etc etc cannot be looked upon as isolated silos, then this book is for you.
I've heard the words "labor of love" used to describe this book. The description fits perfectly. Highly recommended.
Parts of the book were very detailed, and I ended up skimming over them (a few parts from chapter 17 on). This is no fault of the author, but the nature of the subject is very complex. This didn't impair my overall comprehension of the concepts in the book...I'll re-read the difficult parts in time.
Overall, I highly recommend this book. My goal was to fill in the gaps in my computer science knowledge, and the book met that goal to my satisfaction.
I debated whether to give this 4 or 5 stars...I'd probably have gone with 4.5 if that option was available. The book gets off to a bit of a slow start, and I thought it could have used some more information on networking and modern computing. But for the price of the book and the clarity of the information, I'll give it 5 stars. Outstanding value.
Sure, there are a few places where Petzold mentions specific numbers such as the current price of RAM, typical hard drive sizes etc. Of course those numbers are out of date 12 years later. But those numbers are not at all essential to the story. Even though computers have become faster, smaller, and more ubiquitous since 1999, they still work the same way.
If you want to understand computers, this book is just as relevant now as it was in 1999.
One suggestion: use a simulator such as LogiSim and take the time to work through the circuits the author presents in the text. As well as the discussion - I found it added to the interest of the book to work out, as exercises, modifications to circuits the author describes in words but does not depict fully in the form of circuits. It's also gratifying to use LogiSim to catch the author occasionally oversimplifying matters as with his discussion of the simplified adder (kindle location 4836), which does not work correctly as the author presents it - but the reader CAN make it work with a bit of time and thought.:)
Good stuff.
The remaining two thirds of the book I was just skimming through. From countless other books I already know about number bases and ASCII, for instance.
In the last chapters the author tries to cram just about everything else that could be mentioned about computers. This leads to a few errors (like "Unicode is 16 bits", a widely held misconception) [edit: I since discovered that this was actually true back in the early 90's when this book was written. Sorry, Mr. Petzold!] and several explanations way too short to convey significant content. On two pages (376 and 377) Petzold covers compression, (lossy and reversible), something called "metafiles" (dunno what that is), OCR, digitized sound and CDs, microphones, ADCs, DACs...
Instead if this, I would have liked the gory details on how vacuum tubes, transistors and integrated chips actually work. What exactly in the CPU in my laptop does the same work as the relays in the early chapters? How can current from one circuit block or amplify current from another?
I still don't know how my computer works, but after reading this book, at least I know how an electromechanical computer might work.
It wasn't until about a year later I picked up this book again and began reading more and more computer science and programming related books. Once I started reading this again I wanted to find out what happens towards the end. And realize why I was taught different number systems and logic gates back in that entry level course. It wasn't until about chapter 17 where I realized what all of it had been leading up to and it was pretty awesome. The following chapters were quite interesting but I felt too short. It felt like all the good stuff was in the last 100 pages or so.
I think Petzold wrote this book so that anyone could understand code and how computers work. So if you're already a computer science person the early stuff might seem a bit boring and repetitive, but once you get to the end it will all make sense. I'm glad I did go back and read it again, because the first time through I never got that far. I think it was mainly because I was focused on passing all my classes and this book was more of an extension of the class and not a requirement to read it. I'd recommend this book to anyone vaguely interested in how computers work, or anyone in the computer science or programming fields. It's really useful to understand exactly what's going on when you are programming. And this book essentially explains how you could build your own computer and know exactly how it works.
The first third of this book is a crash-course in various "codes" used for communicating -- Morse code, Braille, and eventually Binary/Octal/Decimal/Hexadecimal. The author simply explains how to communicate messages using only 2 signals (on/off). This
The second third of the book delves into the history of computing, automated machinery, using electrical signals to convey messages (starting with the telegraph), and eventually working up to "Switches" -- the basic building block of a computers. From there, the author explains, very slowly and clearly, how to build a rudimentary computer. Even if you are not interested in the logical diagrams of circuits, you could easily skip past these sections and still find a wealth of information in the book.
In the third part of the book, after building our basic computer, the author goes into Processors: when they were popular and mass-produced, how people programmed with them, what each chip does, etc. The author explains how newer computers had different processors, and how the x86 chip is still commonly used in PCs today. The author also explains how advances in technology are trending.
The book is a little dated -- my edition was only current up to the year 2000. However, not much has changed in how a computer is made and powers itself on since 2000. This is a must-read for anyone interested in being a programmer or computer electrical engineer. It's also vital for anyone who really wants to know how a computer works.
You can see the amount of love and care that the author has put into this work. From the easy to read font, thought-out diagram and image layouts that never make you flip-back the pages - to the excellent teaching-like style with which the author gradually tackles the topic. It is amazing. I found myself holding off reading too much of the book at once, because I wanted to prolong the pleasure!
I recommend this book to anyone. The first seven or eight chapters should be accessible to anyone, regardless of their technical background, and are alone worth the price of the book. This book should be enjoyed from start to finish, just like a novel. Unlike a novel this book not only provides the reader with the pleasing reading experience, but also with some very useful lessons and fundamentals.
I like the author's approach so much that I have purchased his next book "The Annotated Turing". I will post my impressions of that when I am done.
Now a day, the computers are so prevalent and seem so complex that we think it is a complicated machine, but it's quite the opposite. This book beautifully explains it and keeps a perfect balance with historical perspective.
Most textbooks on logic design and electronics do not teach the historical motivation why things in computer came into beings as such, but this book does. For example, it explains why the binary system was such an essential idea for computer revolution. At the time people were still trying to use decimal system to create the computing machines.
Not only you get the historical motivation why computer came into being, but you also get the thought process. On the way you learn how UPC code works? How relay works? How digital electronics work? How logic gates work? How logic gates are combined to form more complex subsystem such as Multiplexor, Decoder, Adder, Subtractor, RAM. And ultimately, how computers hardware and software works? All this is done in a clear and lucid manner and just the right tone.
You continue your journey through how computer represent computer graphics, floating point arithmetic and operating system. This book also touches on why high-level languages are required.
In conclusion, you get basic essential engineering concepts that are required in future and more advanced courses in an absolute clear manner which, in my opinion, is unmatched by any other book on computer fundamentals.
Intrigued, I bought this book for myself and for my teenage son, and halfway through the first chapter I knew it was the book I've been looking for for more than a decade. Actually, it is two in one. All the promotional material about the book tells how it explains computers and technology; it does that beautifully, creatively. But more than that, it explains what my 13-year-old engineer-in-the-making son calls the "invisible magic," which is electricity.
I am an editor, and I would go on record as saying this is one of the best written, most inventively written books that I have ever come across. The night I gave it to my son (at 10 p.m.), he began devouring it. At 8 a.m. the next morning, he was already on Chapter 3, and he took it to school with him.
I give my thanks to the author for going to the effort to write the book and get it published.
This book provided me with the underlying foundation of how and why a computer works. If I had one phrase to describe this book it would be "de-black magic computers". The knowledge it provided has been fundamental in my diving into deeper parts of assembly, C and computers in general.
I absolutely loved this book and would recommend it to anyone who wished to understand what is actually happening inside of a computer. If you have a geeky or semi-geeky teenager this book provides a great method of letting them truly understand computers.
Through highly illustrative examples and well-crafted illustrations, Charles Petzold has written an excellent book that should appeal to anyone with an interest in technology.
Create your own review


