Academia.eduAcademia.edu

Telling the Long and Beautiful (Hi)Story of Automation!

2013, IFIP Advances in Information and Communication Technology

The purpose of this paper is to suggest and justify a framework for the history of computing that interests a wide public. The aim is to set the history of computing in the much broader context of automation, while also addressing the evolution of ideas. It suggests first a new detailed classification of programs (in the broad sense). Then it tries in particular to sketch out a "phylogenesis" of automation from the 12 th to 19 th centuries in Europe. It discusses various automatic devices: particularly, clocks and their annexes, but also organs, games, looms and early computers. Finally, it addresses the storedprogram computer and high-level languages.

Supercharge your research with Academia Premium

checkDownload curated PDF packages
checkTrack your impact with Mentions
checkAccess advanced search filters

Introduction

According to French historian Fernand Braudel [5], "History occurs at different levels […]. On the surface, the history of events works itself out in the short term: it is a sort of microhistory. Halfway down, a history of conjunctures follows a broader, slower rhythm.

[…] And over and above this 'recitatif' of conjuncture, structural history, or the history of the longue durée, inquires into whole centuries at a time. It functions along the border between the moving and the immobile, and because of the long-standing stability of its values, it appears unchanging compared with all the histories which flow and work themselves out more swiftly, and which in the final analysis gravitate around it. […] In any case, it is in relation to these expanses of slow-moving history that the whole of history is to be rethought, as if on the basis of an infrastructure. All the stages, all the thousands of stages, all the thousand explosions of historical time can be understood on the basis of these depths".

To make the history of computing attractive, I would like, following Braudel, to suggest that we examine, in a general manner, the long-term, multidimensional history. In particular, I propose to focus on the history of automation from Antiquity to the 'stored program computer', while also addressing the related mental evolution and highlighting the dematerialization that occurs on the technical level at the same time as the increased autonomy of the machine.

For the past 10 years, I have had the experience each year of giving lectures (lasting 30 minutes to 30 hours) to students at the University of Namur (Belgium) or on a more sporadic basis during speeches given to a wider public. In my experience, this approach generates a great deal of interest on the part of students. It could, I believe, also be used in a museum setting. In this article, I therefore propose to explain and justify the main thread of my approach.

Long histories, tracing the full evolution of a specific object from its origins, are rare in the field of science and technology. Those relating to automation are particularly infrequent, since they involve a wide range of applications and call on specialists in very diverse disciplines. We can cite two such studies, both published after 1960: the paper by Jean Sablière [49] which at one time was a primary reference in the field, and the more recent article by Brian Randell [44]. The latter is a major contribution to this subject and is essential reading. Randell analyses the origins of computer programming, focusing on the concept of sequence control. To do this, he reviews early automatic devices (pointing out the "pegged cylinder" as a programming medium), Vaucanson's and Jacquard's contributions (underlining that punched media are "clearly separate"), Babbage's contributions, the contributions of some of his direct successors and, finally, the stored-program concept (taking into account, moreover, the ability of the machine to calculate the addresses of the variables, but not envisaging high-level languages).

The current paper revisits Randell's analysis and generalizes it, while supplementing it with additional information. It proposes a broader conception of the notion of a program 1 and provides a detailed typology of this concept. Furthermore, it integrates that concept into the much broader one of automation. The frame of reference that I propose is both generalized and inclusive: it is aimed not only at providing a rigorous definition of any automaton, but also coherently describing the evolution of automation, leading to the development of stored-program computers equipped with software enabling programming in high-level languages. Two comments need to be made at this point. First, it should be stressed that this framework was designed in the spirit of texts written by specialists in computer organization and design, in particular J. P. Meinadier [39] as well as D. A. Patterson and J. L. Hennessy [41]. Second, it should be noted that application of this frame of reference to the history of automation should, in the end, be a tool to help noncomputer scientists understand what a computer that enables programming in highlevel languages is.

Furthermore, in his introduction, Randell [44] states the following about his own choice of historic milestones:

"It is important to realize that many of these particular developments have been selected more because I personally find them interesting than because of any contemporary importance (…)" Like Randell, I have selected 2 stages in history that are interesting in order to illustrate the analytical perspective that I have adopted. However, our perspectives do not completely overlap, and the milestones I have chosen differ slightly from Randell's. In contrast with Randell, for example, I have examined in greater depth the history of mechanical clocks and their annexes, highlighting the passage from the wheel (not discussed by Randell) to the cylinder as well as the transition, which from my point of view is fundamental, from stationary pegs to moving ones (which Randell mentions only in passing).

Now that this brief, annotated review of the literature on the long-term history of automation has been completed, we should address the history of different fields that over the centuries were affected by automation. It should be noted that, in general, these fields do not intersect, are unfamiliar with each other and use different vocabularies. Furthermore, these specialized literatures often omit to give pertinent details for those who are interested in automation, since they generally have other preoccupations. For example, a specialist in the history of carillons is interested in the complexity of the melodies played via automation, but not in the programming of those melodies. Overall, the literature pertaining to automata reveal, when compared side by side, many points of confusion, gaps and inconsistencies. It is therefore particularly important to start by providing some definitions. Examples and illustrations will come later. First, let us recall that the word "automaton" comes from the Greek "automatos" and thus means etymologically "that which moves by itself." According to Devaux [15], "automation" denotes a mechanism by which the more or less complex sequence of operations takes place spontaneously each time it is triggered. I suggest that an automaton 3 be defined as a machine incorporating automation. Following Sablière [49], Jacomy [29] and Gille [21], let us consider that two principles allow automation to function: regulation (which implies simultaneity in relation to the process being regulated) and programming (which implies precedence in relation to the process being programmed). Let us also note that the two principles are not incompatible. Regulation is synonymous with feedback in a broad sense. As defined by Wikipedia, "feedback describes the situation when output from a phenomenon in the past will influence an occurrence or occurrences of the same phenomenon (or the continuation / development of the original phenomenon) in the present or future". As to programming (in a broad sense 4 ), it can be defined as determining in advance the sequence of operations (or actions or motions) that have to be performed by a machine and then recording this sequence on a medium that serves as a memory. 5 It is useful to emphasize that all programming therefore implies, by definition even, the existence of a memory. 6 A program (in a broad sense) is an ordered set of operations (or actions or motions) performed by an automatic system. I would like to explicitly mention an elucidating distinction between the program as it is conceived by humans and the program as it is 'understood' (i.e. read) by the machine.

Starting from the understanding of Meinadier [39] that there are three major categories of programs which have succeeded each other over time, and adopting his vocabulary, I would also like to propose a new (more detailed) classification of programs (as they are understood by the machine). According to Meinadier's typology [39] (see Table 1), a program is said to be internal (to the machine) if it is fixed. Furthermore, a program is termed "external" 7 by Meinadier if, like Jacquard's loom, it is not unchangeable but rather is (manually) interchangeable. Personally, I will explain this concept later but, as B. Randell [45] suggested to me, I propose to consider the category of external programs as containing two sub-categories, which are above all relevant for comparing calculating machines 8 : the sub-category of exchangeable programs (taken into account by Meinadier) but also the more primitive sub-category of programs that are manually modifiable in situ 9 . In any case, such programs are accessible to the user. Finally, a program is defined as a "stored program" in the last possible case. Meinadier does not note that this last type of program is fully 'manageable' automatically, (as we will describe at length below) i.e. by the machine itself. However, as we are going to see, this point is fundamental. We still have to state a basic detail that is rarely addressed in the literature: a machine can have several levels of programming (possibly of the same class). This configuration is quite frequent and applies to most of the automata that will be discussed in the text.

Table 1

).rnal program: a wheel with 40 interchangeable pegs. T ams, sliding on its[vertical] axis, in order to successiv erent letters to the levers"[15]. Other famous entertain e 18 th century, notably by Jacques Vaucanson. The la rtaining or educational automata to producing automa

Automata Prior to Stored Program Computers

We should begin by stressing the importance of the Mechanicians' School of Alexandria [18] (3 rd century BCE -1 st century CE) as pioneers in the history of 7 D. A. Grier [23] stresses that the expression "external programming" was employed for the first time in 1951. This was in a "paper by IBM researchers which attacked the concept [of stored-program computer]. This paper described the IBM card programmed calculator, which was an accounting machine connected to an electronic arithmetic unit" [23]. 8 This distinction is not however very useful for analyzing the history of pegged cylinders used in musical automata: these cylinders either have mobile pegs (e.g. in carillons) or exchangeable ones (e.g., in organs), essentially as a function of their size. 9 I would, however, like to stress that there are intermediate cases.

automation. These early mechanicians, using, on the one hand, pegged 10 wheels and, on the other hand, levers, ropes, cylinders, 11 pulleys, etc., were able to build automata, notably in the fields, closely related at the time, of religion and theatre. It is certain that they used the principle of programming. However, in contrast with what certain authors have stated, it seems that they did not use any regulation [25] [26].

We can now move on to the successors of the Alexandrians as concerns automata: the Byzantines 12 and the Arabs. The latter collected the manuscripts of Alexandria and translated them into Arabic. They also refined some of the techniques: we can see that they used the principle of regulation in addition to programming in order to build automata. 13 Furthermore, it has been proven that the oldest description of a "pegged cylinder" used to automate the playing of a musical instrument is the work of the Musa brothers, in 9 th century Bagdad [32] [34]. The "flute player" automaton that they described was very sophisticated and based on water power. To produce the desired music automatically, a wooden programming cylinder had to be made, with pegs of the proper dimensions and in the right places, and this cylinder had to be rotated at the proper speed. The Musa brothers provide a great volume of technical details: for example, they state that several melodies can be memorized on a single cylinder. They also explain that if one wanted to have several melodies for the mechanism, it was better to build a wide cylinder (rather than one with a large diameter) [32]. However, it seems that they did not raise the possibility of modifying a cylinder or replacing it, once the automated musical instrument had been made. The program can therefore be described as internal, according to the classification proposed above.

The knowledge of the Arab world was transmitted to the West, in particular by means of translation into Latin, starting in the 12 th century, in Muslim-occupied Spain. Let's now turn to Europe.

Programmed Automata not Used for Calculation in Europe

According to Dohrn-van Rossum [16], from the 12 th century, technical innovations were made in Europe to wake the monks: the direct coupling of one or several bells 10 According to their actual shape, the pegs (or teeth or cams) offer, as a general rule, the possibility of producing different movements (from all or nothing [binary effect], all the way to very progressive movement ["continuous" effect]). At the time of the ancient Greeks, it seems that each peg was an equilateral triangle [17]. 11 As underlined by B. Randell [44], Heron of Alexandria did not use 'pegged cylinders' as such but rather their forerunners implying ropes. "The rope contained eyelets which fitted over pegs protruding from the cylinder, and was fixed to the cylinder with wax. Thus as it was slowly pulled off the cylinder, the cylinder rotated first one way, then another, at various speeds [44]". I would like to add that this technique is primitive to the extent that it does not involve any long-term memorization of the sequence of the desired movements: when the rope is unwound, it must be rewound properly around the cylinder and refastened before the process is started again. 12 See, for example, the water-clock from Gaza (Palestine) circa 530 (see G. Dohrn-van Rossum [16]). 13 Via conical valves (cf. Hill [25] [26]). and a water-clock as well as the automation of the repeated striking of one bell (ringing) or of several bells (tune). This automation is based on an internal program.

One of the very rare accounts of this type of programming can be found in the rather rough representation on the reverse of the last folio of a manuscript dating from the reign of James II of Catalonia (1291-1327) 14 : it shows a mechanism consisting of a water-clock (on the bottom), and a set of bells (on top) that the clock would ring at a given interval. According to Farré-Olivé [20]: "This could be used as an alarm, or as a diversion for a party of assembled guests, or at some gathering of people." On the drawing, a set of bells can be seen (only five are shown), above which is a pegged wheel. This pegged wheel can definitely be considered a program: we can imagine that the pegged wheel would rotate and strike the bells, creating a sequence of sounds represented on a musical score, drawn in the top left part of the original document. This program can be characterized as internal. It should be noted that it is more rudimentary than the mechanism proposed by the Musa brothers: a wheel can be seen as a cylinder with a single track... It should also be stressed that the drawing does not give any indication "of how the pins actuate the hammers placed by the bells below" [20]. As Farré-Olivé [20] mentions: "we are presented with a structure conveying the main ideas, without practical details."

The next stage in the history of automation is a major event of the Middle Ages, even though it seemed to have passed virtually unnoticed at the time: the invention of mechanical clocks. This probably occurred in the 13 th century simultaneously at several European monasteries. It apparently predates the representation of the Catalan clepsydra, but as Farré-Olivé [20] explains:

"The old water-clocks and the new weight clocks could well have existed side-by-side for a period of time… because the water-clock time measurer would be far less costly to construct than any type of early weight clock."

For purely technical reasons, the invention of mechanical clocks led to the passage from unequal hours 15 (as measured by water-clocks) to equal hours 16 . In addition, as Dohrn-van Rossum [16] notes:

"Mechanical clocks offered the possibility of animating large, heavy automata and of keeping them running more reliably than could be done until then with hydraulic movements."

It therefore became possible to build mechanisms known as "monumental astronomical clocks", which were used for entertainment purposes. This involved hoisting the clock and its annexes into a tower (initially a church tower) in order to make them more visible and more audible. According to the classification proposed by Lehr [32], the annexes of mechanical clocks implemented from the 14 th century onwards in Europe can be divided into three groups: astronomical and time measurement instruments (astrolabes, dials with representation of astral movements, calendars, etc.), musical instruments (automated mechanical organs, carillons, etc.) T and devices for the theatre the Magi, etc.).

The hypothesis explaini J.D. Robertson and reiterat progressed from a bell-ri controlled by a foliot (see these two mechanisms: a internal program), a verge and a weight. The differenc mechanism, it is the repea escapement mechanism, lin of the foliot and its weights of units. From this point continuous flow of liquid, a of units [6]. We should also it sets the duration 17 of the p rest [40]. A mechanical clo here, as a programmed and

Fig. 1. Diagram of a mechan

Hourly bell-ringing invo of the mechanical clock an only in the early 14 th centu 17 This length of time may be Telling the Long and Beautiful (Hi)Story of Automation! (automata representing, for example, angelic musicians ing the invention of mechanical clocks, as formulated ted by Dohrn-van Rossum [16], is as follows: technolo inging mechanism to a clock escapement mechan e Figure 1). We should identify the basic components (vertical) crown wheel (which can be considered as with two blades (engaging alternatively the wheel tee ce lies in the results obtained. In the case of the bell-ring ated beating of a clapper on a bell. In contrast, the cl nked to the weight, will drive a back-and-forth movem s: the effect is to divide the flow of time into a success on, time measurement no longer had to be based o as was the case with the clepsydra, but rather on a count o note that the weighted foliot is a regulator of escapeme periods of crown wheel movement, separated by period ock can therefore be described, in the vocabulary adop regulated automaton.

Figure 1

Basic drawing by G. Oestmann (with permission of the author) in G. Dohrn-van Rossum, p. 109, annotated M. d'Udekem-Gevers. Figure 2: From A. Lehr et al. 1991, p. 89 (with the permission of M. Lehr). From the Royal Carillon School "Jef Denyn" Mechelen (with the permission of K. Cosaert, director of the Royal Carillon School).

nical clock with both escapement and bell-ringing mechanism olves a much more complex mechanism than the movem nd, according to Dohrn-van Rossum [16], it was inven ury, probably in the city-states of Italy. Bell-ringing re e modified by the displacement of two weights. on the production of a toothed wheel, or "count wheel": the breadth of the bump determines the number of times the bell rings. This is manifestly a case of automation based once again on a centralized, internal program. And this time the invention, though it may appear relatively commonplace to us, was considered very significant at the time. It was only by being combined with hourly bells that mechanical clocks would become widespread, first in the cities and later in the countryside. This led to a secularization of time (public clocks) [16].

A manuscript 18 dating from the mid-14 th century shows an improvement in a variant 19 of the programming technique for carillons or organs: the melody to be played was still short and simple, but now it could be modified thanks to the possibility of moving the programming pegs 20 . Of course, there is no proof that the described innovation was ever actually implemented. And while this new feature may seem of little importance from a musical point of view, it is fundamental from the perspective of the present article. Could this not be seen as the first mention of an external program (modifiable in situ) in the history of European, and most likely world, technology?

The next step in perfecting automated carillons led, in the late 15 th century, to a greater number of bells and to increased length and complexity of the melodies. For programming, this involved the use of several toothed wheels, arranged in parallel, thus forming a sort of cylinder with fixed pegs [34] (see Figure 2), equivalent to the cylinder drawn by the Musa brothers in the 9 th century. Then, around 1530 according to Lehr [33] 21 , automated carillons were built with moveable cylinder pegs (see Figure 3): this made it possible to change the tunes, now potentially quite sophisticated, that the carillon could play [34]. 22 It is therefore certain that by the early 16 th century in Europe, mechanicians had built automata with external programs. 18 Kraków, Universytet Jagielloński, Biblioteka Jagiellońska, ms. 551, fol. 47 rev. -49 rev.

Figure 2

Diagram of the oldest 15 th century)

Figure 3

(cited by A. Lehr [32]). 19 The pegs are not located around the circumference of the wheel, but rather on several radii of the programming wheel. 20 On this subject, see A. Lehr [32] and A. Lehr et al. [34]. 21 This innovation is sometimes attributed to a certain Barthélémy Coecke or de Koecke, also known as the "Buffoon of Aalst." However, such an attribution seems to be pure fancy, in light of the results of in-depth studies on this subject by A. Lehr. According to Lehr ([33] and [34]), the "Zot van Aalst" only became known as "Barthélémy Coecke" in the 19 th century, and his role in the improvement, in the 15 th century, did not involve the programming cylinder, but rather the technique enabling manual playing of the carillon. Furthermore, the text written by a monk from Saint Michael's Abbey in Old Flemish, mentioning "eenen sot van aelst" and giving rise to far-fetched interpretations, has been commented by L. Rombouts [46]. 22 "A regular grid of holes on the cylinder made it possible to move the cleats and thus modify the piece of music, particularly as a function of the religious calendar. However, these changes were rarely made more than four times each year […]" (Buchner and Rouillé [11]). See also: http://whc.unesco.org/en/list/943/video This brings us to the aut clocks. We should note fir cylinder for a musical aut obtain the desired melody. tapes to simplify the nota punching was performed fl glued on the cylinder [14].

We now move on to the categories must be distingu more precisely, automated category, let's consider th mechanician Pierre Jaquet-D maximum of 40 letters. Th contains two levels. It is, in "A stack of rotating c to move. One lever c movements, and the th formation of each lette

It also contains an exter wheel "raises all of the ca bring the cams for the diffe automata were built in the moved from making enter looms.

Telling the Long and Beautiful (Hi)Story of Automation! programming cylinder (with several wheels) for a carillon ( tomata developed after the Middle Ages, independently rst of all that it was difficult to "notate" a programm omaton, i.e. to place the pegs in the proper locations In the 17 th century, the idea was developed of using pa ation of the cylinders for mechanical organs. First, lat on sheets of paper, and then these punched sheets w e 18 th century, known as the golden age of automata. T uished: entertaining or educational automata, and looms machines for the weaving of designs. To illustrate the f he "Writer" [57] made in 1770 by the clockmaker Droz. This automaton is capable of writing any text wit his is a very interesting example, since its programm n fact, equipped with an internal program: cams, causing three levers linked to the writer's hand ontrols right-left movements, another back-and-forth hird vertical movements. There are three cams for the er" (Devaux [15] After Bouchon, Jean-Philippe Falcon and then Jacques Vaucanson developed automated machines for the weaving of designs, using external programs on a punched medium. Then in the early 19 th century, Joseph-Marie Jacquard further perfected the automated loom and made its use in an industrial setting. As we will see, these looms would also have an influence on calculating machines.

Calculating Machines

Calculating machines are automata that are quite different from those envisaged up till now in this contribution: in effect, they have the specificity of manipulating symbols. As such, it is relevant to make the distinction between the two varieties of memorized information: first, the data (which can be apprehended at different levels) and, second, the operations (more or less complex and whose sequencing constitutes a program) to be performed on those data. How do we define a basic calculating machine? Marguin [38] provides the following definition: such a machine "includes an automatic mechanism to carry tens". Let's adopt this definition, while still noting that it is focused on the automation of the rules used for mental calculation, involving position numbering (regardless of the base used). We propose here that each basic 24 mechanism for adding numbers should be considered a form of programming (in the broad sense), since it incorporates calculation rules and is based on a given algorithm to process the various digits that make up the numbers to be added, this algorithm being more or less complex depending on the machine in question. The mechanism for carrying tens is particularly crucial in a mechanical machine that uses toothed gears to represent the digits. As Babbage [3] explains:

"The process of addition requires for its completion that an apparatus should be attached to the wheels on which the sum is placed for the purpose of carrying any tens that may occur to the next highest digit. This mechanism may be constructed upon three different principles. It may be:

• Successive in its operation • It may postpone its operations • It may anticipate operations".

One of the first and most famous calculating machines was invented in 1642 by Blaise Pascal. As Marguin [37] states:

"It is surprising that automation of the carry operation was invented so late, at a time when machines in general and clock mechanisms in particular had reached a remarkable degree of perfection."

But we have to understand the mindset of the time: "Daring to invent a machine with the ability to automatically perform an operation that until then was strictly intellectual was akin to denying the divine nature of man." [38] Fig . 4. Diagram of the carry mechanism, the basis for the Pascaline

Figure 4

Drawing by Serge Picard, from Musée des arts et métiers (Paris), "Blaise Pascal", Les carnets, with the permission of Anne Chanteux (Head of the Multimedia Centre and of the network of technical museums and collections); annotation by M. d'Udekem-Gevers.

The "Pascaline" [19] is a simple adding machine. We consider here that it is based on an internal program that automates the carrying of digits, thanks to a series of carry mechanisms, each located between two toothed wheels. The central part in Figure 4 is the carry mechanism. It "is gradually lifted by the B wheel for the units. When it passes 10, it is suddenly released and falls (under its own weight), pushing the A wheel for the tens forward one position." In the Pascaline, tens are carried successively. Furthermore, it should be noted that in this machine, the storing and computing functions are not separate.

The next important steps in the history of calculating machines occurred in the 19 th century and were the work of Charles Babbage. His "Difference Engine" 25 , aimed at generating accurate and precise numerical tables, was "designed to calculate using repeated addition as in the method of finite difference." 26 There was not yet a separation of the memory and calculation functions. However, it did have two levels of programming: in addition to the internal program (analogous to the Pascaline program, but refined) for carrying the tens 27 , it also included a higher level internal 25 Babbage worked on his "Difference Engine No. 1, from 1822 until 1833" (Bromley [9]). In 1846, he "worked on another machine which he called Difference Engine No. 2" (Bromley [9]). 26 R. Horton [28] explains: "When calculating a polynomial using the method of finite differences and after the initial starting values have been calculated by hand, it is possible by using the method of differences to generate the rest of the required table using repeated addition." 27 "In Difference Engine No. 1, that carry propagation was a sequential process" (Bromley [9]).

'Reporteur' to carry tens program (in the form of a given sequence of additions In 1834 [42], Babbage b the "Analytical Engine" (s "memoir" of 1842, later tra "Mr Babbage has dev He proposed to hims capable of executing those of analysis, if the

Fig. 5. Definition

The aim of this engine operations (set out in writi this same text by Menabrea contribution, the "Analytica was based on an external p inspired by those that Jac implemented by an inter 28 "The highest level is a des What Babbage thought cou in order to carry out user-o working out terms in recurr 29 "All the movements of the c addressing" (Bromley [9]).

Telling the Long and Beautiful (Hi)Story of Automation! a "cam stack" [51]), which dictated the execution of s, which always remains the same. began to work on plans for another machine that he cal see Figure 5). As L. F. Menabrea stresses in his fam nslated into English and annotated by Ada Lovelace [36 voted some years to the realization of a gigantic idea. self nothing less than the construction of a machine not merely arithmetical calculations, but even all eir laws are known." n of the automation of Babbage's Analytical Engine e was thus to perform automatically any sequencing ing in a kind of table, examples of which are provided a). According to the classification proposed in the pres al Engine" had three levels of programming. Its automat program 28 (in the form of a sequence of punched card cquard used in his automated looms), which itself w nal program (a sort of micro-program, as it is n scription of the user-level programs that exist for the mach uld be done -exploiting the basic micro-programmed operat oriented tasks such as solving sets of simultaneous equations rence relations" (Bromley [9] 30 ), which in turn controlled notably the sequencing of carry operations, performed by another internal program. We should note that Babbage equipped his Analytical Engine with sophisticated "anticipating" 31 carry mechanisms, located on three "carriage axes" ("with their peculiar apparatus" 32 ).

Figure 5

Moreover, the Analytical Engine had to be capable of making a decision on the basis of a result that it had obtained. In other words, it had to enable what is currently called "conditional branching" 33 , which is another way of saying it had to be "regulated" (as defined above) 34 . We must also note another significant detail. Another innovation was needed in the Analytical Engine: the splitting of the functions into two organs, the "Mill" (or central processing unit) and the "Store" (with storage registers or cylinders) 35 . However, as A. G. Bromley [8] notes, "Babbage's store has no structure accessible to the programmer". Furthermore, this first "memory" was designed by Babbage for data only: the user's program always remains on punched cards.

Babbage's ingenious inventions were largely forgotten, and they are generally (see [50] and [10]) considered as having had practically no impact on the subsequent history of technology.

Let's now move on to the next steps in the history of calculating machines, by looking at those machines that use electrical circuits. In this article, I will not examine the "Tabulating Machines," 36 patented by Hermann Hollerith in 1884 and which also involve punched cards (but only to memorize data) 37 . These machines only performed a simple mechanization of counting 38 . 30 Babbage calls such a pegged cylinder a "barrel" with "studs". As noted by Bromley [8], "The barrel may be thought of as a microprogram store and a single vertical row of studs as a word of that store. […] In general, the barrel orders its own advance via several of the control levers.

[…] The barrel can […] order a transfer to another vertical up to seven positions either forward or backward relative to present one." 31 According to the terms used by Babbage himself [4]. 32 According to the terms used by Babbage himself [3]. 33 "The idea of conditional control, which had been a convenient feature in Difference Engine No. 1, starts to look like an essential part of the design of the Analytical Engine because of division" (A. G. Bromley [9]). 34 We should note that as far back as 1914 Torres y Quevedo [52] used the term 'regulation' to describe the action that today is called 'conditional branching'. 35 This separation was a consequence of the increase in the size of the machinery, which is itself related to Babbage's determined and successful research in order to minimize the time needed for carry operations (see D. Swade [50] and A. G. Bromley [10]). 36 On the subject of these machines and their inventor: see, for example, R. Ligonnière [35]. 37 These cards are not the medium for a program, but they do contain qualitative data. 38 The carry operation was limited here to its simplest expression and was done using base 100. Hollerith himself [27] made the following description: "A number of mechanical counters are arranged in a suitable frame […] The face of each counter is […] provided with a dial divided into 100 parts and two hands, one counting units the other hundreds.

[…] A suitable carrying device is arranged so that at each complete revolution of the unit hand the hundred hand registers one …"

We will therefore move on to the large numerical calculating machines of the 1940s. They contained at least two levels of programs. Above the internal program (responsible for carry operations and using electro-mechanical or electronic switches) was another program that dictated the sequencing of arithmetic operations. This latter program was either internal (and definitely fixed) (e.g. G. Stibitz's BTL Model 1) or external. As explained by W. Aspray [1], on the basis of an unpublished text written by J. H. H. Goldstine and J. von Neumann [22], there were then two possible ways of making an [external 39 ] program:

"Either all of the connections are made prior to the computation, as in the ENIAC, where one first sets switches and plug cables, which effectively hard wires the instructions into the machine prior to the computation, or connections are established at the moment in the computation, when they are needed, as in the Harvard Mark I and the Bell Labs relay calculator, in which instructions are fed in as needed from an external paper tape. The advantage of the first approach is that, once entered, all of the instructions can be executed at electronic speed; the second approach permits indefinitely long strings of instructions, does not require as much time in problem setup, and can be implemented with less hardware" 40 .

The first approach is, according to the vocabulary used in the present contribution, that of a manually modifiable program in situ, whereas the second is that of a program logically separate from the programmed device and which therefore can be changed manually.

Stored-Program Computers

At the end of World War II, the idea for a new design 41 emerged: the computer "that incorporated the best features of each approach, based on storing instructions as numbers in the computer's internal electronic memory [1]." 42 This idea was present in the draft written by von Neumann on June 30, 1945 [56] and it is unanimously considered fundamental. It implies that written numerical codes (also later called "machine language" 43 ) are now needed to communicate with the calculating machine 44 . The practical consequence of this is that it enables the machine to modify its own programs.

However, in the opinion of many commentators, this idea is insufficient to fully define the concept currently identified by the term "stored program computer". To do this, according to B. Randell [45], two other crucial characteristics also have to be taken into account: "the ability of a program-controlled device to identify some information as a program and to switch to executing that program 45 " and "the fact that it is possible to calculate addresses, and so make dynamic decisions as to which data to use, or which instruction to obey". These two characteristics were absent from the above-mentioned text by von Neumann [56], but the seeds were already present in a slightly earlier text by Turing [54]. As B. E. Carpenter and R. W. Doran [13] explain: Furthermore, one of the applications of the possibility of modifying the program as described above, was not exploited before the 1950s. It is "the ability of one program to process another, treating it as data" [13]. However this "aspect" of modification is extremely important from a practical point of view: thanks to this, a programmed T automaton can help peopl Then, it is possible to i languages and then, ope eventually to know nothing being used when writing a p Fig. 6. Definitio The concept of "softwa "hardware". As a consequ fundamental advance for t builder: "Treating instructi memory hardware and the s beneficial for the compu instantaneously [41]. "The 48 "In the early day of autom art… With the advent of fa soon became a nightmare immediate action in order computers themselves: if c which before had taken yea programs. Indeed they cou notation somewhere 'betw was then translated into c special translation program 49 The strict definition of a p computational method [i.e.

Figure 6

Telling the Long and Beautiful (Hi)Story of Automation! e not only calculate, but also write its own program invent and use higher-level languages (first, assem erational algorithmic or programming languages) g of the specific equipment characteristics of the compu program 49 .

on of the automation of a stored-program computer are" emerged and was clearly differentiated from that uence of storing the program in central memory, the programmer is combined with increased ease for ions in the same way as data greatly simplifies both software of computer systems" [41]. Obviously, this is a uter user, who can go from one program to anot e commercial implication is that computers can inh matic computing, programming was considered as some kind faster computers, however, the need for writing a program v e and left no room for artistic feelings. The situation requ r to reduce the terrible burden. The relief came through computers were able to carry such a heavy load of comput ars on a desk calculator, they certainly could also assist in wri uld; it turned out that it was possible to write programs i een' machine code and standard mathematical notation, wh correct machine code by the computer itself with the aid o m" (H. Rutishauser [48]). program for a computer scientist is therefore "an expression algorithm] in a computer language" (D. E. Knuth [30]). [41]. In the end, we can conclude, along with Patterson and Hennessy [41], that the invention of the stored-program concept "let the computing genie out of its bottle."

And to close out this long history of automation, I find it enlightening to stress that the stored program computer (see Figure 6) still, from a logical 50 point of view, takes into account both programming and regulation, identical to Babbage's Analytical Engine (see Figure 5), except for the fact that the highest-level program is, during its execution, stored in the central memory, instead of being external to the machine (on punched cards).

Comments

Since Antiquity, humans have realized their ancestral dreams 51 of manufacturing automata. An overview of the long history of automation up to the stored program computer leads us to a few general thoughts that are essentially related not only to programming, but also to regulation. We have seen that the programs as designed by humans involve a very precise sequencing that they have in mind. It should be stressed that this sequencing may consist either in a simple repetition or in a potentially more complex sequence. We have already mentioned the cases of simple repetition, for example, of a sound (alarm bell) or a unit of time (mechanical clock). We have also talked about various complex programmed sequences: for sounds (e.g. carillon melodies), movements (e.g. automata for astronomical clocks, such as bell strikers), letters (texts by Jaquet-Droz's Writer automaton), designs (weaving patterns) and, finally (when people dared at last to put intelligence into a machine), calculations (Formula of Babbage's Analytical Machine or, more generally, algorithms).

Furthermore, we have illustrated the fact that, to ensure that the machine executes their planned design, people first made fixed programs, then manually modifiable or replaceable ones and finally those that are 'fully' manageable (i.e. which can not only be replaced but also be written and then executed) by the machine itself (see 2 nd column of Table 2). These three milestones (respectively called 'internal', 'external' and 'stored program computer' by Meinadier [39] (see 1 st column of Table 2) have been shown to be fundamental, and their importance must be stressed. It should be added that, in parallel with this evolution towards greater flexibility and increased autonomy of the machine, we can observe, over time, an increasing dematerialization of the program support (possibly of the highest level), in other words, of the interface enabling humans to communicate with the machine. The major steps in this history involve the passage from raised supports to punched ones (which would seemingly go hand in hand with a mental evolution), then the passage to electrical circuits and finally the use of machine language (see 3 rd column of Table 2). It is evident that the fundamental change, from the point of view of the history of the program's support, is the one that accompanies the passage to the so-called 'stored program': since we move from a support enabling a read-only machine with sequential access (or more generally, access relative to the current position 52 ) to a support enabling writing and direct access to dynamically calculated 53 addresses (see 4 th and 5 th columns of Table 2). In the history of books, we can see an analogous evolution from the point of view of access: from the ancient roll of papyrus (which must be read as it is unrolled), we moved to books with pages (invented in the 1 st century of the current era). It is striking to note that Turing [24] 54 explicitly compared the central (magnetic) memory of Mark II to a book with pages:

Table 2

Suggested classification (and evolution) of programs (such as they are understood by the machine) and corresponding medium type

"It is as if information in the magnetic store were written in a book. In order to find any required piece of information it is necessary to open the book at the required page." 52 A. G. Bromley ([8] and [9]) uses the term 'relative addressing' in this instance. 53 It is only with addressable memory that the notion of an address for an instruction takes on its full meaning. The predecessors of stored program computers which were controlled by, for example punched tape, "could largely get by without addresses because of the fact that they could control the moving of the tape (q. v. Turing machines)" (B. Randell [45]). 54 Cited by M. Campbell-Kelly [12].

The concept of regulation has been addressed only briefly in this contribution. However, let's note that, when assimilated with conditional branching, it helps to increase the autonomy of a calculating machine, by enabling it to make decisions when the program is being run.

The brief and recent history of computing has now been placed within the longer history of automation. This has revealed deep-seated trends in the evolution of technology. I believe that this is likely to be of interest to a broad public.

Acknowledgements. I would like to thank Professors Brian Randell and Pascal Verroust (members of IFIP WG 9.7) and Luc de Brabandère (mathematician and philosopher) for reading the original manuscript and for helpful criticism and suggestions. I am also indebted to Professor Rita de Caluwe (Universiteit Gent) as well as to Philippe Slégers (member of the Association Campanaire Wallonne) and Serge Joris (administrator of the World Carillon Federation) for providing information about carillons. I would also like to acknowledge Richard Horton (Conservator Engineering & Metals, Babbage Project Engineer, Science Museum, London) and three professors at the University of Namur: Dr. Vincent Englebert, Dr. Ir. Laurent Schumacher and Dr. Wim Vanhoof for their help. Finally, I would like to thank Virtual Words Translations, which translated the original French text into English.

A preliminary, less detailed version of the present article was the subject of two presentations in 2011: one in French at Collège Belgique (slides are available on the website) and the other in English at the international conference "History and Philosphy of Computing" in Ghent (Belgium).