Reconsidering the Stored-Program Concept

Thomas Haigh University of Wisconsin–Milwaukee

Mark Priestley Crispin Rope

The first in a three-part series appearing in IEEE Annals, this article gives a historical explanation of the endemic confusion surrounding the stored-program concept. After a detailed investigation of the history of this idea, the authors propose three more precisely defined alternatives to capture specific aspects of the new approach to introduced in 1945 by and his collaborators.

It is a truth universally agreed that implemen- concept.” Historians almost invariably point tation of the “stored program concept” in the to a single document as the first publication late 1940s was the most important dividing to describe the concept and as the direct line in history, separating modern source of inspiration for the architecture of from their less evolved predeces- subsequent computer projects. That docu- sors. Yet, as Doron Swade recently noted, we ment is the “First Draft of a Report on the do not really agree on why this should be the EDVAC” (hereafter simply the First Draft), cir- case. For years he “assumed that the signifi- culated under the name of John von Neu- cance of the stored program must be self- mann in 1945.2 Although the true balance of evident” and attributed his own confusion to credit for the ideas contained in this docu- “a deficiency of understanding” or to “some ment has been widely and heatedly debated, lack” in his computer science education, its central importance to the development until finally he “became bold and began modern computing has not.3 asking” among computer historians and pio- We look at initial conceptions of the neers what it actually was. Their answers were advantages and crucial features of the new “all different,” with the question of whether approach to computer design put forward in “the primary benefit was one of principle or the First Draft, which scholars treat as the first practice frustratingly blurred.” Swade con- and most influential statement of the con- cluded that, cept. We also identify the origins of the phrase “stored program,” which came some Therewasonefeatureofalltheresponses years later, and its extension by early com- about which there was complete agreement: puter historians to the “stored program no one challenged the status of the stored pro- concept.” gram as the defining feature of the modern Having shown that this historical evolu- digital electronic computer.... While the rea- tion left the terms hopelessly overloaded sons given for this were different, none dis- with contradictory meanings, to which counted its seminal significance. But it seems Swade’s confusion was an appropriate and that we struggle when required to articulate its insightful response, we return to the text of significance in simple terms and the apparent the First Draft to identify three distinct but mix of principle and practice frustrates intertwined clusters of influential ideas in the clarity.1 report: the modern code paradigm, the paradigm, and the In this article, we respond by historicizing EDVAC hardware paradigm. These were the “stored program” and “stored program sometimes implemented independently in

4 IEEE Annals of the Published by the IEEE Computer Society 1058-6180/14/$31.00 c 2014 IEEE the machines of the 1940s, and although all scientific communities grew, was an exem- three were standard features of computers of plary technical accomplishment reflecting a the mid-1950s, their fates have subsequently new approach—the “concrete” paradigm. In diverged again. We believe that reliance by its initial formulation it might be clumsy or historians on the term “stored program con- incomplete, but it held sufficient promise to cept” as shorthand for the content of the attract others to build on its model to extend entire 1945 EDVAC design has done more to itandapplyittonewkindsofproblem.The hurt our understanding than to help it. original paradigmatic accomplishment was, Our own attention turned to this question in Kuhn’s term, “articulated” through this as we investigated modifications made to later work to become something almost ENIAC in early 1948 by a team working unrecognizable. For example, later genera- closely with John von Neumann. These mod- tions of scientists learned Newton’s laws of ifications incorporated key elements of the motion in a form (and using a version of cal- new approach to computer design and pro- culus) quite different from those familiar to gramming associated with EDVAC. Thus con- Newton himself. verted, ENIAC ran a complex program Focusing on the First Draft as a paradigm written in the new style, including condi- thussteersustowardtwoimportantissues. tional branches, data reads from calculated The first is that this core sense of paradigm addresses, and a subroutine called from more helps us to understand the enormous power than one point in the code. This program was that the First Draft exerted over the subse- developed using the methodology and flow quent development of computing. The sec- diagramming notation described by Herman ond, less obvious, is that the First Draft only Goldstine and von Neumann in their seminal became a paradigm retroactively. In 1945 it series of reports on “Planning and Coding of wasjustadocument.Asotherstookupits Problems for an Electronic Computing ideas, implemented them, and extended Instrument” issued around this time.4 them,itcametofunctionasaparadigm.By Dispelling some previous confusion, we the 1950s, its paradigmatic authority was have established that all of this was com- becoming clear. Some of the ideas contained pleted before Manchester University’s “Baby” within it were discarded, some were reformu- (known more formally as the Small-Scale lated, and others were added. The treatment Experimental Machine) executed what is usu- of its ideas in textbooks and papers has con- ally called the world’s first stored program in tinued to evolve. Understanding what was so the summer of the same year. It would be originally so important about the First Draft well over a year until EDSAC became the first requires us to strip away some of these later purpose-built stored-program computer to ideas and to ground our analysis in the real- enter regular operation and run programs of ities of 1940s computer practice. complexity comparable to ENIAC’s. ENIAC still differed from purpose-built, full-scale What Did von Neumann Mean By stored program computers in several impor- “Stored Program”? tant ways. In particular, its electronic storage That turns out to be a trick question, unfortu- remained rather small, and program instruc- nately. The “First Draft of a Report on the tions were stored along with constant data in EDVAC” does not, despite the role it has been a high-speed read-only memory.5 Should assigned in later historical work, function ENIAC therefore be considered the first well as a standards document to rigorously operational stored-program computer? Well, define the concept of “stored program.” To it all depends on what we mean by “stored begin with, the word “program” never program.” So before returning to ENIAC in appears in the draft. Von Neumann consis- the next article in this series, we will clarify tently preferred “code” to “program” and the ideas associated with this term and the wrote of “memory” rather than “storage.” process by which they evolved. Indeed, if someone with no prior exposure to To understand the role played by the First the topic was handed this document and Draft in the subsequent development of com- asked to encapsulate its big idea about the puting, we are relying on the notion of a handling of instructions in a single phrase, he “paradigm” introduced by historian and phi- or she would be much more likely to derive losopher of science Thomas Kuhn in his clas- “remembered code” than “stored program.” sic Structure of Scientific Revolutions.6 Kuhn Our current attachment to the term believed that the most fundamental sense of “stored program” as a description for com- paradigm, the seed around which mighty puters built along lines proposed for EDVAC

January–March 2014 5 Reconsidering the Stored-Program Concept

thus needs some historical explanation. Read new breed of computers came from J. Presper literally, the term conveys very little. Any Eckert and . As well as design- program that can be executed by a computer ing ENIAC, they had created at least some of must be stored in some form or other. The the ideas included in the First Draft and in First Draft itself observed that “instructions 1946 founded a company to commercialize a must be given in some form which the device similar design. In 1946 a summer school was can sense: Punched into a system of punch- held at the University of Pennsylvania, then cards or on teletype tape, magnetically housing both ENIAC and the project to build impressed on steel tape or wire, photographi- the EDVAC. Historians have credited the cally impressed on motion picture film, wired event as a crucial vector for the spread of the into one or more fixed or exchangeable plug- stored-program concept. But what made boards—this list being by no means necessa- EDVAC so appealing as a model? rily complete.”7 During his lecture, Eckert retraced for the The report was a speculative and argumen- audience the process he and his colleagues tative description of the design of a particular had gone through to design the EDVAC as a machine, not an abstract description of a reaction to the shortcomings of ENIAC. His new class of machines. It offered great detail argument for internal program storage was in some areas and very little in others. In pragmatic. It would reduce set up time, as “in other words, it is only when armed with the the EDVAC there will be no cords, no plugs, knowledge of later developments that we and few switches. We are simply going to use might hope to identify a specific paradigm in the memory to hold the information elec- there. tronically and to feed those pieces of infor- It is indeed true that the First Draft argued mation which relate to programming from for the collocation of code and data, often the memory, into the control circuits in order taken to be the essence of the stored-program to resequence the machine.” ENIAC had used concept, although von Neumann’s language a vast number of vacuum tubes to create a introducing the idea was uncharacteristically writable electronic memory of just 200 deci- tentative: “While it appeared that various mal digits. This technology could never be parts of this memory have to perform func- used to create a memory large enough to tions which differ somewhat in their pur- store all the data needed for many problems, pose, it is nevertheless tempting to treat the let alone programs. He estimated that the entire memory as one organ, and to have its connecting cables, function tables (large parts as interchangeable as possible.”8 Von banks of switches originally intended to hold Neumann believed that the data require- tables of numerical values to lookup function ments of the problems he was interested in values from), and switches of ENIAC effec- were large enough to require a memory of tively held another 7,000 or so digits of pro- unprecedented size and that the program gram and data information. But with a larger, code would, by comparison, be quite small. cheaper memory of the kind offered by his Using one set of mechanisms to handle both recent invention of the mercury delay line, would simplify EDVAC. there was no longer any reason to store this Two intertwined histories are of interest program information separately. Eckert noted here. The first is the process by which the that the ratio between program and data stor- many different ideas explored in the First age varied from problem to problem, so that Draft and related documents were reduced to combining the two “eliminates for the a shared understanding that the storage of designer the problem of attempting to find code and data in a shared memory was the the proper balance between the various types single crucial shift setting the late-1940s gen- of the memory, and gives the problem to the eration of computers aside from their prede- user.”9 cessors. This has received little attention Memory technologies were, as these com- from historians. The second is the process by ments remind us, the dominant challenge which the specific term “stored program” facing computer builders in the late 1940s. was attached to this concept. That has Discussions of drums, delay lines, Selectrons, received no attention whatsoever. cathode ray tubes, wire recorders, and phos- phor discs occupied a central place in the first Early Understanding of the computingtextsandconferences.Thesuc- EDVAC Design cess or failure of the various teams rushing to Some of the earliest and most perceptive make their computers operational was deter- comments on the essential features of the mined in large part by their success in

6 IEEE Annals of the History of Computing disciplining unruly cathode ray tube and Development” of “Large Automatic Digital delay lines. Avoiding design complexity Machines.” Hartree concluded that, meant cheaper, faster construction and improved reliability. [I]t seems very improbable that any of them John W. Mauchly, Eckert’s collaborator, will be duplicated. The machines of the future offered similar sentiments at the Harvard will be considerably different in principle and University symposium held the next year. appearance; smaller and simpler, with ...tubes The title of his paper, “Preparation of Prob- and relays numbered in thousands rather than lems for EDVAC-Type Machines,” indicates the kinds of terminology used before “stored tens of thousands of the machines considered program” gained currency. Mauchly consid- in this chapter, faster, more versatile and easier ered the “fundamental characteristics … to code for and to operate. Those at present which differ significantly from present projected or under construction are different machine design…. [T]hree have a definite enough to be regarded as forming a second 11 bearing on the handling of problems: (1) an stage of development. extensive internal memory; (2) elementary instructions, few in number, to which the Taken together, the observations of Eckert, machine will respond; and (3) ability to store Mauchley, and Hartree help us to understand instructions as well as numerical quantities the 1945 EDVAC design as a reaction among in the internal memory and modify instruc- the Moore School team against the complex- tions so stored in accordance with other ity that had plagued ENIAC. The vacuum instructions.” Expanding on the final point, tubes composing the logic units of early elec- he noted that, tronic computers were bulky and unreliable and posed a significant risk of fire. ENIAC [I]nstructions are stored in the internal mem- included almost 18,000 such tubes. EDVAC- ory in the same manner as are numerical type computers of significantly greater power quantities, and one set of instructions can be and flexibility reduced this number by a fac- used to modify another set of instructions. tor of about five, just as Hartree had prom- This is directly related to the finite capacity of ised. EDSAC had around 3,000 tubes, as did the internal memory and the limited number the Institute for Advanced Studies computer. The had around 1,300 of basic operations.... The total number of and the Pilot ACE just 800.12 operations for which instructions must be pro- The lion’s share of this reduction came vided will usually be exceedingly large, so that from avoiding ENIAC’s use of 11,000 vacuum the instruction sequence would be far in tubes for its cramped high-speed memory. excess of the internal memory capacity. How- However, the elimination of hardware did ever,suchaninstructionsequenceisnevera not stop there. Each of ENIAC’s accumulators random sequence, and can usually be synthe- included circuitry to perform additions. sized from subsequences which frequently These duplicate circuits were replaced by a recur. single central adder. As noted in the First By providing the necessary subsequences, Draft, “The device should be as simple as which may be utilized as often as desired, possible, that is, contain as few elements as together with a master sequence directing the possible. This can be achieved by never per- use of these subsequences, compact and forming two operations simultaneously.”13 easily set up instructions for very complex Von Neumann admitted that “up to now all problems can be achieved. Even greater thinking about high speed digital computing powers are conferred, however, by the ability devices has tended in the opposite to use one instruction to modify another.... direction,” but he felt this justified applying [This] transfers to the machine a burden his new “uncompromising solution … as which would otherwise fall upon the opera- completely as possible” until experience tor—the burden of explicitly writing out and might prove that compromise was necessary. coding the successive variations which are to In conclusion, computing experts of the be used.10 late 1940s spoke of “EDVAC-type” computers rather than stored-program computers, In his 1949 book Calculating Instruments reflecting the role of the First Draft report as a and Machines, the eminent British mathema- paradigmatic exemplar. Contemporary dis- tician treated ENIAC, Har- cussion focused on the novelty of electronic vard Mark I, and SSEC as “The First Stage of machines with large high-speed memories,

January–March 2014 7 Reconsidering the Stored-Program Concept

new programming methods, and relatively of up to 60 instructions. To distinguish simple logic units. Experts did come, quite between this wired program and the more quickly, to identify the storage of programs complex and flexible sequence of instructions and data in a large electronic memory as one held in the 250-word electronic memory or of several central innovations of EDVAC-like on the drum, the team began to call the latter machines. Some also noted the benefits of the “stored program.” A proposal written by allowing programs to modify themselves dur- Rochester in 1949 noted that the cost of the ing execution. However the interchangeabil- plug board and the work required to program ityofprogramsanddatawasasingle it became impractical once a certain level of contribution to a much larger and more radi- complexity had been reached. Thus, “the best cal simplicity of design in comparison with solution to this difficulty is to introduce the machines such as ENIAC and SSEC. calculating program into the machine on a deck of tabulating cards and to retain it, along Origins of the Term “Stored Program” with the numerical data, in the storage sec- The proceedings of the Moore School lec- tion of the calculator.”16 The report was titled tures, issued in 1948, did not include the “A Calculator Using Electrostatic Storage and phrase “stored program.”14 Neither could we aStoredProgram.” find it in the proceedings of a conference Rochester and his collaborators took the held at Harvard in 1947, the introductory term “stored program” with them as they books published by Hartree in 1947 and moved from designing the Test Assembly to 1949, the proceedings of the Cambridge Uni- its experimental successor, the Tape Process- versity computer conference held in 1949, or ing Machine, and eventually to the IBM 701 the ERA guide published in 1950.15 In fact, (the firm’s first computer product). In later we have been unable to locate the phrase in usage, this discussion of digital computers any publication of the 1940s. with “stored program control” collapsed sim- During the second half of the 1940s, ply into discussion of “stored-program com- authors used a variety of terms to describe the puters.” An early example comes in a 1951 new breed of computers. The most common paper presented at the Joint Computer Con- was “digital automatic computer.” “Digital” ference by two IBM employees describing its separated them from analog machines such Card Programmed Calculator, a product cou- as differential analyzers. “Automatic” made it pling the 604 with a card-driven control unit. clear that machines, rather than people, were The authors praised the flexibility and speed being referred to. “Electronic,” another popu- of this approach versus a “stored program lar adjective, set the new high-speed machine” for which “it is usually necessary machines apart from their electromechanical to economize on the length of sequences [of ancestors. In these terms, the distinction instructions], on account of the limited stor- between computers such as ENIAC or IBM’s age available.”17 SSEC and computers patterned after EDVAC In 1953 the term was sufficiently well was not always apparent. known within the small world of electronic So where did “stored program” actually computer users that Willis Ware of the Rand come from, and why did it eventually replace Corporation could write simply of “what we alternatives such as “EDVAC-type machine” know now as the ‘stored program machine’” as a description of the new kind of computer? in a report on the “History and Devel- The earliest use we have been able to establish opment” of von Neumann’s computer proj- is in 1949, within the small team at IBM’s ect.18 It was not enormously common, but it Poughkeepsie facility, which under the direc- did occur with reasonable frequency in the tion of Nathaniel Rochester, produced IBM’s conference proceedings of the 1950s, particu- first EDVAC-type computer, usually called larly in presentations by IBM staff. However, the Test Assembly. This experimental system “stored program” did not seem to be a part of was built around the firm’s first electronic cal- the firm’s carefully controlled official vocabu- culator, its 604 Electronic Calculating Punch, lary: we have not come across it in documen- which became the arithmetic unit of a tation or advertisements for IBM’s early lashed-up computer. It was joined to a new computers. control unit, a cathode ray tube memory, and amagneticdrum. “Stored Program” Becomes a The resulting machine had two potential Historical Term programming mechanisms, as the 604 already After establishing this limited beach head in included a plug board able to hold a program the 1950s, the phrase “stored program” does

8 IEEE Annals of the History of Computing not appear to have made significant advances capabilities of a general-purpose computer. In in the 1960s, probably because all digital response Brian Randall, an early leader of his- computers of the era executed their programs torical efforts in the field, suggested that from memory rather than reading them one ENIAC could not be considered general pur- instruction at a time from an external source. pose because it lacked the crucial feature of In the title of a book or article, the term being “able to select among items held in its “digital computer” was understood to imply read-write memory, based on results so far stored-program control. computed,” which was “one of the most sig- Only with the rise of interest in the history nificant and distinct characteristics of so- of computing did it again become necessary called stored-program computers.”21 In other to distinguish stored-program computers words, to Randell only an EDVAC-type com- from other kinds of digital computers. Dis- puter could be considered general purpose. cussions of “stored program” enjoyed some- thing of a renaissance in the 1970s, Assigning the Firsts beginning with its prominent use by com- After historians collectively withdrew the puter pioneer in his book, prize of “first computer” without making an TheComputerfromPascaltovonNeumann.19 award, the most dazzling of the remaining This remained the most important overview trophies bore the legend “first stored program of computing history for many years, used as computer.” This put machines like ENIAC, a textbook into the 1990s. Goldstine, then an programmed with wires and switches, or the IBM fellow, helped to establish this relatively calculator, which read its obscure technical term at the center of the instructions one a time from a paper tape, on growing historical discourse. the wrong side of the historical divide. The Eminent computer scientists and their disagreements noted by Swade were not a professional organizations conducted most barrier to acceptance of this distinction, and of the initial work in this field. Their main may even have been an advantage. The prac- focus was the origin of computer technology, tical purpose of these distinctions was to and a great deal of effort was devoted to docu- establish a truce between advocates for a menting facts about early computers, both handful of different computers. With so few famous and obscure. One question loomed machines to distinguish between, the com- aboveallothers:whatwasthefirstcomputer? munity could agree that, for example, the Among scholarly historians, in contrast, the Mark I was not a stored-program computer question of the “first computer” is no longer and EDSAC was, without having to reach seen as legitimate. The answer to the ques- consensusonexactlywhatpermutationof tion depends almost entirely on how one the many differences between them was nec- defines “computer.” Introducing a confer- essary and sufficient to accord this status to ence devoted to early computers, Michael R. the later machine. Of course, the new con- Williams suggested that his colleagues “not sensus did imply that the biggest dividing use the word ‘first’—there is more than line between the modern computer and its enough glory in the creation of the modern antecedents was in its ability to load a data computer to satisfy all of the early pioneers, sequence into memory and execute it as a most of whom are no longer in a position to program, but the extent to which this was care anyway.”20 Inthesameaddress,Wil- seen as the only significant difference or as liams noted that, “If you add enough adjec- one aspect of a much broader shift could and tives to a description you can always claim did vary wildly. This explains the disagree- your own favorite. For example ENIAC is ments Swade encountered as to the signifi- often claimed to be the ‘first electronic, gen- cance of the stored program. eral purpose, large scale, digital computer’ The figurative trophy for “first stored pro- and you certainly have to add all those adjec- gram computer” was metaphorically cut in tives before you have a correct statement.”20 half and split between two British computers: This consensus on the appropriate title for Cambridge University’s EDSAC and Man- each machine is relatively recent, reflecting a chester University’s Baby. The Baby, which kind of truce reached during the 1980s. The ran its first program on 21 June 1948, was separation of “stored program computer” only a small-scale prototype. Its primary from “general purpose computer” was ini- function was to test the workability of a novel tially contested. Arthur and Alice Burks, in a method of using a cathode ray tube for data substantial 1981 article documenting ENIAC, storage. It was put together quickly with the had attempted to precisely define the most modest configuration possible—just

January–March 2014 9 Reconsidering the Stored-Program Concept

eight instructions (not including add) and a defines it as “one which stores program single memory tube holding 32 words of instructions in electronic memory. Often the memory. It ran several test programs to prove definition is extended with the requirement the reliability of the memory but never that the treatment of programs and data in tackled a program of any practical use before memory be interchangeable… [t]he stored it was disassembled and its parts were rede- program computer idea can be traced back to ployed build a full-sized computer. the 1936 theoretical concept of a universal In contrast EDSAC was, by the standards Turing machine.”24 In his recent Computing: A of its day, a powerful computer. After it ran its Concise History, Paul Ceruzzi defined stored- first programs on 6 May 1949, it remained in program computers as storing “both their service until 1958. Its creators built the first instructions—the programs—and the data on subroutine library, wrote the first program- which those instructions operate in the same ming textbook, and pioneered several key physical memory device” and suggested that ideas in systems programming including the this “extended Turing’s ideas into the design assembler. EDSAC was, like ENIAC, applied to of practical machinery.”25 Finally, Swade him- numerous scientific and mathematical prob- self retreated from the endearingly bold con- lems. In their authoritative overview of the fession of confusion we quoted earlier to history of computing, Martin Campbell-Kelly conclude that “the internal stored program … and William Aspray wrote that, with the first is the practical realization of Turing universal- successful run of EDSAC in May 1949, “[t]he ity” and thus conferred “plasticity of function, world’s first practical stored-program com- which in large part accounts for the remark- puter had come to life, and with it the dawn able proliferation of computers and com- of the computer age.”22 puter-like artifacts.”26 Arguing about the influence Turing might The Stored-Program Concept Meets or might not have exerted over von Neu- Computer Science mann has become an enjoyable parlor game The resurgence of the stored-program con- for historians of computing. That question cept, now as a concept for historical dis- aside, one will find few references to Turing’s cussion, went along with its increasing theoretical work among the discussions of identification with foundational ideas from those building computers in the 1940s.27 the new discipline of computer science. In Some historians have suggested that the ret- recent decades, the manipulation of programs roactive embrace of Turing as a foundation and data interchangeably in the same mem- for this practical work is tied to the emphasis ory units has increasingly been taken as the within computer science, as it emerged as a key defining characteristic of the stored-pro- distinct discipline during the late 1950s and gram computer, and thus of modern com- 1960s, on abstract models of computation.28 puters. This was a third stage in the evolution In later discussions, the advantages of stored- of the term “stored program.” We saw that program machines were often justified this term originally described a type of pro- according to the theoretical concerns of aca- gram but was soon used to define a class of demic computer scientists rather than the “stored program computers.” Historical dis- pragmatic issues of primary importance to cussion extended this further with the impli- their designers. cation that a “stored program concept” was the dividing line between these machines, Self-Modifying Code the first true computers, and their predeces- One of the major theoretical attractions of sors. Thus the complex legacy of the EDVAC storing code and data in the same writable design described in the First Draft was rhetori- memory is that a program can manipulate its cally condensed to a single idea. In turn, the own code as it is being executed, using stored-program concept and general-purpose the same mechanisms with which it manipu- computer have sometimes conflated with the lates other kinds of data. On one level, this more formal concept of a computer being emphasis on code modification is startling. Turing complete or “universal” if equipped Writing programs that modify their own with a memory of infinite size. This has led code at runtime has been seen for decades some to claim that Turing was the true inven- as a serious breach of programming etiquette. tor of the stored-program computer!23 The capability is sacrificed in most high-level To cite just three of many recent examples languages and thus has become increas- of this conventional wisdom: the Wikipedia ingly remote from mainstream program- page on “stored program computer” currently ming practice.

10 IEEE Annals of the History of Computing Instruction modification would have been another special feature allowed easy lookup a common operation in programs written for of neighboring values. In the new paradigm, the EDVAC described in the First Draft. It was the same device was reinterpreted as a gen- the only way to terminate a loop, perform a eral-purpose read only memory and the conditional branch, or alter the address from “argument” became an “address.” which an instruction fetched data (for exam- As described in the First Draft, the EDVAC ple to obtain a value from a different cell would have no conditional branch instruc- within an array each time a block of code is tion, no special support for loops, and no looped through).29 What these applications indirect addressing capabilities to read or have in common is that it is not necessary to writefromadifferentpartofatableevery alter the operation code itself (for example, time a loop was executed. All would be to change a subtract instruction to a jump accomplished by explicitly modifying the instruction) but merely to change the field address portions of instructions held in mem- within the instruction that specifies the ory. In this regard, the First Draft design for from which data should be the EDVAC went too far in its determination fetchedortowhichajumpshouldbemade. to replace the gothic excess of ENIAC with an Von Neumann deliberately eliminated the austere minimalism. Early stored-program possibility of a program overwriting itself. computers retained much of its radical sim- One of the 32 in each word of memory plicity. However, they invariably included flagged it as holding either program or data. special instructions for conditional branches A transfer operation applied to a data word (used to terminate loops, among other would fully overwrite its content. Applied to things) and the Manchester Mark 1’s addition an instruction word, the same operation of an for relative addressing would overwrite only the address field.30 The was widely copied. These features added stipulation was dropped from later designs slightly to hardware complexity but greatly for EDVAC-like machines, including the reduced the need for self-modifying code and design produced by von Neumann’s own so made programs easier to write, easier to group at the Institute for Advanced Studies. debug, smaller, and faster. We see the reliance placed on address mod- Instruction modification is the most dra- ification in the 1945 EDVAC design as an matic example of the way in which later dis- expression of a broader determination to radi- cussions of the “stored program concept” cally simplify ENIAC’s successor by replacing required a selective reading of the 1945 First ENIAC’s many special-purpose mechanisms Draft, one heavily influenced by knowledge with a small number of general-purpose of later developments. Despite the paradig- mechanisms. ENIAC in its original configura- matic position of the First Draft, we pick and tion relied on special hardware to coordinate choose the features to take seriously from it. loops, including a dedicated “Master Pro- Still, if one accords the First Draft its conven- grammer” unit holding 10 electronic tional status as the seminal statement of the “steppers” and a set of electronic counters stored-program concept, then unrestricted constituting a special purpose memory inac- code modification is clearly not part of said cessible to the rest of the machine. Another concept.31 special-purpose control mechanism allowed Code modification ultimately found its switches on other units to repeat operations niche as a technique for systems software up to nine times. Conditional branches were rather than for looping, branching, or accomplished with a complex technique addressing. As Alan Bromley once pointed using special adaptors to route numerical data out, a loader or bootstrap program has to be into program control lines. In the new design, able to insert instructions into memory, and branching and looping were both accom- any kind of relies on the plished with a simple control transfer instruc- ability to overwrite program code currently tion. Like many early computers, ENIAC had in memory.32 The main practical use of the included dedicated hardware for table look- capability has therefore been in the develop- ups. Its function tables were designed to ment of systems software, a concept that did return the appropriate value of a function not exist in 1945. after being sent an “argument” stored in an accumulator. The argument would change as Defining the “Modern Code the computation continued, and to simplify Paradigm” the calculation of intermediate values of the Within the past few years a new generation of tabulated function using interpolation, scholarly historians has turned back to the

January–March 2014 11 Reconsidering the Stored-Program Concept

events of the 1940s with different perspec- paradigm for the builders of computers. Not tives and questions. Allan Olley has explored all of the following features were original to the claims of the IBM SSEC to be the first the First Draft, but their packaging together operational stored-program computer.33 Lies- and integration with the von Neumann beth de Mol and Marteen Bullynck have architecture and new hardware technologies delved deep into the programming practices (discussed later) exerted a remarkable in- adopted by mathematicians confronted with fluence.36 the complexity of ENIAC in its original pro- gramming mode.34 One of us, Mark Priestley, 1. The program is executed completely auto- has broken the stored-program concept matically. To quote the First Draft, down into a number of distinct innovations, “[o]nce these instructions are given to realized at different points in the 1940s.35 On the device, it must be able to carry them balance, however, we feel that the historical out completely and without any need for baggage accumulated by the “stored program further intelligent human interven- concept” means that historians should treat tion.” This was essential for electronic it with much the same wariness we have machines, whereas human intervention learned to associate with “first computer.” at branch points had been workable with The time has come to replace it, as an analyti- slower devices such as the Harvard Mark cal category, with a set of more specific alter- I. Of course, operators still had to tend to natives amenable to clear and precise input and output devices, and data definition. might require preprocessing and post- The first of these is the “modern code para- processing, either manually or with digm.” We use this new term to describe the punched card equipment. program-related elements of the 1945 First 2. The program is written as a single sequence Draft design that become standard features of of instructions. This sequence of instruc- 1950s computer design. Some items specified tions is referred to as EDVAC’s “orders” in the report were ignored or changed by in the First Draft, and stored in num- actual computer designers, while some com- bered memory locations along with data. mon code capabilities of 1950s computers These instructions control all aspects of came from other sources. The first computers the machine’s operations. The same modeled on the EDVAC design differed in mechanisms are used to read code and many ways from the design sketched in the data. As discussed earlier, the First Draft 1945 report and from each other. These dif- specified the explicit demarcation of ferences included memory size and character- memory locations holding code from istics, instruction format, addressing modes, those holding data. and treatment of code modification. EDVAC, 3. Each instruction within the program speci- as eventually constructed, used a four-address fiesoneofasetofatomicoperationsmade instruction format. The Pilot ACE did not use available to the programmer. This was usu- operation codes at all, instead expressing ally done by beginning the instruction each instruction using a system of logical with one of a small number of operation “sources” and “destinations.” Real computers codes. Some operation codes are fol- relied much less heavily on code modifica- lowed by argument fields specifying a tion than the 1945 design for EDVAC had memory location with which to work or done; they supported conditional jumps via other parameters. The First Draft speci- special instructions rather than code modifi- fied just seven “types of orders” to be cation, and within a few years, new address- coded with three bits, although four of ing modes greatly reduced the need for these instructions also included an addi- address modification during data access. The tional four bits as a kind of parameter to pioneered this; the select one of 10 arithmetic and logic Baby performed all addressing indirectly, operation.37 Several order types addi- while the Mark 1 is famous for having intro- tionally incorporated 13- addresses. duced the index register. All together, orders required between 9 Looking for novel code-related features and 22 bits to express. Actual machines from the 1945 First Draft that had become usually followed this pattern, typically taken-for-granted features of computers a merging the “order type” and “opera- decade later therefore illuminates the pro- tion” fields from the First Draft so that cess by which a sprawling, idiosyncratic, each arithmetic or logical operation and brilliant document became a dominant received its own numerical order code.

12 IEEE Annals of the History of Computing The main exception comes with Alan hold instructions and working data. This con- Turing’s ACE design and its derivatives, trasted with the dependence of machines which stuck close to the underlying such as the original ENIAC or SSEC on other hardware by coding all instructions as resourcessuchasprogramlines,plugboard data transfers between sources and capacity, or number of tape readers as deter- destinations. minants of logical program complexity. 4. The program’s instructions are usually exe- As we explained earlier, we do not view cuted in a predetermined sequence. Accord- the modern code paradigm as a new name for ing to the First Draft, the machine the “stored program concept” or as an idea “should be instructed, after each order, encompassing the full scope of meanings where to find the next order that it is to associated with the latter. Indeed, the more carry out.” In the EDVAC this was to be specific scope of the new term is a large part represented implicitly by the sequence of its appeal. There were clearly several other in which they were stored, as in “normal aspects of the First Draft and subsequent pub- routine” it “should obey the orders in lications by members of von Neumann’s thetemporalsequenceinwhichthey group in Princeton that had a major influ- naturally appear.” It also pointed toward ence on later computer builders. the idea of a program as a readable text: To adapt an existing term, the second facet “it is usually convenient that the minor we identify in the First Draft might be called cycles expressing the successive steps in a the “von Neumann architectural paradigm.” sequence of logical instructions should This includes the basic structure of “organs” follow each other automatically.” found in the report, including the separation 5. A program can instruct the computer to of memory from control and arithmetic. depart from this ordinary sequence and Associated with this are the serialization of jump to a different point in the program. As computation, with only one operation taking the First Draft puts it, “[t]here must, place at a time; the routing of all memory however, be orders available which may transfers through the central arithmetic unit; be used at the exceptional occasions and the system of special-purpose registers referredto,toinstructCCtotransferits that serve as source and destination for arith- connection to [i.e. fetch the next instruc- metic and logic instructions and provide tion from] any other desired point in M a and instruction register [memory].” This provided capabilities for control purposes. The von Neumann such as jumps and subroutine returns. architecture has in general been more clearly 6. The address on which an instruction acts defined within the technical literature than can change during the course of the pro- has the stored-program concept. One might, gram’s execution. That applies to the of course, dispute the extent to which it is fair source or destination of data for calcula- to attach only von Neumann’s name to these tions or the destination of a jump. This concepts. That has little bearing on our address modification capability was argument here, but we note that “EDVAC expressed rather cryptically in the First architecture paradigm” could serve as an Draft, the final sentence of which noted alternative. that when a number was transferred to a The third major facet might be termed the memory location holding an instruction “EDVAC hardware paradigm.” The EDVAC only the final 13 digits, representing the approach appealed to early computer build- address lq, should be overwritten. Actual ers in large part as a way of building powerful, computers achieved this instead through flexible machines using a relatively small unrestricted code modification and/or number of components. Influential hardware indirect addressing mechanisms. EDVAC ideas in the First Draft include the use of would have relied on address modifica- delay line or storage tube memory, building tion to make a conditional jump (for logic entirely from electronic components, example, to terminate a loop), but the representing all quantities in binary, and designers of actual machines recognized keeping special-purpose or duplicate hard- the importance of this operation and ware mechanisms to a minimum. (Von Neu- gave it a special instruction.38 mann considered that a multiplier would justify itself but that duplicating adders A consequence of these features was that or providing hardware for more specialized the logical complexity of the program was functions would provide little benefit.) limitedonlybymemoryspaceavailableto Thesehardwarefeatureswerenotentirely

January–March 2014 13 Reconsidering the Stored-Program Concept

unknown, with the possible exception of design to use. Early computing primers the memory technologies, but collectively explained EDVAC-type machines to potential they represented a bold commitment to new computer users primarily by documenting a technologies at a time when computing sample instruction set rather than articulat- groups within Harvard, Bell Labs, and IBM ing architectural checklists. From this view- were still drawing up plans for new high-end point, the storage of a program in read-only machines based on relay storage and paper- or rewritable memory is significant to the tape control. Thus, we believe that the hard- extent that it dictates a major change in pro- ware choices specified for EDVAC in the First gramming style or imposes arbitrary limits Draft function as a paradigm, in Kuhn’s core on computational capabilities or program sense of a powerful and tangible exemplar. complexity. These three paradigms have intertwined The paradigmatic influence of these three early histories but were always at least parti- aspects of EDVAC diverged again after the ally separable and ultimately diverged. The mid-1950s. The relevance of von Neumann’s machines of the mid-1950s tended to imple- EDVAC design as a hardware paradigm faded ment all three. In the 1940s, we can see some first, as and core memories made interesting divergences, as machine builders vacuum tubes and delay lines obsolete. would pick and choose among them. Alan The von Neumann architectural paradigm Booth’s ARC followed both the modern code enjoyed a longer life, although innovations paradigm and the von Neumann architecture such as parallel processing, message passing but implemented them using relay hardware. interfaces, instruction pipelining, direct Martin Campbell-Kelly observed that Booth’s memory access by peripherals, stacks, and claimed operation date of 12 May 1948 addressable registers gradually erased its radi- wouldmakethis“thefirstoperational cal minimalism. In contrast, the modern EDVAC-type stored program computer code paradigm has remained largely intact, at (although it was not of course electronic).”39 least as a description of the machine language ’s design for the ACE adopted executed by processors. It was extended and much of von Neumann’s architecture and fol- made more specific in many ways, not the lowed EDVAC’s hardware paradigm but relied least by von Neumann’s own 1946 descrip- on a different kind of instruction format tion of the planned structure of the Institute with no conventional operation codes. As for Advanced Studies machine.41 It was not, Campbell-Kelly noted, “Most computers are however, overturned. sufficiently alike that a knowledgeable pro- By the mid-1950s, it was already becoming grammer can get a fairly good appreciation unusual for this code to be written directly by of a machine from its instruction format and humans. The computer itself was increas- a table of operation codes. The Pilot ACE is ingly relied on to automate aspects of pro- an exception.”40 gram preparation. This was not anticipated Most saliently for our broader project, in the First Draft, which said little about pro- ENIAC after its conversion followed the mod- gramming. To some extent, the “Planning ern code paradigm with surprising faithful- and Coding” reports produced by von Neu- ness. The feel and structure of its program mann and Goldstine in 1947 and 1948 served code bears an unmistakable kinship with as a model for these developments, as did the those produced for other early machines programming textbook issued by Wilkes, sharing the same model. Its use of indirect Wheeler, and Gill.42 However, the historical addressing to accomplish conditional jumps record does not make it easy to identify any and other operations for which EDVAC single dominant approach to programming would have relied on the direct modification itself or to point to any single document as a of stored instructions is a variation of code paradigmatic statement of programming style within the paradigm rather than a fun- practice. damental divergence. ENIAC was all-elec- tronic but clearly did not reflect other aspects Conclusion of the EDVAC hardware paradigm. In particu- Answering Swade’s challenge has convinced lar, it still had a much higher number of vac- us that the dominant understanding of what uum tubes than its immediate successors, the stored-program concept is, and of why it while suffering from an unusually small writ- is important, has changed considerably over able memory. time. Having given a historical explanation Our work involves a shift of analytical pri- of the endemic confusion surrounding the orities from theory to practice and from stored-program concept, we suggested that

14 IEEE Annals of the History of Computing historians returning to the era with an eye to Preliminary Discussion of the Logical Design of an the investigation of programming practice Electronic Computing Instrument, Inst. for and computer use are likely to find the con- Advanced Studies, 1946. The only serious histor- cept unhelpfully imprecise and overloaded ical claim that a computer storing its program in with contradictory associations. Instead, we electronic memory was constructed without sig- suggest the adoption of more precisely nificant influence from the “First Draft” was defined alternatives to capture specific made by Jack Copeland with respect to the aspects of the new approach to computing . J. Copeland, Colossus: The associated with the work of von Neumann First Electronic Computer, Oxford Univ. Press, and his collaborators. 2006, pp. 365, 373. After further research, The concept of a modern code paradigm Copeland has concluded instead that the design will help us in parts 2 and 3 of this series of actually used for the Baby was derived directly articles to articulate the facet of the broader from von Neumann’s reports. B.J. Copeland, EDVAC model that was implemented, for the “The Manchester Computer: A Revised History first time, when ENIAC was converted to its Part 1: The Memory,” IEEE Annals of the History new mode of operation. This coding scheme of Computing, vol. 33, no. 1, 2011, pp. 4–21. was not the only important innovation intro- 4. The three reports in the series are reprinted in duced with the First Draft in 1945, but it was W. Aspray and A.W. Burks, Papers of John von certainly an important one and has perhaps Neumann on Computing and Computer Theory, been the most enduring. MIT Press and Tomash Publishers, 1987. 5. As we will discuss in “Engineering ‘The Miracle of the ENIAC’: Implementing the Modern Code Acknowledgments Paradigm” in a forthcoming issue of IEEE Annals, This project was generously funded by Mrs. the converted ENIAC also had real advantages LD Rope’s Second Charitable Settlement. over EDSAC in some areas, including maximum Peggy Kidwell made a major contribution by program length, ease of program writing and alerting us to IBM’s early internal use of debugging, and input/output performance. “stored program,” which Paul Lasewicz and 6. T.S. Kuhn, The Structure of Scientific Revolutions, Dawn Stanford were then kind enough to Univ. of Chicago Press, 1962. 7. Von Neumann, “First Draft of a Report on the send to us from the IBM Corporate Archives. EDVAC,” section 1.2. William Aspray, Atsushi Akera, Paul Ceruzzi, 8. Von Neumann, “First Draft of a Report on the David Hemmendinger, and Martin Camp- EDVAC,” section 2.5. bell-Kelly kindly answered our questions on 9. J.P. Eckert, Jr., “A Preview of a Digital Comput- specific topics and shared their perspectives ing Machine,” The Moore School Lectures: Theory on computing in the 1940s. Peter Sachs Col- and Techniques for Design of Electronic Digital lopy aided in the location and retrieval of Computers, M. Campbell-Kelly and M. R. archival material. This research benefited Williams, eds., MIT Press, 1985, pp. 108–126. from inclusion in a special session organized Quotations on pp. 112, 114. by Gerard Alberts and Liesbeth De Mol for 10. J.W. Mauchly, “Preparation of Problems for the 2013 Complexity in Europe Conference EDVAC-Type Machines,” Proc. Symp. Large-Scale Digital Calculating Machinery, 7–10 January in Milan. Portions of this research were pub- 1947, W. Aspray, ed., MIT Press, 1985, lished earlier.43 pp. 203–207. 11. D.R. Hartree, Calculating Instruments and References and Notes Machines, Univ. of Illinois Press, 1949, p. 88. 1. D. Swade, “Inventing the User: EDSAC in Con- 12. One can find different tube numbers quoted for text,” The Computer Journal, vol. 54, no. 1, many early computers, and in fact, the exact 2011, pp. 143–147. number would have fluctuated over their oper- 2. The First Draft was reprinted in J. von Neumann, ating lives as hardware was added and removed. “First Draft of a Report on the EDVAC,” IEEE According to M.H. Weik, “BRL Report 971: A Annals of the History of Computing, vol. 15, no. 4, Survey of Domestic Digital Computing Sys- 1993, pp. 27–75. tems,” Aberdeen, 1955, ENIAC then had 3. Some authors distinguish between “stored 17,468 tubes, the IAS computer around 3,000, program concept” and “von Neumann and SEAC 1,424. S. Lavington, Early British Com- architecture,” attributing the latter to the much puters, Digital Press, 1980, reports “800 the- more specific computer design presented in mionic valves” for the Pilot ACE (p. 44), 3,000 A.W. Burks, H.H. Goldstine, and J. von Neumann for EDSAC, and as of April 1949, 1,300 for the

January–March 2014 15 Reconsidering the Stored-Program Concept

Manchester Mark 1 (p. 118). The new architec- 3742114.html. One of us challenges this ture was so effective in eliminating vacuum notion in T. Haigh, “Actually, Turing Did Not tubes that ENIAC’s total was only ever exceeded Invent the Computer,” Comm. ACM, vol. 57, by the immense AN/FSQ-7 computers that no. 1, 2014, pp. 36–41. pushed the limits of 1950s computing technol- 24. Wikipedia, “Stored-Program Computer,” ogy for the military SAGE project. http://en.wikipedia.org/wiki/Stored- 13. Von Neumann, “First Draft of a Report on the program computer. EDVAC,” section 5.6. 25. P. Ceruzzi, Computing: A Concise History, MIT 14. Campbell-Kelly and Williams, eds.,The Moore Press, 2012. School Lectures. 26. D. Swade, “Inventing the User: EDSAC in 15. M.R. Williams and M. Campbell-Kelly, eds.,The Context,” p. 146. Early British Computer Conferences, CBI Reprints, 27. M. Priestley, A Science of Operations: Machines, MIT Press, 1985; D.R. Hartree Calculating Logic, and the Invention of Programming, Machines: Recent and Prospective Developments Springer, 2011, argues that a connection and Their Impact on Mathematical Physics, Cam- between Turing’s computational model and bridge Univ. Press, 1947; Hartree Calculating actual stored-program computers was only Instruments and Machines; Engineering widely made after 1950. Research Associates,High-Speed Computing 28. A. Akera, Calculating a Natural World: Scientists, Devices, McGraw-Hill, 1950. Engineers, and Computers During the Rise of U.S. 16. N. Rochester, “A Calculator Using Electrostatic Cold War Research, MIT Press, 2007, p. 120, Storage and a Stored Program,” 17 May 1949. suggests that the stress placed by some histori- From the IBM Corporate Archives, Somers, New cal writers on self-modifying code as a defining York. Its system of two-digit instruction codes characteristic of the stored-program computer and three-digit addresses for the stored program reflects theoretical concerns that were broadly was similar to the format adopted for the con- articulated only in the 1960s. verted ENIAC. 29. The portion of the report dealing with program- 17. J.W. Sheldon and L. Tatum, “The IBM Card- ming was never written, but these functions Programmed Electronic Calculator,” Papers and were all present in ENIAC by 1945 and it is clear Discussions Presented at the Dec. 10–12, 1951, Joint that the EDVAC team would have been con- AIEE-IRE Computer Conf., ACM, 1951, pp. 30–36, cerned with preserving them. A contemporary quotation on p. 35. However, the phrase “stored report from the group noted that “von Neu- program” was previously used in print at least mann has specified that some order symbols be once prior to this to describe the MADDIDA as capable of modification by deleting a given part “controlled by a novel form of stored program” of the order and inserting something else in in an end-of-year summary of developments place of this part…. so that function tables may in “Electronic Computers” for an engineering be used, subroutines called in, etc.” J.P. Eckert, audience. Anonymous, “Radio Progress and J.W. Mauchly, “Automatic High Speed During 1950,” Proc. IRE, vol. 39, no. 4, 1951, Computing: A Progress Report in the EDVAC. pp. 359–396. There are almost certainly other Report of Work Under Contract No. early published uses waiting to be discovered. W 570 ORD 4926, Supplement No 4. (Plantiff 18. W.H. Ware, The History and Development of the Exhibit 3540),”30 Sept. 1945, ENIAC Patent Electronic Computer Project at the Institute for Trial Collection, UPD 8.10, Univ. of Pennsylvania Advanced Study, Rand Corp., 1953. Archives and Records Center, p. 77. Von Neu- 19. H.H. Goldstine, The Computer from Pascal to von mann’s sort program of 1945 uses instruction Neumann, Princeton Univ. Press, 1972. modification to, in later terminology, dereference 20. M.R. Williams, “A Preview of Things to Come: a pointer. D.E. Knuth, “Von Neumann’s First Some Remarks on the First Generation of Com- Computer Program,” ACM Computing Surveys, puters,” The First Computers: History and Archi- vol. 2, no. 4, 1970, pp. 247–260. tectures, R. Rojas, and U. Hashagen, eds., MIT 30. This has been noted previously be several histor- Press, 2000, pp. 1–16. ians, including M.D. Godfrey and D.F. Hendry, 21. Comment by B. Randell, Annals of the History of “The Computer as von Neumann Planned It,” Computing, vol. 3, no. 4, 1981, pp. 396–397. IEEE Annals of the History of Computing, vol. 15, 22. M. Campbell-Kelly and W. Aspray, Computer: A no. 1, 1993, pp. 11–21, and Priestley, A Science History of the Information Machine, Basic Books, of Operations. 1996, p. 104. 31. Priestley, A Science of Operations, pp. 167–169. 23. J. Copeland, “What Apple and Microsoft Owe to 32. A.G. Bromley, Stored Program Concept: The Ori- Turing,”12 Sept. 2013; www.huffingtonpost. com/ gin of the Stored Program Concept, tech. report jack-copeland/what-apple-and-microsoft- b 274, Basser Dept. of Computer Science, Univ. of

16 IEEE Annals of the History of Computing Sydney, Nov. 1985; cited at http://sydney. 43. T. Haigh, “ ‘Stored Program Concept’ Consid- edu.au/engineering/it/research/tr/tr274.pdf. ered Harmful: History and Historiography,” The This ability is also essential to overlay or Nature of Computation. Logic, , Appli- paging schemes. Bromley additionally sug- cations, P. Bonizzoni, V. Brattka, and B. Lowe,€ gested that self modification was necessary for eds., LNCS 7921, Springer-Verlag, 2013, or assemblers to engage in pp. 241–251. “instruction building,” but we do not believe this is correct in all cases. Thomas Haigh is an associ- 33. A. Olley, “Existence Preceded Essence—Meaning ate professor of information of the Stored Program Concept,” History of studies at the University of Computing: Learning from the Past, A. Tatnall, ed., Wisconsin–Milwaukee. His Springer Verlag, 2010, pp. 169–178. research interests include the 34. M. Bullynck and L. De Mol, “Setting-Up Early history of computing, espe- Computer Programs: D. H. Lehmer’s ENIAC cially from the viewpoints of Computation,” Archive of Mathematical Logic, labor history, history of tech- vol. 49, 2010, pp. 123–146. nology, and business history. Haigh has a PhD in 35. Priestley, A Science of Operations, chaps. 6 and 7. the history and sociology of science from the 36. The list has some overlap with the characteristics University of Pennsylvania. See more at www. attributed to the stored-program concept in tomandmaria.com/tom. Contact him at thaigh@ P. Ceruzzi, “Crossing the Divide: Architectural computer.org. Issues and the Emergence of the Stored Pro- gram Computer, 1935–1955” IEEE Annals of Mark Priestley is an inde- the History of Computing, vol. 19, no. 1, 1997, pendent researcher into the pp. 5–12, which shows that historians have history and philosophy of invested “stored program” with a great deal computing, with a special in- more than the literal ability to store a program. terest in the development of 37. The order code specified in the report has been programming. He started his presented most clearly in Godfrey and Hendry, career as a programmer and “The Computer as von Neumann Planned It.” wasformanyyearsalecturer 38. One of the 10 arithmetic operations, s, would in software engineering at the University of take a number from one or the other of the Westminster before turning to the history of machine’s arithmetic input registers depending computing. Priestley has a PhD in science and on a flag set by the results of a previous arith- technology studies from University College Lon- metic operation. Among other conditional don. His most recent book, A Science of Operations: operations, this could be used to set the Machines, Logic, and the Invention of Programming address stored within an instruction to one of (Springer, 2011), explores the coevolution of pro- two possible values according to whether a gramming methods and machine architecture. particular condition was true or false. Von More information is available at http://www. Neumann, “First Draft of a Report on the markpriestley.net. Contact him at m.priestley@ EDVAC,” section 11.3. gmail.com. 39. M. Campbell-Kelly, “Foundations of Computer Programming in Britain (1945–1955),” doctoral Crispin Rope has been thesis, Mathematics and Computer Studies, interested in ENIAC since Sunderland Polytechnic, 1980, p. 239. We reading Douglas Hartree’s should note that our new evidence shows ENIAC pamphlet on the machine had already run a complex Monte Carlo pro- from 1947 and has pursued an gram in the modern code paradigm prior to this avocational interest in its his- date. tory for more than a decade. 40. M. Campbell-Kelly, “Programming the Pilot His earlier work on this topic ACE: Early Programming Activity at the National has been published in IEEE Annals of the History of Physical Laboratory” Annals of the History of Computing and Resurrection: The Bulletin of the Com- Computing, vol. 3, no. 2, 1981, p. 138. puter Conservation Society. Contact him at wester- 41. Burks, Goldstine, and von Neumann, Preliminary [email protected]. Discussion of the Logical Design of an Electronic Computing Instrument. 42. M.V. Wilkes, D.J. Wheeler, and S. Gill, The Prepa- ration of Programs for an Electronic Digital Com- puter, Addison-Wesley, 1951.

January–March 2014 17