Index  Comments

The book being recommended is ``Alan Turing's Electronic Brain'' by various (ISBN 9780199609154). Information concerning it may be found here.

This recommendation is different from all those preceding it, as it recommends a book that is neither gratis, freely available over the Internet, nor under a license that permits different manner of distribution or whatnot. I feel I've rather exhausted those such books that I would recommend to others, as this was a subset of a subset of the total books that I've read. Future recommendations will likely continue this trend, accordingly.

Alan Turing is known as a grand figure of computing and this work details his contributions while at the National Physical Laboratory (NPL) of Teddington and the legacy thereof. The NPL performed various manner of research including radio, electronics, and illumination; it later gained a Mathematics Division, which would perform trajectory and statistical calculations and research, along wth other mathematical tasks. From the Mathematics Division came the Automatic Computing Engine (ACE) project, which Alan Turing would later join and contribute a design to. This book is split into five sections and this very briefly summarizes part of the first.

The second section details more of Alan Turing's work and general computing history, starting with the formalization of the Turing machine in response to the Entscheidungsproblem and mentioning Alonzo Church along with Alan Turing's working during the war. Lesser known of Alan Turing are his ``unorganised machines'', which the book describes as neural networks and this is a rather fascinating section to later be mentioned again. Later details involve the ACE in relation to vintage and future machines of the time. I disagree with the author that the ACE design can be thought of as RISC.

A large amount of the book is dedicated to topics of the ACE design and its derivatives, such as the Pilot ACE, the DEUCE (Digital Electronic Universal Computing Engine), and the Bendix G15. It is amazing, I believe, to read of these early machines and their wonderfully unique designs; anyone who is interested by machine design and construction will find this wondrously fascinating. This is especially the primary topic of the third section. The ACE instruction format is discussed among other, possible designs and a brief glimpse at MIPS; it is interesting to note that the ACE had thirty-two bit instructions, as the entire machine was based around this unit. The ACE had a very fascinating mercury delay line memory holding thirty-two units of thirty-two each, generally, and the instruction format reflected this with its memory-to-memory qualities; memory could only be accessed at one end and so all instructions contained the line and relative position therein of the next instruction; following, all instructions transferred from a source line to a destination line, with a wait number for the appropriate memory to be revealed and also a characteristic number that told the number of transfers to make; as operations and constants were attached to specific lines as destinations or sources, this permitted performing an operation on all numbers of a delay line in a single instruction, which is one reason I disagree with calling this design RISC; reflecting on the interactivity of this machine, there was also a bit indicating whether the instruction should temporarily halt or not; there was even an unused bit. It's interesting to see such large instructions on what is now such a small machine. The use of the all zeroes instruction is fascinating for program entering purposes on a fresh machine.

This is the state diagram of the Bendix G15 computer shown as a cartoon character, from the book.  As this is a review, this constitutes fair use.

Continuing with the third section are several examples of programming the ACE and its various stages of design as it was being built and whatnot, including how discrimination and multiplication were programmed and conversion between binary and decimal. As mentioned, the design is also compared to those other designs of the time for such operations as square root, division, and operations on integral, floating, and fixed type numbers; matrix multiplication, solving linear equations, and traffic simulation, to name three, are also discussed in some detail. The descriptions of the improvements made by the DEUCE and Bendix G15 are interesting; using magnetic drum memory as an improvement over mercury delay lines that shares the interface stands out in my mind. The DEUCE's Automatic Instruction Modifier (AIM) achieved simple loop control and other things, which is such an interesting way to go about it, as opposed to the static program memories now so common. The advancement from writing machine code manually, to an assembler language, to a symbolic such language, to high-level languages is noteworthy; the complex ``bricks'' of the General Interpretive Programme (GIP) for operations such as matrix inversion and regression analysis could be combined easily into good programs; GEORGE was a stack-based language that would be familiar to Forth programmers; and Alphacode was an interpreted language with the option of compilation to machine code. Lastly in the third section are chapters concerning ACE simulation and cybernetics and modern ACE simulation.

Follows is my favorite passage from this book:

Optimum coding-good or bad? It led to very fast routines but we could overdo it! I recall that when a built-in divider was available on DEUCE, I explored the usual iterative method for finding square roots to replace our digit-by-digit method learned at school. I found that for a floating point number x in the range 1/2 - 2, a starting guess of a + x/2 gave full accuracy through the range with, if I recall correctly, three iterations. The value for a was around 0.48. By chance, I spotted an instruction which when converted to decimal was about this size, so I used it to save a store. Some time later, a puzzled user had considerable difficulty in understanding my inadequately documented routine.

The fourth section, however brief, concerns itself with valves, vacuum tubes, and the circuit designs for the ACE models and is a nice glimpse into the past of computing, as compared to modern, opaque machines. Lastly is that fifth section which includes writings directly from Alan Turing, including his proposal for the machine; notes on computer memory technologies, characteristics, and economy; transcriptions of lectures he gave; and a separate report on state of the art digital computing. All of these writings are from 1945-1947. Again, these are fascinating insights into how these machines were thought of and compared at the time. Reliability is one concern that doesn't come up nearly so much nowadays; on that note, one aspect of writing programs for these machines involved otherwise redundant checking calculations, in case the hardware failed in transparent and minute ways.

This is a logical operations circuit diagram of the ACE in an abstract form, from the book.  As this is a review, this constitutes fair use.

With this recommendation I've gone into much more detail than is usual, as it's not unreasonable for a recommendation to be brief and alerting more than necessarily informative by other ways. However, this recommendation is as much for my reflecting upon as it is for your reading. An ancestor without whom I'd have never learned of this work gifted me this book and it is so dear to me in how interesting and thought-provoking it is to one so interested in machine architecture and design. It has provided an invaluable reprieve from the monotony of modern computer design that threatened to cloud out ideas from ever appearing in my mind. It is a good book.