in May 1949 a new form of human activity began
- Robin Milner, at the EDSAC 99 anniversary event
I first became interested in EDSAC through following the progress of the heroic EDSAC Replica Project. The replica team are painstakingly retracing the steps of the original creators, reconstructing one of the first digital stored-program computers. The possibility of working hardware inspired me to investigate and attempt to produce some software for it. In the process I've gained appreciation for the magnitude of the achievement and the early shape of this new human activity.
by today’s standards the book is pretty unreadable!
- Edsger Dijkstra, EWD718
The reference text for programming EDSAC has a long-winded title: THE PREPARATION OF PROGRAMS FOR AN ELECTRONIC DIGITAL COMPUTER (or WWG1951 after the author surnames). “Electronic” and “digital” might seem redundant, but there were analog differential analysers and most computers were human.
Reading across a 70 year divide in a fast-moving field is challenging, partly because most typical search keywords and terminology of today haven’t been invented yet, e.g. bit, byte, boot, register, operating system.
I was surprised by the lack of precision about the semantics of operations in the book. Perhaps because they were still evolving, or because the authors wanted the freedom to make changes. Or possibly because programmers were expected to discover the semantics by interacting with the hardware. In the present day the listings together with known outputs of extant programs proved a better reference for corner cases.
The quest for stronger abstractions is very apparent. There’s placeholder syntax for variables and concepts that exist in the text, but not the machine language. A lot of symbolic structure is carried by the programmer, either in their head or the margins of their program sheets. The second revision of initial orders (an early bootloader) freed the programmer from some manual bookkeeping that a modern linker does.
It is, in fact, rare for a program to work correctly the first time it is tried
- WWG1951
Creating programs of meaningful size for EDSAC is extremely difficult, in a way you understand better by trying.
The first drafts of what became pi_tank.asm were written
directly in EDSAC operations. It was excessively tedious, even with the
help of relocatable subroutines afforded by initial orders 2. It felt a
bit like cheating to create an assembler, but it was also instinctive.
Andrew Herbert did
the same, so at least I’m not alone!
John von Neumann was reportedly very upset, around the same time at Princeton, when one of his students wrote an assembler. His argument was that using a scientific instrument for clerical work is a waste. His objection has merit in economic terms: computer time was so precious that the human should perform the machine translation, and an assembler was a luxury. That position is incomprehensible today, because the economics have inverted. Programmer time is expensive and machine time is practically free.
Access to computing was extremely rarified in 1949: only a single machine, in a single building in Cambridge, tended by specialists, available to a few researchers. Computing was a privilege, one that you can enjoy today from the comfort of a browser tab. Try a game of tic-tac-toe written in 1952, or discover whether EDSAC could have held the record for digits of pi in an alternative history!
Based on age you might think the hardware of today should be a strict superset of its capabilities, much like your phone is orders of magnitude more capable than the computer on Voyager. But EDSAC’s accumulator is 71 bits wide - larger than a modern general-purpose register. The past has some surprising dimensions.