The Definition and Origin of Software
Some experts argue that software is a collection of machine-code instructions that are executable by a microprocessor. To determine whether this definition is the most reasonable one for our software, it is necessary to understand the origin of software that is comprised solely of machine-code instructions.
The first mechanical computing machine, the Pascaline, was built by Blaise Pascal [1] in 1645 using gears and mechanical means to perform simple calculations. The Pascaline, like Leonardo DaVinci's earlier calculating machine design, did not rely on programming instructions but rather was a specialized tool for adding, subtracting, multiplying, and dividing in response to the purposeful rotation of gears by the machine's operator.
The first computing machine proposed that incorporated the notion of repeatable program instructions (termed operation cards by its inventor) was the Analytical Engine [2] by Charles Babbage during the 1830s. The Analytical Engine would be fed punched cards containing operation instructions and information (variables) also punched onto cards. A system attendant would preset constant values required for use by a formula, thus:
From writings of Charles Babbage we are given the following:
When any formula is required to be computed, a set of operation cards must be strung together, which contain the series of operations in the order in which they occur. Another set of cards must then be strung together, to call in the variables into the mill, the order in which they are required to be acted upon.
The Analytical Engine is therefore a machine of the most general nature. Whatever formula it is required to develop, the law of its development must be communicated to it by two sets of cards. When these have been placed, the engine is special for that particular formula. The numerical value of its constants must then be put on the columns of wheels below them, and on setting the Engine in motion it will calculate and print the numerical results of that formula.
Every set of cards made for any formula will at any future time recalculate that formula with whatever constants may be required.[3]
[1] La machine d'arithmtique Blaise Pascal's Calculating Machine (1645). Last accessed on September 25, 2004: http://www.fourmilab.ch/babbage/pascal.html
[2] The Analytical Engine The First Computer. Last accessed on September 25, 2004: http://www.fourmilab.ch/babbage/
[3] OF THE ANALYTICAL ENGINE Chapter VIII of Charles Babbage's 1864 autobiography, Passages from the Life of a Philosopher. Last accessed on September 25, 2004: http://www.fourmilab.ch/babbage/lpae.html
Return to Article
Jason Coombs <[email protected]> works as a freelance computer forensic analyst and security incident response investigator. He also serves as a technical expert witness in civil and criminal court cases. Jason thinks he knows a thing or two about information security and forensics, but he may be mistaken; he may in fact be your typical corporate programmer geek with a slightly unusual résumé, which is mostly the result of a refusal to work in a cubicle and a desire to earn far more than he is probably worth.