COMPUTING FOR ORDINARY MORTALS
COMPUTING FOR ORDINARY MORTALS
Robert St. Amant
Hand-drawn illustrations by
Stefano Imbert
Oxford University Press is a department of the University of Oxford.
It furthers the Universitys objective of excellence in research,
scholarship, and education by publishing worldwide.
Oxford New York
Auckland Cape Town Dar es Salaam Hong Kong Karachi
Kuala Lumpur Madrid Melbourne Mexico City Nairobi
New Delhi Shanghai Taipei Toronto
With offices in
Argentina Austria Brazil Chile Czech Republic France Greece
Guatemala Hungary Italy Japan Poland Portugal Singapore
South Korea Switzerland Thailand Turkey Ukraine Vietnam
Oxford is a registered trade mark of Oxford University Press in the UK
and certain other countries.
Published in the United States of America by
Oxford University Press
198 Madison Avenue, New York, NY 10016
Robert St. Amant 2013
All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, without the prior permission in writing of Oxford University Press, or as expressly permitted by law, by license, or under terms agreed with the appropriate reproduction rights organization. Inquiries concerning reproduction outside the scope of the above should be sent to the Rights Department, Oxford University Press, at the address above.
You must not circulate this work in any other form
and you must impose this same condition on any acquirer.
Library of Congress Cataloging-in-Publication Data
St. Amant, Robert.
Computing for ordinary mortals / Robert St. Amant; hand drawn
illustrations by Stefano Imbert.
p. cm.
Includes bibliographical references and index.
ISBN: 9780199775309 (hardback: alk. paper) 1. Computer science. I. Title.
QA76.S7375 2013
004dc23
2012015125
1 3 5 7 9 8 6 4 2
Printed in the United States of America
on acid-free paper
CONTENTS
INTRODUCTION
My house is filled with computers. Across the room I can see a digital video recorder and a gaming console; my mobile phone is somewhere else in the house, probably not too far from the electronic book reader and portable music player that Im always misplacing. Computers are embedded in my dishwasher, microwave, and other kitchen appliances; theyre also in my washing machine and clothes dryer. At the moment, Im writing this book on my laptop computer. Ill take a break shortly to read email from friends who are scattered across the continent, and later Ill probably surf the Web, which connects me with other computers in every part of the worldI can even watch live images from cameras in Antarctica.
All this might have been impressive a few decades ago, but I could be describing the average household in almost any developed country today. We can use computers to do work, to play games, to simplify our lives in any number of different ways. Thousands of people assemble their own computer systems, and millions of people write software to give their systems new capabilities. Sometimes it seems as if computers can do almost anything we can imagine.
But thats not all there is to computing. The really interesting part is the ideas behind the technology. Theyre powerful ideas, the foundations for everything that computers do. Theyre so general that they can also give us insight into our own daily activities, how we interact with other people, and in some cases even whats going on in our heads. Computing is all around us. Thats what this book is about.
Well start off with an overview of basic concepts in computingcomputers are machines, though different in a few important ways from other kinds of machines. From that point well follow two different threads through the fabric of computing.
One thread is practical. Well consider how the architecture of a computer (its a more dynamic architecture than that of a building) makes it possible for computers to be efficient. Well see how to write down instructions so that a computer can accomplish specific tasks (programming), how the computer manages those tasks as it runs (in its operating system), and how computers can communicate with each other (over a network).
The other thread is theoretical. Computers are physical machines, but they process informationin the abstract, theyre machines for solving problems. Well look into the nature of computing itself, to see what can be computed and how easily it can be done.
Well wrap up with the human side of computing, from two different perspectives. Artificial intelligence explores the possibility that computers might eventually be capable of human-level intelligence. Humancomputer interaction is about the ways in which computers can enrich our livesand the ways they fall short. Computing is a very human activity, at its core.
Ive written this book for readers curious about what lies beneath the everyday use of computers. You might be a high school senior who wonders whether computer science would be a good major in college, or a blogger who thinks, I work with computers every day, but I dont really understand them. You might simply enjoy reading science magazines and the science supplement in the Sunday newspaper.
The topics Ive included cover the entire range of computing, those typically studied by college students majoring in computer science. A few hours of reading wont make you a computer scientist (Ive left out the messy technical details), but youll come away knowing how to think about computers and computing. It should be an interesting journey. You may come to see the world in a different way.
COMPUTING FOR ORDINARY MORTALS
Chapter 1
Getting Started
Most of my friends and colleagues in computer science are happy to talk about their work. Im the same way. Of course, we have to tailor our explanations to the background of the person were talking to. I might tell a new colleague, Im interested in cognitive models for humancomputer interaction. In contrast, I was once talking to my 5-year-old nephew about what I do as a college professor, and he went away with the impression that Im just like his kindergarten teacher, but with older students.
Often, my colleagues and I are trying to share our sense of whats interestingeven excitingabout the field of computing. What problems do we find compelling? How do we go about solving them? Why is any of it important?
Good explanations rarely need to get down to mathematics or the complexities of programming. Instead, they focus on ideas. Computing isnt only (or even mostly) about hardware and software; its about the ideas behind the technology. Some of these ideas are incremental, tiny additions to what we already know; others are powerful enough to change the world.
Here are a few examples from the history of computingall within my own lifetime.
Back in 1963, using a typical computer was not all that different from punching keys on a fancy typewriter.observed that people were essentially writing letters to computers. Sutherland was something of a prodigy; in high school hed learned to program a computer, the Simon, when there were fewer than a thousand such personal computers in the world. His new idea was a drawing system he called Sketchpad. Using Sketchpad, people could interact with a computer through a graphical user interface, by pointing with a light pen to create architectural and engineering diagrams, artistic drawings, and animations. Todays Apple Macintosh and Microsoft Windows would look very different, if they existed at all, without Sketchpads influence.
Next page