''The Preparation of Programs for an Electronic Digital Computer'' (sometimes called ''WWG'', after its authors' initials)
was the first book on
computer programming
Computer programming is the process of performing a particular computation (or more generally, accomplishing a specific computing result), usually by designing and building an executable computer program. Programming involves tasks such as ana ...
. Published in 1951, it was written by
Maurice Wilkes
Sir Maurice Vincent Wilkes (26 June 1913 – 29 November 2010) was a British computer scientist who designed and helped build the Electronic Delay Storage Automatic Calculator (EDSAC), one of the earliest stored program computers, and who inv ...
,
David Wheeler, and
Stanley Gill
Professor Stanley J. Gill (26 March 1926 – 1975) was a British computer scientist credited, along with Maurice Wilkes and David Wheeler, with the invention of the first computer subroutine.
Early life, education and career
Stanley Gill was bor ...
of
Cambridge University
, mottoeng = Literal: From here, light and sacred draughts.
Non literal: From this place, we gain enlightenment and precious knowledge.
, established =
, other_name = The Chancellor, Masters and Schola ...
. The book was based on the authors' experiences constructing and using
EDSAC
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 Universi ...
, one of the first practical computers in the world.
Contents
Overview
It was the first book to describe a number of important concepts in programming, including:
* the first account of a
library
A library is a collection of materials, books or media that are accessible for use and not just for display purposes. A library provides physical (hard copies) or digital access (soft copies) materials, and may be a physical location or a vir ...
of reusable code
* the first
API
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 ...
* the first explanation of using a
memory dump
In computing, a core dump, memory dump, crash dump, storage dump, system dump, or ABEND dump consists of the recorded state of the working memory of a computer program at a specific time, generally when the program has crashed or otherwise termina ...
for
debugging
In computer programming and software development, debugging is the process of finding and resolving '' bugs'' (defects or problems that prevent correct operation) within computer programs, software, or systems.
Debugging tactics can involve in ...
a program, which the book called a "post-mortem routine"
* the first use of the term "
assembly
Assembly may refer to:
Organisations and meetings
* Deliberative assembly, a gathering of members who use parliamentary procedure for making decisions
* General assembly, an official meeting of the members of an organization or of their representa ...
" in programming, though with a somewhat different meaning than the modern use of the term
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
In mathematics, the trigonometric functions (also called circular functions, angle functions or goniometric functions) are real functions which relate an angle of a right-angled triangle to ratios of two side lengths. They are widely used in all ...
and arithmetic operations on
complex numbers
In mathematics, a complex number is an element of a number system that extends the real numbers with a specific element denoted , called the imaginary unit and satisfying the equation i^= -1; every complex number can be expressed in the form a ...
. The library was a physical collection stored in a
filing cabinet
A filing cabinet (or sometimes file cabinet in American English) is a piece of office furniture for storing paper documents in file folders. In the most simple context, it is an enclosure for drawers in which items are stored. The two most comm ...
containing
punched paper tape
Five- and eight-hole punched paper tape
Paper tape reader on the Harwell computer with a small piece of five-hole tape connected in a circle – creating a physical program loop
Punched tape or perforated paper tape is a form of data storage ...
encoding the subroutines. This included a "
library catalog" describing how a programmer could use each subroutine; today this is called
API documentation
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 t ...
.
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 ' formula and
definite integral, integration of ordinary differential equitation, and evaluation of the
Fourier transform
A Fourier transform (FT) is a mathematical transform that decomposes functions into frequency components, which are represented by the output of the transform as a function of frequency. Most commonly functions of time or space are transformed, ...
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
In computer programming, a standard library is the library made available across implementations of a programming language. These libraries are conventionally described in programming language specifications; however, contents of a language's as ...
'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
Addison-Wesley is an American publisher of textbooks and computer literature. It is an imprint of Pearson PLC, a global publishing and education company. In addition to publishing books, Addison-Wesley also distributes its technical titles through ...
in the United States.
At the time ''WWG'' was published there were very few
digital computers
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 ...
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.
Demand for the book was so limited initially that it took six years to sell out the first edition.
As computers became more common in the 1950s, the book became the standard textbook on programming for a time.
The second edition was printed in 1957.
By that time, technology had advanced to the point that ''WWG'' was somewhat outdated.
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
Augusta Ada King, Countess of Lovelace (''née'' Byron; 10 December 1815 – 27 November 1852) was an English mathematician and writer, chiefly known for her work on Charles Babbage's proposed mechanical general-purpose computer, the A ...
more than a century prior. It had also been written about more recently by
John von Neumann
John von Neumann (; hu, Neumann János Lajos, ; December 28, 1903 – February 8, 1957) was a Hungarian-American mathematician, physicist, computer scientist, engineer and polymath. He was regarded as having perhaps the widest cove ...
, whose ''
EDVAC Report'' of 1945 initially inspired Wilkes to create EDSAC.
References
External links
*
The Preparation of Programs for an Electronic Digital Computer' second edition (1957) text at
The Internet Archive
The Internet Archive is an American digital library with the stated mission of "universal access to all knowledge". It provides free public access to collections of digitized materials, including websites, software applications/games, music, ...
The EDSAC Paperwork Collection at The ICL Computer Museum
{{DEFAULTSORT:Preparation of Programs for an Electronic Digital Computer, The
Handbooks and manuals
Computer programming books
Addison-Wesley books
1951 non-fiction books