What happens if an electronic brain makes a mistake? Or doesn't that ever happen?
Yes, it does. Unfortunately. Not as often as it used to, but often enough. This is regrettable, for an electronic computer entrusted with the task of working out the route of a manned rocket to the moon should not make any mistakes.
Unfortunately one can never be quite sure that it will not. Happily there are several reliable methods by means of which errors, even if they cannot be quite ruled out, can be quickly brought to light and then corrected. One of these methods is to make every calculation twice, and simultaneously, in two different arithmetic-units of the same apparatus. Sperry-Rand's Univac keeps tabs on itself this way. Again and again it extracts intermediate results from both arithmetic units, and - to put it simply - subtracts them from each other. If both numbers are the same, the result must be zero. If the result is something else, one of the calculations must be wrong and the machine gives an alarm signal: it stops calculating and causes a lamp to light up.
Two heads are better than one, says the proverb. But they cost more if they are working for an employer.
In early times, such double machines (Univac was one of the first computers) have been expensive. More sophisticated methods are now being used to check the results of calculations. They are called "code tests."
But first of all we must understand just how it is possible for a computer to make a mistake at all. For example, storages or parts of arithmetic units may simply fail completely on account of major damage. There is no escaping this kind of occasional accident - but mistakes are not liable to arise from such reasons. If anything like this happens, the machine can no longer run and comes to a standstill. What happens much more frequently is that a transistor fails, a soldered joint loosens or a small fault - a quite tiny defect - develops in a storage. When this occurs, a pulse from a coded number is lost. What was previously "01010" turns out as "00010" or "01000," and that naturally creates annoyance and nonsensical totals. Now and again it happens too that an undesirable new pulse creeps in, three "1"s turn up instead of two. Afterwards, no technician can say just where the superfluous pulse came from.
And now you will be able to see at once why counting in a (2/5) code is a good thing. You will remember that in this code a sign consists of two "1"s and three "0"s. For code testing you need only take a look now and then during the course of the counting operation to make sure that the intermediate results still have two "1"s, two pulses. In addition, you distribute single flip-flops to many points, the positions of which have been cleverly worked out. If the pulses of an intermediate result pass by, part of their electric energy is diverted, so you make artful arrangements to ensure that the pulses do not run parallel to each other on five wires but come in successively, and you then lead them to the next flip-flop to be checked. If the pulses come in pairs, as they should, you switch in the flip-flop, once in each direction, and everything is all right again. But if there is only one pulse, or if there are three of them, the flip-flop stays put in the wrong position and at once sounds the alarm: a bell rings and signal lamps flash. At the same time a lamp lights up on a panel, showing just whereabouts in the computer the attentive flip-flop is to be found which discovered the mistake.
Another objection will probably have occurred to you. What happens if, through sheer cussedness, not only one pulse slips off, but both of them? Or if one vanishes and another one, a wrong one, creeps in? Will the flip-flop notice?
No, not even the flip-flop will notice anything. But this possibility is so unlikely that you simply assume it will never happen. A simple mistake occurs in modern machines once (nobody knows exactly) in about 100,000, 000 counting operations! The chance that a double uncheckable error will be made, according to the laws of probability, is one in 100,000,000 times 100,000,000, ie. once in 10,000,000,000,000,000 operations. We can afford to take the risk.
There are other ways of checking up too. The negaters in front of the and-gates and or-gates, which we mentioned at the beginning of this chapter, see to it that only coded numbers with the correct pulses will have anything to report. And finally, the mathematicians who provide the computers with work are never at a loss for ideas on minor, occasional calculations with which they can check the course of events.