Starting in 1822, mathematicians began a massive effort to construct difference engines in an effort to "Note on the application of machinery to the computation of astronomical and mathematical tables". Difference Engines were an automatic, mechanical calculator designed to tabulate polynomial functions. Both logarithmic and trigonometric functions can be approximated by polynomials, so a difference engine can compute many useful sets of numbers.

According to the manufacturers, the description of the function included:

*"The operation of machines of this type was accomplished by means of pulling levers or knobs to set up the desired number. Addition, subtraction, multiplication, and division were accomplished by means of revolving drums. For addition they revolved in one direction, and for subtraction the direction was reversed. For multiplication the revolutions were repeated in the same direction as for addition, and for division they were repeated in the same direction as for subtraction. Two sets of dials provided a means of reading totals. In one the accumulation of totals appeared; in the other, there appeared the figure which was added, subtracted, multiplied, or divided."*

The input (programs and data) was to be provided to the machine via punched cards, a method being used at the time to direct mechanical looms such as the Jacquard loom. For output, the machine would have a printer, a curve plotter and a bell. The machine would also be able to punch numbers onto cards to be read in later. It employed ordinary base-10 fixed-point arithmetic. Unfortunately, the only people who could work the looms, were children, whose hands and fingers were the only people who could reach into the devices during operation. For many people, the existence of these devices provided easy justification for child-slavery in industrial societies.

The programming language to be employed by users was akin to modern day assembly languages. Three different types of punch cards were used: one for arithmetical operations, one for numerical constants, and one for load and store operations, transferring numbers from the store to the arithmetical unit or back. There were three separate readers for the three types of cards.