The abacus, a simple counting aid, may have been invented in Babylonia (now Iraq) in the fourth century B.C.

The Antikythera mechanism, used for registering and predicting the motion of the stars and planets, is dated to the first century B.C. It was discovered off the coast of Greece in 1901.

Arabic numerals are introduced to Europe in the eighth and ninth centuries A.D. Roman numerals remain in use in some parts of Europe until the seventeenth century. The Arabic system introduced the concepts of the zero and fixed places for tens, hundreds, thousand, etc., and greatly simplified mathematical calculations.

John Napier, Baron of Merchiston, Scotland, invents logs in 1614. Logs allow multiplication and division to be reduced to addition and subtraction.

Wilhelm Schickard builds the first mechanical calculator in 1623. It can work with six digits, and carries digits across columns. It works, but never makes it beyond the prototype stage. Schickard is a professor at the University of Tubingen, Germany.

Blaise Pascal builds a mechanical calculator in 1642. It has the capacity for eight digits, but has trouble carrying and its gears tend to jam.

Joseph-Marie Jacquard invents an automatic loom controlled by punch cards.

Charles Babbage conceives of a "Difference Engine" in 1820 or 1821. It is a massive steam-powered mechanical calculator designed to print astronomical tables. He attempts to build it over the course of the next 20 years, only to have the project cancelled by the British government in 1842. Babbage's next idea is the Analytical Engine - a mechanical computer that can solve any mathematical problem. It uses punch-cards similar to those used by the Jacquard loom and can perform simple conditional operations.

Augusta Ada Byron, the countess of Lovelace, met Babbage in 1833. She describes the Analytical Engine as weaving "algebraic patterns just as the Jacquard loom weaves flowers and leaves." Her published analysis of the Analytical Engine is our best record of its programming potential. In it she outlines the fundamentals of computer programming, including data analysis, looping and memory addressing.

|| History Top Level || Next Era ||