Dr. Dobb's is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.


Channels ▼
RSS

Investigating Software and Source-Code Theft


The Definition and Origin of Software

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.


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.