We have already mentioned that the number of storage cells a program needs to hold its instructions is a matter that demands just as much consideration as the time it needs for counting. Besides, storage space is often scarce, particularly where giant programs are concerned. In such cases, the programmer must not only be a mathematician; he must also have the business talents of the manager of an industrial plant, and be capable of weighing carefully the advantages of storage space versus short calculating-time. The utility of a particular program is often questionable until just this decision has been made or a satisfactory compromise has been arrived at. There are elaborately composed programs in which all the computer's stops, so to speak, are pulled out - programs, in which several arithmetic units work side by side simultaneously. There are programs, parts of which seem to be tied up in knots that look as if they could never be disentangled - programs for which even the most un-get-at-able out-of-the-way corners are used for storage cells in the hope that the machine can be persuaded to exert itself to its utmost in calculating power and speed. These are the programs which make those who had nothing to do with their production shake their heads and say: "Fantastic! It works!"
Mastery of all the gimmicks by means of which a program can lead a computer astray so skilfully that it reaches its destination more quickly - that is what distinguishes a really adept programmer from the run-of-the-mill kind.
A really advanced automatic calculator understands about 100 different instructions, including 30 or 40 which - according to the method of operation for which the machine has been adjusted - may have two or three different meanings. Generally a sequence of special instructions are added to this figure, so that a programmer who wants to utilize the capacity of his machine to the fullest must be well acquainted with between 150 and 200 different instructions and be able to guess how they will work out in practice. We have already introduced you to some arithmetical and logical instructions. Would it interest you to know that there are instructions by means of which the numbers in the accumulator can be shifted by as many digits as you please to the left or right of the decimal point? Or that there are others which can convert certain digits of a stored number to zero, making them disappear?
We have mentioned "jump instructions" before. They are among the most frequently used commands. In our addition program we have employed the backward jump; sometimes, however, a leap forward is made too. Consider, for instance, a program intended to work out the air resistance of an aircraft's fuselage. Now there are planes with and planes without a retractable under-carriage. The program has to satisfy the needs of both kinds. So a comparison or "look-up" instruction and a jump instruction are given just when the calculation process arrives at the question of the additional air-resistance of the rigid under-carriage. The lookup instruction makes inquiries to see whether there are any numbers present referring to a rigid under-carriage. If there are not, the jump instruction comes into action and forwards the program in one bound to the point at which further calculations will be made on the under-carriage problem. In this way, we save the time the computer would need to carry out mathematical processing of long series of sheer zeros, for a non-existent under-carriage.
The look-up instructions and jump instructions leave the computer free to decide how to carry on with the calculation. With their help, it can decide whether - say - a number has been so exactly predetermined that it is possible to make accurate further calculations with it, or whether it needs refining by the addition of a few more points of decimals; what kind of calculating procedure is most effective for defining a mathematical magnitude; whether there is any necessity to verify the validity of a newly-found formula by means of a few thousand more test-calculations, or whether the results obtained so far are reliable enough.