In the seventeenth century, imagination was used interchangeably with fancy. However, by the nineteenth century, Wordsworth and Coleridge came to identify imagination with the creative processes in poetry and discovery. Imagination was considered the highest faculty. Ada continued along the Coleridgean path and used her imagination to speculate on how the Analytical Engine might be a path as well to “higher truth.” In the following passage Ada looked at the Analytical Engine from a metaphysical point of view and explained its potential to aid science.
From Note A, p. 696
Those who view mathematical science not merely as a vast body of abstract and immutable truths, whose intrinsic beauty, symmetry and logical completeness, when regarded in their connexion together as a whole, entitle them to a prominent place in the interest of all profound and logical minds, but as possessing a yet deeper interest for the human race, when it is remembered that this science constitutes the language through which alone we can adequately express the great facts of the natural world, and those unceasing changes of mutual relationship which, visibly or invisibly, consciously or unconsciously to our immediate physical perceptions, are interminably going on in the agencies of the creation we live amidst: those who thus think on mathematical truth as the instrument through which the weak mind of man can most effectually read his Creator’s works, will regard with especial interest all that can tend to facilitate the translation of its principles into explicit practical forms.
Ada repeated the distinction between the two engines again and again because many people criticized Babbage for not continuing to work on his first calculating engine, the Difference Engine, and instead putting all his efforts into the Analytical Engine. It is a distinction that even some people today have difficulty understanding.
In simple terms, the Analytical Engine used punch or punched cards, like the first modern mainframe computers, as an input device. It had a “store” to store numbers. It was not until the mid-1960s that the modern computer could store as many digit numbers as did the Analytical Engine. The Analytical Engine had a “mill” where the information was processed and is similar to the Central Processing Unit (CPU) in the modern computer.
Finally, the Analytical Engine used several methods to print out information, even in graph form. It was not programmable in the modern sense of that word. It was to be programmable in the software by arranging the punch cards by repetition of cycles. Ada emphasized this distinction by using a metaphor (highlighted in bold type) as accurate as one her father might have written.
From Note A, p. 696
The distinctive characteristic of the Analytical Engine, and that which has rendered it possible to endow mechanism with such extensive faculties as bid fair to make this engine the executive right-hand of abstract algebra, is the introduction into it of the principle which Jacquard devised for regulating, by means of punched cards, the most complicated patterns in the fabrication of brocaded stuffs. It is in this that the distinction between the two engines lies. Nothing of the sort exists in the Difference Engine. We may say most aptly that the Analytical Engine weaves algebraical patterns just as the Jacquard-loom weaves flowers and leaves.
Another critical distinction was the ability to deal with conditional operations or “if” statements. The ability of the engine to act on an “if” statement without the intervention of a human hand separated it from all mere calculating machines. It was a quantum leap that Ada recognized. The Analytical Engine could calculate a problem and put it in the “store,” retrieve the answer, and use it in another problem; as a result it was capable of both analysis and synthesis.
From Note A, pp. 696-697
The bounds of arithmetic were however outstepped the moment the idea of applying the cards had occurred; and the Analytical Engine does not occupy common ground with mere “calculating machines.” It holds a position wholly its own; and the considerations it suggests are most interesting in their nature. In enabling mechanism to combine together general symbols, in successions of unlimited variety and extent, a uniting link is established between the operations of matter and the abstract mental processes of the most abstract branch of mathematical science. A new, a vast, and a powerful language is developed for the future use of analysis, in which to wield its truths so that these may become of more speedy and accurate practical application for the purposes of mankind than the means hitherto in our possession have rendered possible.
From Note A, p. 697
We will touch on another point which constitutes an important distinction in the modes of operating of the Difference and Analytical Engines. In order to enable the former to do its business, it is necessary to put into its columns, the series of numbers constituting the first terms of the several orders of differences for whatever is the particular table under consideration. The machine then works upon these as its data. But these data must themselves have been already computed through a series of calculations by a human head . . . In other words, an analysing process must have been gone through by a human mind in order to obtain the data upon which the engine then synthetically builds its results . . . [The] Analytical Engine is equally capable of analysis or of synthesis.
Ada attempted to answer a persistent question about the Analytical Engine: of what possible use could such an engine be? She then emphasized the practical value of such a machine.
Who should develop it? Babbage was frustrated that no one in England was supportive of his ideas for the Analytical Engine. Ada tried to protect Babbage from engendering anger in the British community by insisting that the preface detailing the lack of support of the British government not be included in the Memoir. She wrote Babbage that inclusion was suicidal. Instead, Ada attempted to gain support for his idea for the Analytical Engine by evoking patriotic sentiment.
In her letters to Annabella and Livy in 1834, she tried to evoke a passion for a joint mission, an esprit de corps. In the following passage Ada used patriotic feeling to enlist supporters for the Analytical Engine. She predicted accurately that if the government were not supportive, it would lead to the “completion of the undertaking by some other nation or government.”
From Note A, pp. 699-670
Those who incline to very strictly utilitarian views, may perhaps feel that the peculiar powers of the Analytical Engine bear upon questions of abstract and speculative science, rather than upon those involving every-day and ordinary human interests. These persons being likely to possess but little sympathy, or possibly acquaintance, with any branches of science which they do not find to be useful (according to their definition of that word), may conceive that the undertaking of that engine, now that the other one is already in progress, would be a barren and unproductive laying out of yet more money and labour; in fact, a work of supererogation. Even in the utilitarian aspect, however, we do not doubt that very valuable practical results would be developped by the extended faculties of the Analytical Engine; some of which results we think we could now hint at, had we the space; and others, which it may not yet be possible to foresee, but which would be brought forth by the daily increasing requirements of science, and by a more intimate practical acquaintance with the powers of the engine, were it in actual existence.
From Note A, p. 700
With whomsoever or wheresoever may rest the present causes of difficulty that apparently exist towards either the completion of the old engine, or the commencement of the new one, we trust they will not ultimately result in this generation’s being acquainted with these inventions through the medium of pen, ink and paper merely; and still more do we hope, that for the honour of our country’s reputation in the future pages of history, these causes will not lead to the completion of the undertaking by some other nation or government.
One can read into the following quotations the germ of perhaps the most important advance in software development in the past twenty years, an idea variously referred to (in its many forms) as abstraction, modularity, separation of concerns, information hiding, or obj
ect-oriented design. The essential component of this idea is the separation of a software action specification from its implementation, and the Ada software language contains novel facilities to encourage precise execution of this separation. Every Ada subprogram is divided into a specification (that carefully describes the subprogram’s behavioral interface with other system components, that is, “what” the subprogram does) and a body (that instructs the machine what to do to effect the subprogram, or “how” the subprogram is to work). The power conferred by this separation allows the Ada language very important powers, among them (1) to permit early integration of subprograms based only on the specification parts, a boon in large system design; and (2) to allow system updating by changing only subprogram bodies, avoiding the costly effects of having this change “ripple” through the system.
From Note A, p. 700
M. Menabrea, on the contrary, exclusively developes the analytical view; taking it for granted that mechanism is able to perform certain processes, but without attempting to explain how; and devoting his whole attention to explanations and illustrations of the manner in which analytical laws can be so arranged and combined as to bring every branch of that vast subject within the grasp of the assumed powers of mechanism. It is obvious that, in the invention of a calculating engine, these two branches of the subject are equally essential fields of investigation, and that on their mutual adjustment, one to the other, must depend all success. They must be made to meet each other, so that the weak points in the powers of either department may be compensated by the strong points in those of the other.
From Note B, p. 706
The further we analyse the manner in which such an engine performs its processes and attains its results, the more we perceive how distinctly it places in a true and just light the mutual relations and connexion of the various steps of mathematical analysis, how clearly it separates those things which are in reality distinct and independent, and unites those which are mutually dependent.
Woven portrait of Jacquard
Charles Babbage had adapted the idea of the punched card from the Jacquard Loom. Rather than relying on verbal explanations, Ada invited the reader who wished to see how the punched card and the Jacquard Loom worked to visit the exhibit of the machine at two different locations in London. Babbage, by adapting the punched card to the Analytical Engine, had made an improvement in the way punched cards could be used in giving the loom instructions. Ada related that improvement to art, using a metaphor once again to reinforce her meaning.
It should be noted that carefully specified software (such as the loom-cards) is eminently capable of being reused in ways (such as “backing”) other than those originally intended. Such software reuse is an exceptionally economical means of software development; not only does it save the cost of redeveloping similar software, but it also allows use of already tested software, saving the cost of error repair. Some predicted that the 1990s would be the decade in which software reuse becomes the principal software development mechanism, and that the Ada software language, which simplifies software reuse because of its precise interface specification and generic subprogram facilities, would lead the way.
From Note C, p. 706
The mode of application of the cards, as hitherto used in the art of weaving, was not found, however, to be sufficiently powerful for all the simplifications which it was desirable to attain in such varied and complicated processes as those required in order to fulfil the purposes of an Analytical Engine. A method was devised of what was technically designated backing the cards in certain groups according to certain laws. The object of this extension is to secure the possibility of bringing any particular card or set of cards into use any number of times successively in the solution of one problem. . .
It has been proposed to use it for the reciprocal benefit of that art, which, while it has itself no apparent connexion with the domains of abstract science, has yet proved so valuable to the latter, in suggesting the principles which, in their new and singular field of application, seem likely to place algebraical combinations not less completely within the province of mechanism, than are all those varied intricacies of which intersecting threads are susceptible. By the introduction of the system of backing into the Jacquard-loom itself, patterns which should possess symmetry, and follow regular laws of any extent, might be woven by means of comparatively few cards.
In the first excerpt from Note D, Ada commended the use of indices, a now-basic technique for reducing complexity in the processing of regular data structures. All software language and computer hardware provide facilities for indexed iteration. To further illustrate the concept, Ada included at the end of Note D a table tracing execution of a set of indexed instructions.
DIAGRAM TO NOTE D
Her table further refined “Menabrea’s notation of V0, V1, V2 . . . as far as lower suffices are concerned, to denote location, but also introduced higher suffices 0V, 1V, 2V to denote the state of the variable column. Any column which is given a number is labelled 1V, and if this number is altered during the operation it becomes successively 2V, 3V. . . Lady Lovelace [Ada] justifies her upper suffix notation by remarking . . . it is better to record the events as m+1V1 = mVp + mVn, rather than the confusing Vn = Vp + Vn.”
The second excerpt goes further. While her discussion of indexing assumed control of the Analytical Engine by a single sequential instruction stream, Ada displayed in this second excerpt remarkable insight into the vastly more complex milieu of multiple parallel instruction streams. Because of the explosion of the numbers of possible conditions that must be taken into account, software development for such parallel and simultaneous instruction streams strains the current state of the art.
From Note D, p. 709
There are several advantages in having a set of indices of this nature; but these advantages are perhaps hardly of a kind to be immediately perceived, unless by a mind somewhat accustomed to trace the successive steps by means of which the engine accomplishes its purposes. We have only space to mention in a general way, that the whole notation of the tables is made more consistent by these indices, for they are able to mark a difference in certain cases, where there would otherwise be an apparent identity confusing in its tendency . . . It is also obvious that the indices furnish a powerful means of tracing back the derivation of any result; and of registering various circumstances concerning that series of successive substitutions. . .
In the excerpt from Note D, Ada referred to the parallel but independent activities of parts of the Analytical Engine, but it is then only a short step to imagine multiple parallel whole Analytical Engines of vastly greater (and all the while controlled) expression interacting simultaneously.
From Note D, p. 710
It must be evident how multifarious and how mutually complicated are the considerations which the workings of such involve. There are frequently several distinct sets of effects going on simultaneously; all in a manner independent of each other, and yet to a greater or less degree exercising a mutual influence. To adjust each to every other, and indeed even to perceive and trace them out with perfect correctness and success, entails difficulties whose nature partakes to a certain extent of those involved in every question where conditions are very numerous and inter-complicated; such as for instance the estimation of the mutual relations amongst statistical phenomena, and of those involved in many other classes of facts.
In the excerpt from Note E, Ada related how the Analytical Engine would compute a trigonometric function. Then she expanded the visual image she had used of weaving and symmetry to highlight the cycle, a conceptual building block of programs for both the Analytical Engine and later the computer.
From Note E, p. 716
. . . . Wherever a general term exists, there will be a recurring group of operations, as in the above example. Both for brevity and for distinctness, a recurring group is called a cycle. A cycle of operations, then, must be understood to signify any set of operations which is repeated mor
e than once. It is equally a cycle, whether it be repeated twice only, or an indefinite number of times; for it is the fact of a repetition occurring at all that constitutes it such. In many cases of analysis there is a recurring group of one or more cycles; that is, a cycle of a cycle, or a cycle of cycles. . .
From Note F, p. 720
There is in existence a beautiful woven portrait of Jacquard, in the fabrication of which 24,000 cards were required.
The power of repeating cards, alluded to by M. Menabrea in page 680, and more fully explained in Note C., reduces to an immense extent the number of cards required. It is obvious that this mechanical improvement is especially applicable wherever cycles occur. . .
Of all the material in the translation, the following Note has probably engendered the most controversy in light of its denial of the possibility of creating original knowledge through “artificial intelligence.” While we have highlighted in bold type the passage most often quoted, the whole passage summarized precisely and with remarkable insight the limits and the potential of both the Analytical Engine and the computer.
Ada, the Enchantress of Numbers:Poetical Science Page 14