The Preparation of Programs for an Electronic Digital Computer

Last updated
The Preparation of Programs for an Electronic Digital Computer
Cover 2nd ed The Preparation of Programs for an Electronic Digital Computer.jpg
The cover of the second edition, 1957
Author Maurice Wilkes
David Wheeler
Stanley Gill
CountryUnited States
LanguageEnglish
SubjectComputer programming
Publisher Addison-Wesley
Publication date
1951
OCLC 475783493

The Preparation of Programs for an Electronic Digital Computer (sometimes called WWG, after its authors' initials) [1] was the first book on computer programming. [2] Published in 1951, it was written by Maurice Wilkes, David Wheeler, and Stanley Gill of Cambridge University. The book was based on the authors' experiences constructing and using EDSAC, one of the first practical computers in the world.

Contents

Contents

Overview

It was the first book to describe a number of important concepts in programming, including:

Much of the book is dedicated to explaining the library. This consisted of eighty-eight subroutines implementing mathematical operations like the calculation of trigonometric functions and arithmetic operations on complex numbers. [5] The library was a physical collection stored in a filing cabinet containing punched paper tape encoding the subroutines. This included a "library catalog" describing how a programmer could use each subroutine; today this is called API documentation. [3]

A computer operator working next to a filing cabinet containing the subroutine library for the EDSAC computer. FirstCodeLibrary-ESDAC-ThePreparationOfProgramsForAnElectronicDigitalComputer-1951.jpg
A computer operator working next to a filing cabinet containing the subroutine library for the EDSAC computer.

Part one

Chapter 6 - Debugging

This chapter extensively investigates "proofreading" and location of the mistakes in the programs. It also advises against frequent refactoring as it introduces more mistakes as programmer tries to improve the program.

Chapter 7 - Examples of programs for EDSAC

Includes examples of calculations of e-sinx formula and definite integral, integration of ordinary differential equitation, and evaluation of the Fourier transform by using EDSAC programs.

Chapter 8 - Automatic programming

discusses an assembling (compiling) and interpretation of a program, it also discusses motivation behind "floating addresses" which are, in modern terms, are variable references (akin to C++ variable references) which are replaced by compiler by a real memory addresses on the fly every time the subroutine is invoked.

Part two

This part contains mostly specification on the EDSAC's standard library's subroutines. Among included are subroutines for floating-point, complex numbers, debugging, exponential calculations, integration, differential arithmetic equations, logarithms, quadrature, and trigonometric subroutines.

Publication history

The 1951 book was a mass-printed version of a report titled Report on the Preparation of Programmes for the EDSAC and the Use of the Library of Subroutines written in September 1950 for private circulation and distributed to no more than 100 people. Though written in England, the book was published by Addison-Wesley in the United States. [6] [7] [8]

At the time WWG was published there were very few digital computers in the world. EDSAC, on which the book was based, was the first computer in the world to provide a practical computing service for researchers. [1] Demand for the book was so limited initially that it took six years to sell out the first edition. [6] As computers became more common in the 1950s, the book became the standard textbook on programming for a time. [3] The second edition was printed in 1957. [6] By that time, technology had advanced to the point that WWG was somewhat outdated. [9] [10]

Though WWG was the first published, book-length treatment of computer programming, it was not the first writing on the topic. The subject of programming had been pioneered by Ada Lovelace more than a century prior. It had also been written about more recently by John von Neumann, whose EDVAC Report of 1945 initially inspired Wilkes to create EDSAC. [1]

Related Research Articles

Computer programming is the process of performing particular computations, usually by designing and building executable computer programs. Programming involves tasks such as analysis, generating algorithms, profiling algorithms' accuracy and resource consumption, and the implementation of algorithms. The source code of a program is written in one or more languages that are intelligible to programmers, rather than machine code, which is directly executed by the central processing unit. To produce machine code, the source code must either be compiled or transpiled. Compiling takes the source code from a low-level programming language and converts it into machine code. Transpiling on the other hand, takes the source-code from a high-level programming language and converts it into bytecode. This is interpreted into machine code. The purpose of programming is to find a sequence of instructions that will automate the performance of a task on a computer, often for solving a given problem. Proficient programming thus usually requires expertise in several different subjects, including knowledge of the application domain, specialized algorithms, and formal logic.

<span class="mw-page-title-main">EDSAC</span> 1940s–1950s British computer

The Electronic Delay Storage Automatic Calculator (EDSAC) was an early British computer. Inspired by John von Neumann's seminal First Draft of a Report on the EDVAC, the machine was constructed by Maurice Wilkes and his team at the University of Cambridge Mathematical Laboratory in England. EDSAC was the second electronic digital stored-program computer to go into regular service.

<span class="mw-page-title-main">History of computing hardware</span> From early calculation aids to modern day computers

The history of computing hardware covers the developments from early simple devices to aid calculation to modern day computers.

<span class="mw-page-title-main">LEO (computer)</span> 1951 British computer

The LEO was a series of early computer systems created by J. Lyons and Co. The first in the series, the LEO I, was the first computer used for commercial business applications.

<span class="mw-page-title-main">ENIAC</span> First electronic general-purpose digital computer

ENIAC was the first programmable, electronic, general-purpose digital computer, completed in 1945. There were other computers that had combinations of these features, but the ENIAC had all of them in one computer. It was Turing-complete and able to solve "a large class of numerical problems" through reprogramming.

<span class="mw-page-title-main">Library (computing)</span> Collection of non-volatile resources used by computer programs

In computer science, a library is a collection of non-volatile resources used by computer programs, often for software development. These may include configuration data, documentation, help data, message templates, pre-written code and subroutines, classes, values or type specifications. In IBM's OS/360 and its successors they are referred to as partitioned data sets.

The year 1951 in science and technology involved some significant events, listed below.

<span class="mw-page-title-main">History of computing</span> Aspect of history

The history of computing is longer than the history of computing hardware and modern computing technology and includes the history of methods intended for pen and paper or for chalk and slate, with or without the aid of tables.

<span class="mw-page-title-main">Maurice Wilkes</span> British computer scientist (1913–2010)

Sir Maurice Vincent Wilkes was an English computer scientist who designed and helped build the Electronic Delay Storage Automatic Calculator (EDSAC), one of the earliest stored program computers, and who invented microprogramming, a method for using stored-program logic to operate the control unit of a central processing unit's circuits. At the time of his death, Wilkes was an Emeritus Professor at the University of Cambridge.

<span class="mw-page-title-main">Manchester Baby</span> First electronic stored-program computer, 1948

The Manchester Baby, also called the Small-Scale Experimental Machine (SSEM), was the first electronic stored-program computer. It was built at the University of Manchester by Frederic C. Williams, Tom Kilburn, and Geoff Tootill, and ran its first program on 21 June 1948.

<span class="mw-page-title-main">Department of Computer Science and Technology, University of Cambridge</span> Computer science division at the University of Cambridge

The Department of Computer Science and Technology, formerly the Computer Laboratory, is the computer science department of the University of Cambridge. As of 2023 it employed 56 faculty members, 45 support staff, 105 research staff, and about 205 research students. The current Head of Department is Professor Ann Copestake.

<span class="mw-page-title-main">David Wheeler (computer scientist)</span> British computer scientist (1927–2004)

David John Wheeler FRS was a computer scientist and professor of computer science at the University of Cambridge.

<i>OXO</i> (video game) 1952 video game/naughts-and-crosses simulator

OXO is a video game developed by A S Douglas in 1952 which simulates a game of noughts and crosses (tic-tac-toe). It was one of the first games developed in the early history of video games. Douglas programmed the game as part of a thesis on human-computer interaction at the University of Cambridge.

The APE(X)C, or All Purpose Electronic (X) Computer series was designed by Andrew Donald Booth at Birkbeck College, London in the early 1950s. His work on the APE(X)C series was sponsored by the British Rayon Research Association. Although the naming conventions are slightly unclear, it seems the first model belonged to the BRRA. According to Booth, the X stood for X-company.

<span class="mw-page-title-main">Kathleen Antonelli</span> Irish–American computer programmer (1921–2006)

Kathleen Rita Antonelli, known as Kay McNulty, was an Irish computer programmer and one of the six original programmers of the ENIAC, one of the first general-purpose electronic digital computers. The other five ENIAC programmers were Betty Holberton, Ruth Teitelbaum, Frances Spence, Marlyn Meltzer, and Jean Bartik.

<span class="mw-page-title-main">Computer</span> Automatic general-purpose device for performing arithmetic or logical operations

A computer is a machine that can be programmed to carry out sequences of arithmetic or logical operations (computation) automatically. Modern digital electronic computers can perform generic sets of operations known as programs. These programs enable computers to perform a wide range of tasks. A computer system is a nominally complete computer that includes the hardware, operating system, and peripheral equipment needed and used for full operation. This term may also refer to a group of computers that are linked and function together, such as a computer network or computer cluster.

Professor Stanley J. Gill was a British computer scientist credited, along with Maurice Wilkes and David Wheeler, with the invention of the first computer subroutine.

<span class="mw-page-title-main">API</span> Software interface between computer programs

An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build or use such a connection or interface is called an API specification. A computer system that meets this standard is said to implement or expose an API. The term API may refer either to the specification or to the implementation.

In computer programming, a function or subroutine is a sequence of program instructions that performs a specific task, packaged as a unit. This unit can then be used in programs wherever that particular task should be performed.

Margaret Marrs is an English computer programmer who was the Senior Operator of the original Electronic delay storage automatic computer (EDSAC). EDSAC was an early British computer constructed at the University of Cambridge Mathematical Laboratory in England, and the second electronic digital stored-program computer to go into regular service.

References

  1. 1 2 3 4 5 Campbell-Kelly, Martin (September 2011). "In Praise of 'Wilkes, Wheeler, and Gill'". Communications of the ACM . 54 (9): 25–27. doi:10.1145/1995376.1995386. S2CID   20261972.
  2. Gregersen, Erik (Nov 25, 2020). "The Preparation of Programs for an Electronic Digital Computer". Encyclopædia Britannica.
  3. 1 2 3 Bloch, Joshua (August 8, 2018). A Brief, Opinionated History of the API (Speech). QCon. San Francisco: InfoQ. Retrieved February 28, 2021.
  4. Fairhead, Harry (November 16, 2017). "History of Computer Languages - The Classical Decade, 1950s". I Programmer. Retrieved February 28, 2021.
  5. Williams, Bernard O. (March 1986). "Review: [Untitled]". Isis . 77 (1): 157. doi:10.1086/354083. JSTOR   232546.
  6. 1 2 3 Norman, Jeremy M. "Wilkes, Wheeler & Gill Create the First Treatise on Software for an Operational Stored-Program Computer". History of Information. Retrieved February 28, 2021.
  7. Hook, Diana H.; Norman, Jeremy M. (2002). Origins of Cyberspace: A Library on the History of Computing, Networking, and Telecommunications (PDF). Novato, CA. p. 513. ISBN   0-930405-85-4. Archived (PDF) from the original on 24 October 2017.{{cite book}}: CS1 maint: location missing publisher (link)
  8. Campbell-Kelly, Martin (March 1978). Early Programming Activity at the University of Cambridge (Report). p. 6. Retrieved 1 March 2021 via The Centre for Computing History.
  9. Freiberger, W.F. (July 1959). "Review: [Untitled]". Quarterly of Applied Mathematics. 17 (2): 223. JSTOR   43634941.
  10. Hamblen, John W. (November 1958). "Review: [Untitled]". The American Mathematical Monthly . 65 (9): 719–720. doi:10.2307/2308734. JSTOR   2308734.