BLOG@CACM
Computing Applications

Was Ada Lovelace Actually the First Programmer?

Posted
Herbert Bruderer

In his report about the analytical engine of Charles Babbage in tabular form, Luigi Federico Menabrea published a program for solving linear equation systems. This work was the result of a talk that Babbage gave at a conference in Turin (1840) (see Luigi Federico Menabrea: Notions sur la machine analytique de M. Charles Babbage, in: Bibliothèque universelle de Genève, 1842, new series, volume 41, pages 352–376).

Ada Lovelace translated Menabrea's article into English and added several comments of her own. She describes – also in tabular form – a program for the calculation of Bernouilli numbers (see Ada Lovelace: Notes by the translator, for L. F. Menabrea, sketch of the analytical engine invented by Charles Babbage, esq., in: Scientific Memoirs, volume 3, Richard and John E. Taylor, London 1843, pages 666–731).

At the time of the 200th birthday (2015) of Ada Lovelace, a number of new books were issued.

Ada Lovelace was the first programmer

"The most elaborate program developed by Babbage and Lady Lovelace for this machine was a routine for calculating Bernoulli numbers" (see Donald E. Knuth; Luis Trabb Pardo: The early development of programming languages, in: Donald E. Knuth (ed.): Selected papers on computer languages, Center for the Study of Language and Information, Stanford CA 2003, page 5).

"There is direct documentary evidence that Ada Lovelace created this table (writing it out in pencil)" (see Thomas J. Misa: Charles Babbage, Ada Lovelace, and the Bernoulli numbers, in: Robin Hammerman; Andrew L. Russell (eds.): Ada's legacy, Association for Computing Machin-ery/Morgan & Claypool Publishers, San Rafael, California 2016, page 15).

"Even if Babbage provided Ada with the mathematical expressions for the Bernoulli numbers, and assisted with the derivation of a general formula, the transformation of the general formula into a step-by-step algorithm remains Ada's achievement, as the letters clearly indicate" (see Thomas J. Misa: Charles Babbage, Ada Lovelace, and the Bernoulli numbers, in: Robin Hammerman and Andrew L. Russell (eds.): Ada's legacy, Association for Computing Machinery/Morgan & Claypool Publishers, San Rafael, California 2016, page 26).

"For Note G on the Bernoulli numbers, the table-algorithm has ten data variables, three working variables, and four result variables. The computation has just 25 operations, but there are in addition two nested loops: an outer loop consisting of steps 13–23, and two inner loops consisting of steps 13–16 and 17–20 […]. Nothing like it appeared in Menabrea's original" (see Thomas J. Misa: Charles Babbage, Ada Lovelace, and the Bernoulli numbers, in: Robin Hammerman and Andrew L. Russell (eds.): Ada's legacy, Association for Computing Machinery/Morgan & Claypool Publishers, San Rafael, California 2016, page 28).

"At the least, we can grant her primary authorship of the first algorithm intended for a computing machine" (see Thomas J. Misa: Charles Babbage, Ada Lovelace, and the Bernoulli numbers, in: Robin Hammerman and Andrew L. Russell (eds.): Ada's legacy, Association for Computing Machinery/Morgan & Claypool Publishers, San Rafael, California 2016, pages 29/30).

Ada Lovelace was not the first programmer

"Lovelace is widely celebrated for a variety of reasons. She is variously described as a mathematical genius, as having a critical influence on the invention of the Analytical Engine, of being the first programmer, and of being a prophet of the computer age. The first two of these are unsupported by evidence of any kind and are readily disproved by the simple chronology of events. The third claim to fame (that she was the first programmer) is understandable but wrong. But the tribute of being a visionary of the computer age justifies as fully deserved the tributes paid to her for otherwise mistaken reasons" (see Doron D. Swade: Pre-electronic computing, in: Cliff B. Jones and John L. Lloyd (eds.): Dependable and historic computing, Springer-Verlag, Heidelberg etc. 2011, pages 75–76).

"The notes contain examples of algorithmic stepwise sequences of operations executed by the notional Analytical Engine to find solutions, what we would now call "programs," though neither Babbage nor Ada used these terms. The most detailed worked example was a "program" to compute Bernoulli numbers. So the first published example of a "program" appeared under Ada's name. While it is edifying to describe her as "the first programmer" and therefore the originator of the practices and procedures of computational solution by machine, it is misleading to do so. Those familiar with the archival sources are clear that the techniques and examples in the paper were those devised by Babbage much earlier and suggested or supplied by him" (see Doron D. Swade: Pioneer profile Ada Lovelace, in: Resurrection. The bulletin of the Computer Conservation Society, winter 2010/2011, no. 53, page 33).

Conclusions

In the dispute between engineers (the English historian of technology Doron Swade and also the Australian Allan Bromley) and the American historian Thomas Misa, one can concur with the engineers: as archive documents show, the programs for the solution of linear equation systems and for the calculation of Bernoulli numbers are probably attributable to Babbage. It can therefore be assumed that Ada Lovelace is celebrated unjustly as the creator of the first program.

Source

Bruderer, Herbert: Milestones in Analog and Digital Computing, Springer Nature Switzerland AG, Cham, 3rd edition 2020, 2 volumes, 2113 pages, 715 illustrations, 151 tables, translated from the German by John McMinn, https://www.springer.com/de/book/9783030409739

 

Herbert Bruderer (herbert.bruderer@bluewin.ch; bruderer@retired.ethz.ch) is a retired lecturer in the Department of Computer Science at ETH Zurich and a historian of technology.

Join the Discussion (0)

Become a Member or Sign In to Post a Comment

The Latest from CACM

Shape the Future of Computing

ACM encourages its members to take a direct hand in shaping the future of the association. There are more ways than ever to get involved.

Get Involved

Communications of the ACM (CACM) is now a fully Open Access publication.

By opening CACM to the world, we hope to increase engagement among the broader computer science community and encourage non-members to discover the rich resources ACM has to offer.

Learn More