Extract from Chapter 6
This passage explains the most important aspect of Turing's original 1946 plan for the Automatic Computing Engine: not the details of the hardware, but the principles as set forth by Turing which underlay the development and scope of software for the rest of the century.
This passage begins after explaining how Turing exploited the stored program concept to allow for modifying programs ('instruction tables'), then described the coding of subroutines for floating-point arithmetic, and then formulated the concept of the stack  for subroutine calling, bringing in the concept of a hierarchy of 'master' and 'servant' programs.
The concept of a hierarchy of tables brought in further applications of program modification. Thus he imagined 'keeping the instruction tables in an abbreviated form, and expanding each table whenever we want it' — the work being done by the machine itself, using a table called EXPAND. The further he progressed with this idea, the more he saw that the ACE could be used to prepare, collate and organise its own programs. He wrote:
Instruction tables will have to be made up by mathematicians with computing experience and perhaps a certain puzzle-solving ability. There will probably be a good deal of work of this kind to be done, for every known process has got to be translated into instruction table form at some stage. The work will go on whilst the machine is being built, in order to avoid some of the delay between the delivery of the machine and the production of the results. Delay there must be, due to the virtually inevitable snags, for up to a point it is better to let the snags be there than to spend such time in design that there are none (how many decades would this course take?) This process of constructing instruction tables should be very fascinating. There need be no real danger of it ever becoming a drudge, for any processes that are quite mechanical may be turned over to the machine itself.
It is not surprising that he looked forward to the process of writing instruction tables as 'very fascinating'. For he had created something quite original, and something all of his own. He had invented the art of computer programming. It was a complete break with the old-style calculators — of which, in any case, he knew little. They assembled adding and multiplying mechanisms, and then had the job of feeding in a paper tape to make them work in the right order. They were machines to do arithmetic, in which the logical organisation was a rather tiresome burden. The ACE was quite different. It was to be a machine to play out programs 'for every known process.' The emphasis was placed ion the logical organisation of the work, and the hardware arithmetic added only to short-cut the more frequently used constituent operations
On desk calculators, the figures 0 to 9 would appear visibly in the registers and the keyboard, and the operator would be led to feel that in some way the calculator had the numbers themselves stored with it. In reality, it had nothing but wheels and levers, but the illusion would be strong. The illusion carried over to the big relay calculators, the Aiken and Stibitz machines, and to the ENIAC. Even the EDVAC proposals carried the feeling that the pulses in the delay lines would somehow actually be numbers. But the Turing conception was rather different, and took a more abstract view. In the ACE, one might regard pulses as representing numbers, or as representing instructions. But it was really all in the mind of the beholder. The machine acted, as he put it, 'without understanding', and in fact operated not on numbers nor on instructions, but on electronic pulses. One could 'pretend that the instruction was really a number', because the machine itself knew about neither. Accordingly, he was free in his mind to think about mixing data and instructions, about operating on instructions, about tables of instructions being inserted by other instructions of 'higher authority.'
There was a reason for his facility to take this liberated approach. Ever since he first thought about mathematical logic, he was aware of mathematics as a game played with marks on paper, to be manipulated by chess-like rules, regardless of their 'meaning.' This was the outlook that the Hilbert approach encouraged. Gödel's theorem had cheerfully mixed up 'numbers' and 'theorems', and Computable Numbers had represented instruction tables by 'description numbers'. His proof of the existsnce of unsolvable problems depended upon this mixing up of numbers and instructions, by regarding them all alike as abstract symbols. It was therefore a small step to regard instructions, and instruction tables, as grist to the ACE's own mill. Indeed, since so much of his war work had depended upon indicator systems, in which instructions were deliberately disguised as data, there was no step for him to make at all. He saw as obvious what to others was a jump into confusion and illegality.
This vision of the ACE's function was also tied in with the imitation argument. The ACE would never really be 'doing arithmetic', in the sense that a human being would. It would only be imitating arithmetic, in the sense that an input representing '67 + 45' could be made to guarantee an output representing '112'. But there were no 'numbers' inside the machine, only pulses. When it came to floating-point numbers, this was an insight of practical significance. The whole point of his development was that the operator of the ACE would be able to use a 'subsidiary table' like MULTIP, as if it were a single instruction to 'multiply.' In actual fact, it would have the effect of much shunting and assembling of pulses inside the machine. But that would not matter to the user, who could work as if the machine worked directly on 'floating-point numbers.' As he wrote, 'We have only to think how this is to be done once, and then forget how it is done.' The same would apply if the machine were programmed to play chess: it was be used as if it were playing chess. At any stage, it would only be outwardly imitating the effect of the brain. But then, who knew how the brain did it? The only fair use of language, in Alan's view, was to apply the same standards, the standards of outward appearance, to the machine as to the brain. In practice, people said quite nonchalantly that it was 'doing arithmetic'; they should also say that it was playing chess, learning, or thinking, if it could likewise imitate the fucntion of the brain, quite regardless of what was 'really' happening inside. Even in his technical proposals, therefore, they lay a philosophical vision which was utterly beyond the ambition of building a machine to do large and difficult sums. This did not help him to communicate with other people.
© Andrew Hodges, 1983