The Evolution of Babbage's Calculating Engines

This paper traces the evolution of Charles Babbage's design ideas for automatic computing machines from Difference Engine No. 1 (1822-1833), through the Analytical Engine (1834-1846), to Difference Engine No. 2 (1846-1847). The design evolution is discussed from four essentially hierarchically related points of view: (1) mechanism - the basic mechanical apparatus for storing, transferring, and adding numbers; (2) architecture - the arrangement and interconnection of the basic mechanisms in the complete design; (3) algorithms - the functional utilization of the basic mechanism in carrying out such operations as multiplication, division, and signed addition (the microprogram or register-transfer level of description); (4) programs - the user-level application of the machine in solving such problems as tabulating series or solving simultaneous equations. The paper examines how developments at each level interacted in the design of the Analytical Engine. It also discusses the ways Babbage's designs anticipated, or failed to anticipate, modern computer designs.