HOME  |  CONTACT US  |
 
The Philosophical Programmer: Reflections On The Moth In The Machine

by Daniel Kohanski
256 pages,
ISBN: 0312186509


Post Your Opinion
Elegant Solutions Improve Programming
by Rory A.A. Hinton

Books In Canada seems an unlikely place to review a book on computer programming. But The Philosophical Programmer is no ordinary programming book. You will not learn how to write code by reading it. You will, however, learn about some of the ethical consequences of the art and science of writing code and why these consequences matter. I use these terms deliberately. The science of writing code is clear enough, especially to programmers. But for those for whom this is not the case, this book fulfills an important need. It presents the basics of this science clearly enough that even a computer neo-phyte can begin to understand and appreciate it. However, the art of writing code is less familiar. Indeed, it seems surprising that Kohanski, a seasoned programmer and systems consultant in his own right, would dare not only to ask the question "Is there an aesthetic of programming?" in this book, but also to devote an entire chapter to answering it. But it is Kohanski's answer to this question which justifies his linking the art with the science of programming, as well as thinking that we heirs of the "computer age" ought to be concerned with it's ethical consequences.

Consider the following fact. In the early 1950's IBM made the decision to divide computing into two branches: business computing (for mundane data manipulation), and scientific computing (for real-time device control). These two branches are now converging in many new technologies. This convergence is creating what some analysts are calling the embedded systems crisis. This crisis consists in the fact that the embedded networking of computer devices is increasing their complexity. Software is therefore becoming less isolated and more concerned with linking and operating these embedded technologies. The modern aircraft is a good example of this. Its fuel metering, its navigation, and its weather monitoring systems are all interconnected into a central computing system. The key to the development and maintenance of this system, and to others like it, lies in the software. This leads to more complicated software, which puts great pressure on the computer programmer. If the software does not match the exponential growth of the hardware then the analysts are right to speak of a crisis.

How does the art of programming fit in here? Kohanski's answer is pragmatically straightforward: "The better designs are more aesthetically pleasing because they are more efficient and take more considerations into account" (11). These considerations matter. A badly designed program is notoriously error-prone. Errors in the software that drives the hardware cannot be tolerated. To make his point about zero tolerance, Kohanski mentions how the U.S.S. Vincennes shot down a civilian Iranian airplane. The crewmen of the Vincennes were confused by the way the data was displayed on the computer screen (in large part because of badly designed software). If you think of the art of programming in terms of efficiency, then the more aesthetic a program is, the more scientific it will be.

The notion of an embedded system goes a long way toward characterizing Kohanski's own philosophy of programming. The creators and maintainers of the hardware and the software are as embedded in the same holistic system of empirical prediction and control as the hardware and software itself. Kohanski's discussion of the ethical consequences of writing code is but an instance of the more general philosophical point he makes about the evolutionary character of lived-experience. Words are tools for intervening in our environment. Computer programming is therefore nothing but a complex variation of using words to get things done. In this sense the written word, at least as it gets manifested in the written code, is mightier than the sword. If Kohanski's book persuades a new generation of programmers to think that they are not autonomous, that they do not work in a vacuum, and that their work has real-time consequences, then it will prove its own philosophical point about the usefulness of words as tools to get things done. ò

Rory A.A. Hinton, PhD, Contributing Editor

Books In Canada

footer

Home First Novel Award Past Winners Subscription Back Issues Timescroll Advertizing Rates
Amazon.ca/Books in Canada Bestsellers List Books in Issue Books in Department About Us