Opinion
Architecture and Hardware Historical reflections

In Praise of ‘Wilkes, Wheeler, and Gill’

Reflections on the first textbook on programming.
Posted
  1. Introduction
  2. Maurice Wilkes and EDSAC
  3. David Wheeler
  4. Stanley Gill
  5. References
  6. Author
  7. Figures
steel cabinet which held the EDSAC subroutine library
The EDSAC subroutine library was kept in the steel cabinet on the left in the image. Library tapes were copied mechanically onto the user’s program tape and then returned to the cabinet.

Sixty years ago, in spring 1951, Maurice Wilkes, David Wheeler, and Stanley Gill produced the first textbook on programming: The Preparation of Programs for an Electronic Digital Computer.2 It was a publication that spearheaded the software revolution.

The guiding light behind the book was Maurice Wilkes, who died last November at the great age of 97 years old. He was best known as head of the computer laboratory at Cambridge University, though he did a great deal more. His interest in computing long predated the modern digital computer. In 1937, he became assistant director of a newly established computing laboratory at Cambridge University, but development was cut short when Britain declared war on Germany in September 1939. The computing facilities were taken over by the military and Wilkes left Cambridge to join the scientific war effort. He worked on radar and operations research, which turned out to be an ideal background for the dawning of the computer age. In 1946, he returned to Cambridge with the mission of rebuilding the computer laboratory.

Back to Top

Maurice Wilkes and EDSAC

In May 1946, Wilkes got his first glimpse of John von Neumann’s famous EDVAC Report of June 1945, which laid out the design of the electronic stored program computer. It was brought to the laboratory by a visitor who took it away the following day. Wilkes had no copying facilities, so he stayed up half the night reading it. He recognized it at once as “the real thing” and never looked back. The following summer he attended the summer school organized by the Moore School of Electrical Engineering, University of Pennsylvania, where the designers of the ENIAC and EDVAC unveiled the inner workings of the new electronic computers. Returning to England on the Queen Mary, Wilkes began to sketch out the design of a machine he called the EDSAC, for Electronic Delay Storage Automatic Calculator. The name was consciously chosen in homage to the EDVAC, on which it was directly based.

From the beginning, Wilkes was more interested in having a computer for practical use than in having one of the highest technological performance. To this end he kept the EDSAC simple—conservative in electronics and straightforward in design. The machine sprang to life on May 6, 1949. It was quickly put into operational use and it was the first computer in the world to provide a practical computing service. EDSAC was Cambridge University’s principal computing resource until it was replaced by EDSAC 2 in 1958.

Within about six weeks, Wilkes made one of the most far-reaching discoveries of the computer age: that getting programs right was more difficult than it looked. As he subsequently recalled, it was while he was developing his very first application program that “the realization came over me with full force that a good part of the remainder of my life was going to be spent in finding the errors in my own programs.” Wilkes decided that making the programming process less error prone would be a good project for his research student David Wheeler.

Back to Top

David Wheeler

Wheeler was a brilliant student. He had graduated in mathematics in 1948 as a “wrangler”—the University’s argot for the top mathematicians of a cohort. While he was an undergraduate his interest in computing was piqued by the EDSAC that was then under construction and, in his own words, he pestered Wilkes to become involved. Wilkes put a soldering iron in his hand and Wheeler was hooked. In October 1948, he became Wilkes’s research student.

Like computer groups everywhere, the laboratory had a copy of the Planning and Coding reports produced in 1947–1948 by Herman Goldstine and John von Neumann at the Institute for Advanced Study, Princeton University.1 These seminal reports contained many key ideas, including that of a subroutine library. Most programs, it was observed, made use of common operations (such as computing a square root or integrating a differential equation). Using library subroutines not only reduced the amount of original code in a program but also cut down on the number of errors.

Goldstine and von Neumann did not come up with a particularly effective way of incorporating subroutines in a program, however. This enabled Wheeler to make his mark by devising a brilliant, practical solution known as the “initial orders.” The initial orders were something of a cross between a bootstrap loader and an assembly routine. Programs, which were punched on paper tape, consisted of a main program and a sequence of subroutines copied from the subroutine library. The library was kept in a small steel cabinet containing master copies of the different subroutines (there were eventually over 100 different subroutines.) Subroutines helped, but there were still plenty of errors in programs.

In order to debug a program, a user would sit at the EDSAC’s control desk and obey the program manually one instruction at a time, observing the state of the memory on a monitor display. This process—known at Cambridge as “peeping”—was time consuming and prohibitively wasteful for such a scarce resource. Wheeler’s solution, which was evocatively called a “post-mortem routine,” was later known more prosaically as a memory dump. The post-mortem routine consisted of a small program that could be loaded into the top end of memory in the event that a program did not run as expected, which printed out a region of memory so it could be studied at leisure away from the machine.

Back to Top

Stanley Gill

A different debugging idea was invented by Stanley Gill, another of Wilkes’ research students. This was the so-called interpretive checking routine. If a program was difficult to debug, then the program would be executed, not by the hardware circuits of the EDSAC, but by Gill’s interpretive routine. This behaved exactly like the real machine except that it printed diagnostic information while doing so. This idea was adopted, or reinvented, at many places and became known as a program trace. It earned Gill his place as one of the triumvirate of authors of The Preparation of Programs.

With these programming aids it was no longer necessary for programmers to run their own programs; a machine operator took over and greatly increased the productivity of the machine. In the summer of 1950, the group wrote a report (with British spelling) The Preparation of Programmes for the EDSAC. Wilkes sent copies to everyone he thought might be interested, so that by the fall most computer groups had access to the report. Eventually the report found its way to the publisher Addison-Wesley in Cambridge, MA, who printed it in book form essentially without change, apart from some introductory front matter. This first textbook on programming, The Preparation of Programs for an Electronic Digital Computer was often known simply as “WWG” after the initials of its authors, Wilkes, Wheeler, and Gill.

WWG was highly influential and was essential reading for everyone thinking about programming in the early 1950s. For example, Wheeler’s scheme of organizing subroutines was picked up by IBM and used in its first computer, the model 701 launched in 1953. Japan’s first electronic computer TAC (Tokyo Automatic Computer), a joint development between Toshiba and Tokyo University, was designed with an identical instruction code to the EDSAC so that it could use the subroutine library printed in WWG. There was no direct contact with Cambridge University, and Wilkes did not learn of the TAC until many years later. If one goes back far enough, it seems that most programming systems have a distant ancestry in WWG.

And what became of Wilkes, Wheeler, and Gill themselves? Wilkes of course needs little explanation. He remained at the computer laboratory until his retirement in 1980. During that time he served both academic and public roles with distinction. His best-known scientific contribution was the invention of microprogramming. In the public sphere he was the founding president of the British Computer Society (a sister organization of ACM) and a prime mover behind IFIP. His many honors included the ACM Turing Award in 1967, the Kyoto Prize in 1992, and he was conferred with a knighthood in 2000.

Wheeler was a man of a completely different mold to Wilkes, and that is perhaps why they complemented one another so well. Wheeler, too, remained at the computer laboratory all his life, apart from occasional sabbatical leaves at other universities. Alongside Wilkes, he was a cornerstone of the laboratory. Yet it is difficult to think of anyone less career-minded than Wheeler. He was notoriously reluctant to publish; his motivation came from the research itself. When he was elected to the Royal Society in 1981, he must have had one of the shortest publication lists ever. He retired in 1994, but as an emeritus professor he still came in to the university most days; he died in 2004, while riding his bicycle to the laboratory on a cold day.


If one goes back far enough, it seems that most programming systems have a distant ancestry in WWG.


Today, not many people have heard of Stanley Gill because he died at a relatively young age. Gill was a mover and shaker, and would never have been content to spend his working life in one institution. In 1957, he left the laboratory to take on the important role of head of computer research at Ferranti, then one of Britain’s primary manufacturers of mainframe computers. He next became professor of computing science at Imperial College, University of London. In 1970, he was appointed to a senior position with PA Management Consultants, a role of massive opportunity because computing services were just beginning to take off in the U.K. Gill should have been in the thick of it, helping to reshape the computer industry. That promise was cut tragically short when he died in 1975.

Back to Top

Back to Top

Back to Top

Figures

UF1 Figure. The title page from “WWG.”

UF2 Figure. The EDSAC subroutine library was kept in the steel cabinet on the left in the image. Library tapes were copied mechanically onto the user’s program tape and then returned to the cabinet.

Back to top

    1. Goldstine, H.G. and von Neumann, J. Planning and Coding of Problems for an Electronic Computing Instrument, 1947–1948.

    2. Wilkes, M.V., Wheeler, D.J., and Gill, S. The Preparation of Programs for an Electronic Digital Computer, Addison-Wesley, 1951.

Join the Discussion (0)

Become a Member or Sign In to Post a Comment

The Latest from CACM

Shape the Future of Computing

ACM encourages its members to take a direct hand in shaping the future of the association. There are more ways than ever to get involved.

Get Involved

Communications of the ACM (CACM) is now a fully Open Access publication.

By opening CACM to the world, we hope to increase engagement among the broader computer science community and encourage non-members to discover the rich resources ACM has to offer.

Learn More