Magnetic Tape - Paper Tape - IBM Card - Magnetic Ink Characters
Control
Before we feed the problem into the machine, or before we give it some “raw” data to process, we had better tell our computer what we want it to do. All the fantastic speed of our electrons will result in a meaningless merry-go-round, or perhaps a glorious machine-stalling short circuit unless the proper switches open and close at the right time. This is the job of the control unit of the computer, a unit that understands commands like “start,” “add,” “subtract,” “find the square root,” “file in Bin B,” “stop,” and so on. The key to all the computer’s parts working together in electronic harmony is its “clock.” This timekeeper in effect snaps its fingers in perfect cadence, and the switches jump at its bidding. Since the finger-snapping takes place at rates of millions of snaps a second, the programmer must be sure he has instructed the computer properly.
The ideal programmer is a rare type with a peculiarly keen brain that sometimes takes seemingly illogical steps to be logical. Programmers are likely to be men—or women, for there is no sex barrier in this new profession—who revel in symbolic logic and heuristic or “hunch” reasoning. Without a program, the computer is an impressively elaborate and frighteningly expensive contraption which cannot tell one number from another. The day may come when the mathematician can say to the machine, “Prove Fermat’s last theorem for me, please,” or the engineer simply wish aloud for a ceramic material that melts at 15,000° C. and weighs slightly less than Styrofoam. Even then the human programmer will not start drawing unemployment insurance, of course. If he is not receiving his Social Security pension by then he will simply shift to more creative work such as thinking up more problems for the machine to solve.
Just as there are many jobs for the computer, so there are many kinds of programs. On a very simple, special-purpose computer, the program may be “wired-in,” or fixed, so that the computer can do that particular job and no other. On a more flexible machine, the program may still be quite simple, perhaps no more than a card entered in a desk unit by an airline ticket agent to let the computer arrange a reservation for three tourist seats on American Airlines jet flight from Phoenix to Chicago at 8:20 a.m. four days from now. On a general-purpose machine, capable of many problems, the program may be unique, a one-of-a-kind highly complex set of instructions that will make the computer tax its huge memory and do all sorts of mental “nip-ups” before it reaches a solution.
A computer that understands about sixty commands has been compared to a Siamese elephant used for teak logging; the animal has about that many words in its vocabulary. Vocabulary is an indication of computer as well as human sophistication. The trend is constantly toward less-than-elephant size, and more-than-elephant vocabulary.
The programmer’s work can be divided into four basic phases: analysis of the problem; application or matching problem requirements with the capabilities of the right computer; flow charting the various operations using symbolic diagrams; and finally, coding or translating the flow chart into language the computer knows.
The flow chart to some extent parallels the way our own brains solve logic problems, or at least the way they ought to solve them. For example, a computer might be instructed to select the smallest of three keys. It would compare A and B, discard the larger, and then compare with C, finally selecting the proper one. This is of course such a ridiculously simple problem that few of us would bother to use the computer since it would take much longer to plot the flow chart than to select the key by simple visual inspection. But the logical principle is the same, even when the computer is to be told to analyze all the business transactions conducted by a large corporation during the year and advise a program for the next year which will show the most profit. From the symbolic flow chart, the programmer makes an operational flow chart, a detailed block diagram, and finally the program itself. Suitably coded in computer language, this program is ready for the computer’s control unit.
With a problem of complex nature, such as one involving the firing of a space vehicle, programmers soon learned they were spending hours, or even days, on a problem which the computer proceeded to zip through in minutes or seconds. It was something like working all year building an elaborate Fourth of July fireworks display, touching the match, and seeing the whole thing go up in spectacular smoke for a brief moment. Of course the end justifies the means in either case, and as soon as the computer has quit whirring, or the skyrockets faded out, the programmer gets back to work. But some short cuts were learned.
Even a program for a unique problem is likely to contain many “subroutines” just like those in other problems. These are used and re-used; some computers now have libraries of programs they can draw on much as we call on things learned last week or last year.