A program is a set of instructions for a computer that causes a computer to perform useful work. Programming is the craft of creating programs.
Programming is a specialty craft. As Edward Tenner points out in Why Things Bite Back, advances in technology imply more, not less, craft knowledge. To have advanced technology, there must be corresponding advanced specialty crafts of creating, applying, and maintaining that technology. In a very real sense, computer programmers are the village blacksmiths of the information age: the people who, through application of skill and labor, turn raw materials and intermediate goods into finished goods economically useful in the context of the immediate environment. The raw descriptions of what a blacksmith does and what a computer programmer does are both deceptively simple: one heats pieces of metal and beats on them with a hammer, one types. Neither of these descriptions, however, highlights the necessary skill the two artisans bring to the task.
As with the blacksmith, the dependence of society on the computer programmer will initially grow, then wane. Only a few centuries ago, dealing with the blacksmith was a normal and typical part of life. At the present time, relatively few people could even find a blacksmith, much less use one in their daily lives. Most goods are manufactured in bulk, rather than produced to individual requirements. Even for the creation of custom items, the labor-intensive blacksmith has largely been replaced by the capital-intensive machine shop. Most software engineers would agree that, at some level, the overall purpose of software engineering is to make computer programming obsolete. As currently understood, computer programming is far too labor-intensive to survive. The industry average for fully designed, tested, debugged, integrated, and maintained code is about 500 lines per programmer year — about four hours per line of code. The amount of labor required to make computers economically useful is simply unsustainable.
One solution to this conundrum is to remove the need for programming. Another is to make programming ubiquitous — to make everyone a programmer. Something similar has already been done with the telephone system. Legend has it that in the 1950s, the Bell company predicted that by 1980, handling the call volume would require every citizen in America to be a telephone operator. And, by 1980, every citizen in America was a telephone operator, as that function was understood in 1950. A telephone operator in 1950 instructed the telephone system how to connect the telephones involved with a call — by manipulating a plugboard. A customer in the 1980s did the same thing — by dialing the telephone.
[ Previous page | Top of page | Next page ]
Copyright © 2001 Brian Hetrick
Page last updated 30 December 2001.
Tutorial
Introduction
What is Programming?
Modularization
Data Structures I
Recursion
Program Attributes
Building Blocks II
Algorithm Analysis
Structuring
Data Structures II
Abstract Types
Objects
Problem Analysis
Reference Card
![]()