Dr. Dobb's is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.


Channels ▼
RSS

Programmer's Bookshelf


Mar99: Programmer's Bookshelf

Jonathan is founder and president of Astrel, a Java training and consulting firm. He also teaches programming at New York University. He can be reached at [email protected].


People are understandably curious about the lives of authors -- you can't help but wonder what about Stephen King's childhood led him to write such macabre tales, for instance. But when it comes to computer scientists, we don't look any further than their work. That, too, is understandable. After all, the structure of a programming language doesn't suggest many questions about its designer.

So, a book such as Out of Their Minds is all the more welcome. In clear, nontechnical prose, DDJ contributing editor Dennis Shasha and Cathy Lazere provide synopses of the lives and work of 15 of the greatest living computer scientists. Some are relatively well-known luminaries like Alan Kay, whose vision of a portable computer for children influenced a generation of computer designers and led indirectly to the Macintosh; or Donald Knuth, whose TeX typesetting system and three-volume book on algorithms are staples in computer-science departments. Others, like Michael Rabin and Doug Lenat, are not well known outside their respective subfields. All have made major contributions to computer science.

Each chapter begins with a brief introduction to the subject's work, provides a biographical sketch, then explains the technical contributions. The authors's explanations are interleaved with comments from the subject himself, gleaned from interviews. Technical details that might distract the unprepared reader are thoughtfully relegated to sidebars.

Shasha and Lazere conclude with a summary of the characteristics exhibited by their subjects. Interests in music and biology are fairly common, and while early academic success was not universal, eventually all of the researchers found mentors at top-quality institutions. Another commonality is that all the book's subjects are male; unfortunately, women are only just beginning to make a mark in computer science.

Nontechnical readers will come away from Out of Their Minds with a better sense of computer science, learning about such topics as complexity theory, hardware design, and artificial intelligence. Even those with a background in the field are likely to learn something new, so broad is the book's scope. And everyone will enjoy the book for the glimpses it provides into the personal lives and beliefs of some of the giants of the discipline. For instance, many programmers know that John Backus invented Fortran, but few realize that he barely made it through high school and flunked out in his first attempt at college. That and other fascinating details, technical and otherwise, make this book well worth reading.

It is by now a truism that every technology is a double-edged sword, creating new problems even as it solves old ones. Computers are no different, but because of their complexity, their ubiquity, and their interconnectedness with so many other technologies, computer risks are greater in degree. Not only are the potential problems more severe, but they come in so many different varieties that even classification seems daunting.

Peter Neumann has taken up the challenge of classifying and analyzing these problems in his book Computer-Related Risks. Neumann, a researcher at SRI International, runs the Risks Forum Internet newsgroup as a kind of sideline, and writes the "Inside Risks" column for Communications of the ACM. His book divides roughly into two sections. The first is a collection of problems and disasters, drawn mostly from the Risks Forum and classified according to the type of problem -- reliability, safety, security, and so on. The second part of the book is a more general analysis of risk in computer systems, along with some recommendations for avoiding problems in the future.

Neumann's analysis of risk has its interesting parts, particularly a careful and sobering discussion about the trade-offs involved in implementing a computerized voting system. He points out the inevitable inconsistencies in designing a system that respects the privacy of a voter's choices, but is also immune to fraud -- which would seem to require the ability to inspect individual voting records. But at many places in the latter half of the book, Neumann's prose bogs down in generalities and abstractions. Sentences like, "Of particular interest here are the problems of addressing the different requirements, observing the most useful principles, and developing robust systems that can dependably and simultaneously satisfy all of the requirements, including when operating under recovery and other emergency conditions" marshal a great many words in service of the obvious.

The greatest pleasure in this book is gleaned in the first half, with its rich collection of risk anecdotes. Here, Neumann is more concise and concrete, even funny at times. While some of the events are true catastrophes -- Chernobyl, for instance, or the shooting down of an Iranian passenger plane by the USS Vincennes -- others have a Keystone Kops quality at which you can't help but smile. One of my favorites is the 1986 ARPAnet outage. (The ARPAnet, funded by the Department Of Defense's Advanced Research Projects Agency, was the precursor of the Internet.) In Neumann's words:

Reliability concerns dictated that logical redundancy should be used to ensure alternate paths between the New England ARPAnet sites and the rest of the ARPAnet. Thus, seven separate circuit links were established. Unfortunately, all of them were routed through the same fiber-optic cable, which was accidentally severed near White Plains, New York, on December 12, 1986.

This story teaches the importance of having redundancy at all levels more effectively than any abstract statement of the same principle.

Taken as a whole, the risk anecdotes make it clear that there is no single clause or even small set of causes responsible for problems, and thus, no easy solutions. Certainly, technology will not save us from itself. We who use modern programming languages can smile at stories of spacecraft gone awry because of a misplaced comma and feel confident it won't happen again, but the vast majority of disasters suggest no easy fix. They arise from bizarre combinations of unforeseen events, systems operating in environments for which they were not designed, and human blunders that are often common-sense responses to poor design or unusual circumstances. The moral of the story for system designers is to expect the unexpected and to consider carefully the system's users, the context of use, and the effects of the system on the larger society.

Neumann concludes by calling for a balanced view of technology -- one that sees technology as an enabler of human potential rather than an infallible replacement for human foibles. Not every new technology is an advance. For some, the risks outweigh the benefits.

DDJ


Copyright © 1999, Dr. Dobb's Journal

Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.