The Turing Guide

(nextflipdebug5) #1

218 | 21 ACE


The ACE section developed an impressive subroutine library, which included common
requirements such as trigonometric functions and matrix operations. The subroutine library
was notable for the sophistication of its numerical methods, developed under the leadership of
Wilkinson. Using subroutines in programs typically reduced their length by a factor of 3, and
correspondingly reduced debugging and the chore of optimum coding.
Programming for the Pilot ACE was a two-stage process: first, the program was written out
on paper as a sequence of instructions, much the same as for any other computer; second, the
program was ‘optimized’ by the programmer, who assigned every instruction, data item, and
variable to a particular storage location in the delay line memory.^5 Optimization was very time
consuming: it was rather like a sliding block puzzle, and it took a degree of experience to get the
balance right between programmer time spent optimizing and machine time saved.
A potential solution to the optimum programming problem was an automatic optimization
program. Although some independently developed American machines were supplied with
automatic optimization routines, this was never done for the Pilot ACE.
An attempt to write such a program was made by Christopher Strachey, starting in January



  1. (Strachey was then a schoolteacher who had become interested in computers and
    obtained an entrée to NPL through a mutual friend of his and Woodger’s. He never looked
    back: see Chapter 23.) Writing an optimization routine was a formidable challenge and Strachey
    did not get far before he was seduced in July 1951 by the larger capacity of the Ferranti Mark
    I at Manchester University. By that time Turing had been appointed deputy director of the
    Computing Machine Laboratory at Manchester; he and Strachey already knew one another
    slightly as they were both at King’s College before the war. Turing suggested that Strachey write
    a ‘trace’ program so that the machine simulated itself—this was potentially a useful debugging
    tool (see Chapter 23). Neither Strachey nor anyone else ever successfully took up the automatic
    optimization challenge for the Pilot ACE.
    Because subroutines were written once, but used many times, they justified a big investment
    in optimization and they showed the Pilot ACE at its best. This was particularly the case with
    the ‘floating-point’ subroutines. Floating-point representation enabled calculations to be per-
    formed without regard to the magnitude of the numbers involved, as on a modern electronic
    calculator. Without floating-point operations, numbers had to be kept within the (typically ten
    decimal digit) capacity of the machine, which involved tricky scaling operations. Table  21.1
    shows the comparative speeds of the floating-point subroutine libraries for the Pilot ACE and
    the Cambridge and Manchester computers: the Pilot ACE was roughly ten times faster than its
    competitors. Noting that the Pilot ACE contained 800 electronic tubes, whereas the Ferranti
    Mark I and EDSAC both contained over 3000, one can argue that the Pilot ACE was perhaps
    twenty times more cost-effective. It was a tour de force.


Table 21.1 Floating-point operations.
Operation Time (milliseconds)
Pilot ACE EDSAC Mark I
Add/subtract 8 90 60
Multiply 6 105 80
Divide 34 140 150
Free download pdf