Computing for Ordinary Mortals
Robert St. Amant
Format: PDF / Kindle (mobi) / ePub
Computing isn't only (or even mostly) about hardware and software; it's also about the ideas behind the technology. In Computing for Ordinary Mortals, computer scientist Robert St. Amant explains this "really interesting part" of computing, introducing basic computing concepts and strategies in a way that readers without a technical background can understand and appreciate.
Each of the chapters illustrates ideas from a different area of computing, and together they provide important insights into what drives the field as a whole. St. Amant starts off with an overview of basic concepts as well as a brief history of the earliest computers, and then he traces two different threads through the fabric of computing. One thread is practical, illuminating the architecture of a computer and showing how this architecture makes computation efficient. St. Amant shows us 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, describing how computers are, in the abstract, machines for solving problems. Some of these ideas are embedded in much of what we do as humans, and thus this discussion can also give us insight into our own daily activities, how we interact with other people, and in some cases even what's going on in our heads.
St. Amant concludes with artificial intelligence, exploring the possibility that computers might eventually be capable of human-level intelligence, and human-computer interaction, showing how computers can enrich our lives--and how they fall short.
amount of memory to run, more memory than is available in the system? Remember two things. First, secondary storage is typically a great deal larger than main memory. Second, the locality principle applies to memory accesses: a running program is likely to execute an instruction that’s located immediately next to the previous instruction in memory, and it also tends to retrieve data from memory locations close to each other. We can take advantage of these observations with what’s called demand
network, but it’s a possibility. If airmail were introduced, it would operate at the layer responsible for physical transportation. The layers above, all the way up to the layer that includes the human sender and recipient, don’t have to know about the change. Documents will simply arrive sooner. The second concept is that of a protocol. Ordinarily we think of protocols as the arbitrary rules of etiquette that diplomats follow so as not to offend the leaders of other countries, but we also use
memex network follow a similar rule.) We’ve seen modularity at the level of hardware components inside a computer, in programs we’ve written, and in the operating system—here it applies to entire networks of computers. The effect is to make it easy for networks and individual computers to connect to the Internet. • Complex processing would be pushed to the edges of the Internet. Gateways in the ARPANET evolved into what are today called routers. A router handles network communications in a
and due to the Church-Turing thesis we can say that it applies to all algorithms, running as programs on all the different kinds of computers we now know of. Unless someone comes up with a fundamentally different explanation of what computation is, there are some things that computers simply can’t do.12 You may be familiar with Gödel’s Incompleteness Theorem, which roughly says that if you develop a formal system of logic that’s powerful enough to represent basic arithmetic, your system will
called SAT, which is also in NP.21 As with our duplicate card example, a solution to the SAT problem can be transformed back into a solution to the original problem. This means that SAT is an NP-complete problem. It turns out that SAT itself can be reduced to other problems in NP, which makes those problems also NP-complete. One aspect of NP-completeness is that if we can find an efficient algorithm that solves just one NP-complete problem, we can also efficiently solve all NP-complete problems.