Code_1st_Edition.pdf

(2624 KB) Pobierz
The Hidden Language of
Computer Hardware and Software
Charles Petzold
PUBLISHED BY
Microsoft Press
A Division of Microsoft Corporation
One Microsoft Way
Redmond, Washington 98052-6399
Copyright © 2000 by Charles Petzold
All rights reserved. No part of the contents of this book may be reproduced or
transmitted in any form or by any means without the written permission of the
publisher.
Library of Congress Cataloging-in-Publication Data
Petzold, Charles, 1953–
Code / Charles Petzold.
p. cm.
ISBN 978-0-735-69260-2 -- ISBN 0-7356-1131-9 (paperback)
1. Computer programming. 2. Coding theory. I. Title.
QA76.6 .P495 1999
005.7'2 21--dc21
Printed and bound in the United States of America.
1 2 3 4 5 6 7 8 9
QWM 5 4 3 2 1 0
99-040198
Distributed in Canada by Penguin Books Canada Limited.
A CIP catalogue record for this book is available from the British Library.
Microsoft Press books are available through booksellers and distributors worldwide.
For further information about international editions, contact your local Microsoft
Corporation office or contact Microsoft Press International directly at fax
(425) 936-7329. Visit our Web site at mspress.microsoft.com. Send comments
to
mspinput@microsoft.com.
Macintosh is a registered trademark of Apple Computer, Inc. Microsoft, MS-DOS, and
Windows are either registered trademarks or trademarks of Microsoft Corpo-
ration in the United States and/or other countries. Other product and company
names mentioned herein may be the trademarks of their respective owners.
Images of Charles Babbage, George Boole, Louis Braille, Herman Hollerith,
Samuel Morse, and John von Neumann appear courtesy of Corbis Images and were
modified for this book by Joel Panchot. The January 1975 cover of
Popular
Electronics
is reprinted by permission of Ziff-Davis and the Ziff family. All other
illustrations in the book were produced by Joel Panchot.
Unless otherwise noted, the example companies, organizations, products, people,
and events depicted herein are fictitious. No association with any real company,
organization, product, person, or event is intended or should be inferred.
Acquisitions Editor:
Ben Ryan
Project Editor:
Kathleen Atkins
Technical Editor:
Jim Fuchs
Contents
Preface
Chapter One
Chapter Two
Chapter Three
Chapter Four
Chapter Five
Chapter Six
Chapter Seven
Chapter Eight
Chapter Nine
Chapter Ten
Chapter Eleven
Chapter Twelve
Chapter Thirteen
Chapter Fourteen
Chapter Fifteen
Chapter Sixteen
Chapter Seventeen
Chapter Eighteen
Chapter Nineteen
Chapter Twenty
Chapter Twenty-One
Chapter Twenty-Two
Chapter Twenty-Three
Chapter Twenty-Four
Chapter Twenty-Five
Best Friends
Codes and Combinations
Braille and Binary Codes
Anatomy of a Flashlight
Seeing Around Corners
Telegraphs and Relays
Our Ten Digits
Alternatives to Ten
Bit by Bit by Bit
Logic and Switches
Gates (Not Bill)
A Binary Adding Machine
But What About Subtraction?
Feedback and Flip-Flops
Bytes and Hex
An Assemblage of Memory
Automation
From Abaci to Chips
Two Classic Microprocessors
ASCII and a Cast of Characters
Get on the Bus
The Operating System
Fixed Point, Floating Point
Languages High and Low
The Graphical Revolution
Acknowledgments
Index
iv
3
9
15
22
32
40
47
54
69
86
102
131
143
155
180
190
206
238
260
286
301
320
335
349
364
383
385
iii
Preface to the
Paperback Edition
C
ode
rattled around in my head for about a decade before I started
writing it. As I was contemplating
Code
and then writing it, and even
after the book was published, people would ask me, “What’s the
book about?”
I was always reluctant to answer this question. I’d mumble something
about “a unique journey through the evolution of the digital technologies
that define the modern age” and hope that would be sufficient.
But finally I had to admit it: “Code is a book about how computers work.”
As I feared, the reactions weren’t favorable. “Oh, I have a book like that,”
some people would say, to which my immediate response was, “No, no, no,
you don’t have a book like this one.” I still think that’s true.
Code
is not like
other how-computers-work books. It doesn’t have big color illustrations of
disk drives with arrows showing how the data sweeps into the computer.
Code
has no drawings of trains carrying a cargo of zeros and ones.
Metaphors and similes are wonderful literary devices but they do nothing
but obscure the beauty of technology.
The other comment I heard was, “People don’t want to know how
computers work.” And this I’m sure is true. I personally happen to enjoy
learning how things work. But I also like to choose which things I learn about
and which I do not. I’d be hard pressed to explain how my refrigerator works,
for example.
Yet I often hear people ask questions that reveal a need to know something
about the inner workings of personal computers. One such common question
is, “What’s the difference between storage and memory?”
That’s certainly a critical question. The marketing of personal computers
is based on such concepts. Even novice users are expected to know how many
megas
of the one thing and
gigas
of the other thing will be necessary for their
particular applications. Novice users are also expected to master the concept
of the computer “file” and to visualize how files are loaded from storage into
memory and saved from memory back to storage.
The storage-and-memory question is usually answered with an analogy:
“Memory is like the surface of your desk and storage is like the filing
cabinet.” That’s not a bad answer as far as it goes. But I find it quite
unsatisfactory. It makes it sound as if computer architecture were patterned
after an office. The truth is that the distinction between memory and storage
is an artificial one and exists solely because we don’t have a single storage
medium that is both fast and vast as well as nonvolatile. What we know
today as “von Neumann architecture”—the dominant computer architecture
for over 50 years—is a direct result of this technical deficiency.
Here’s another question that someone once asked me: “Why can’t you run
Macintosh programs under Windows?” My mouth opened to begin an
answer when I realized that it involved many more technical issues than I’m
sure my questioner was prepared to deal with in one sitting.
I want
Code
to be a book that makes you understand these things, not
in some abstract way, but with a depth that just might even rival that of
electrical engineers and programmers. I also hope that you might recognize
the computer to be one of the crowning achievements of twentieth century
technology and appreciate it as a beautiful thing in itself without metaphors
and similes getting in the way.
Computers are constructed in a hierarchy, from transistors down at the
bottom to the information displayed on our computer screens at the top.
Moving up each level in the hierarchy—which is how
Code
is structured—
is probably not as hard as most people might think. There is certainly a lot
going on inside the modern computer, but it is a lot of very common and
simple operations.
Although computers today are more complex than the computers of 25
years or 50 years ago, they are still fundamentally the same. That’s what’s
so great about studying the history of technology: The further back in time
you go, the simpler the technologies become. Thus it’s possible to reach a
point where it all makes relatively easy sense.
In
Code,
I went as far back as I could go. Astonishingly, I found that I
could go back into the nineteenth century and use early telegraph equipment
to show how computers are built. In theory at least, everything in the first
17 chapters of
Code
can be built entirely using simple electrical devices that
have been around for over a century.
This use of antique technology gives
Code
a fairly nostalgic feel, I think.
Code
is a book that could never be titled
The Faster New Faster Thing
or
Business @ the Speed of a Digital Nervous System.
The “bit” isn’t defined
until page 68; “byte” isn’t defined until page 180. I don’t mention transistors
until page 142, and that’s only in passing.
So, while
Code
goes fairly deep into the workings of the computer (few
other books show how computer processors actually work, for example),
the pace is fairly relaxed. Despite the depth, I tried to make the trip as
comfortable as possible.
But without little drawings of trains carrying a cargo of zeros and ones.
Charles Petzold
August 16, 2000
Zgłoś jeśli naruszono regulamin