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. |