Re: Babbage/Menabrea: Analytical Engine

From: Henderson Ian (
Date: Thu Mar 01 2001 - 19:44:00 GMT

Menabrea's 'Sketch of the Analytical Engine invented by Charles Babbage'
describes the functionality of Babbage's analytical engine by way of
example, and provides an overview of the mechanisms employed to provide
that functionality. The paper gives insight into the nature of
computation, and how a mechanical device may implement it.

> Those labours which belong to the various branches of the mathematical
> sciences, although on first consideration they seem to be the exclusive
> province of intellect, may, nevertheless, be divided into two distinct
> sections; one of which may be called the mechanical, because it is
> subjected to precise and invariable laws, that are capable of being
> expressed by means of the operations of matter; while the other,
> demanding the intervention of reasoning, belongs more specially to the
> domain of the understanding. This admitted, we may propose to execute,
> by means of machinery, the mechanical branch of these labours, reserving
> for pure intellect that which depends on the reasoning faculties.

Menabrea draws a distinction between (mathematical) computation, the
manipulation of symbols according to rules or 'laws', and the faculties
required for 'understanding', by which he appears to mean the ability to
semantically interpret symbols. He clearly explains that his machine will
only be able to execute the former; the latter must be left to the
(human) intellect.

> Struck with similar reflections, Mr. Babbage has devoted some years to
> the realization of a gigantic idea. He proposed to himself nothing less
> than the construction of a machine capable of executing not merely
> arithmetical calculations, but even all those of analysis, if their laws
> are known.

The Analytical Engine was to be capable of carrying out both arithmetical
and analytical calculations. Arithmetic calculations are simple
calculations consisting of the basic operations (such as 'add',
'subtract', 'divide' and 'multiply') carried out on two numbers. A number
of machines preceding Babbage's analytical engine were capable of carrying
out such calculations. In contrast, analytical calculations are carried
out on algebraic forumlae consisting of well characterised functions
(e.g. basic mathematical operations, trigonometric functions,
exponentials) into which the parameters can be substituted in order to get
the answer. For example, Babbage's Difference Machine was (only) able to
process one particular analytical calculation: that of finding the general
term for an infinite series (e.g. the general term for the series {1, 4,
9, 16, ..} is 2).

> When analysis is employed for the solution of any problem, there are
> usually two classes of operations to execute: first, the numerical
> calculation of the various coefficients; and secondly, their
> distribution in relation to the quantities affected by them. If, for
> example, we have to obtain the product of two binomials (a + bx) (m +
> nx), the result will be represented by am + (an + bm) x + bnx2, in which
> expression we must first calculate am, an, bm, bn; then take the sum of
> an + bm; and lastly, respectively distribute the coefficients thus
> obtained amongst the powers of the variable. In order to reproduce these
> operations by means of a machine, the latter must therefore possess two
> distinct sets of powers: first, that of executing numerical
> calculations; secondly, that of rightly distributing the values so
> obtained.

In order to solve analytical calculations, the machine must be able to
carry out simple arithmetical calculations (such as the summing of two
numbers), and assign the results to the correct variables (as explained
above). Further, the machine must be able to carry out these calculations
without human intervention, since this would negate the usefulness of the
machine as a labour and time-saving device, whilst increasing the
potential for human error.

> it must exclude all methods of trial and guess-work, and can only admit
> the direct processes of calculation[4].

As note 4 says, this should not be taken too literally. Some analytical
calculations may require a test to see whether a particular condition has
been met. For instance in the area of numerical analysis, the solution of
a quadratic by interval bisection requires a test to see which side of the
solution the current bisector lies, so the next bisector can be chosen in
such a way as to present a more accurate approximation to the actual
solution. Analytical methods for the solution of equations may also
require a test to see whether the solution has reached an acceptable
degree of convergence. Such 'methods of trial' are analogous to
conditional branches ('IF..THEN' statements) in modern programming, and
guess-work can nowadays be seen in the form of branch prediction (an
optimisation technique used in modern processors).

> It is necessarily thus; for the machine is not a thinking being, but
> simply an automaton which acts according to the laws imposed upon it.

When one considers something as 'simple' as Babbage's analytical machine,
this may seem obvious. However, it must be borne in mind that modern
computers are fundamentally based upon the same design as Babbage's
analytical engine. They both have memory stores for variables and are both
capable of carrying out arithmetic operations on those variables using a
processor (in Babbage's machine, this device is termed the
'mill') according to a given program. In short, they are both
computational devices -- Turing machines. From a strong AI standpoint,
even Babbage's machine may thus be capable of 'thinking' given the correct
algorithm, since strong AI claims that intelligence is
implementation-independent, and thus may be implemented by computation

Menabrea's claim is based on the fact that the machine does not *appear*
to think; if however it were to exhibit characteristics indicative of
intelligence whilst executing such an 'intelligence' algorithm, he would
be hard pressed to say that the machine was not indeed thinking: after
all, how do we know anyone else apart from ourselves thinks, unless it be
through the evidence of their words and actions (i.e. their 'output')?

> Let us conceive a pile or vertical column consisting of an indefinite
> number of circular discs, all pierced through their centres by a
> common axis, around which each of them can take an independent
> rotatory movement. If round the edge of each of these discs are
> written the ten figures which constitute our numerical alphabet, we
> may then, by arranging a series of these figures in the same vertical
> line, express in this manner any number whatever. It is sufficient for
> this purpose that the first disc represent units, the second tens, the
> third hundreds, and so on. When two numbers have been thus written on
> two distinct columns, we may propose to combine them arithmetically
> with each other, and to obtain the result on a third column. In
> general, if we have a series of columns[5] consisting of discs, which
> columns we will designate as V0, V1, V2, V3, V4, &c., we may require,
> for instance, to divide the number written on the column V1 by that on
> the column V4, and to obtain the result on the column V7.

The machine has a number of columns of cogs that may be used to represent
variables. This is effectively the Analytical Engine's 'memory'. It should
be noted that the columns may also be used to represent rational numbers
up to a precision dependent on the number of cogs in the column. One cog
is also used at the top of each column to denote whether the number on the
column is positive or negative. It does this by using even-numbered teeth
on the cog to represent positive numbers, and odd-numbered teeth to
represent negative numbers.

> As for the operations themselves, they are executed by a special
> apparatus, which is designated by the name of mill, and which itself
> contains a certain number of columns, similar to those of the Variables.
> When two numbers are to be combined together, the machine commences by
> effacing them from the columns where they are written, that is, it
> places zero[6] on every disc of the two vertical lines on which the
> numbers were represented; and it transfers the numbers to the
> mill. There, the apparatus having been disposed suitably for the
> required operation, this latter is effected, and, when completed, the
> result itself is transferred to the column of Variables which shall have
> been indicated.

The mill is the equivalent of the modern-day central processing unit. Two
numbers are transferred from the columns of cogs that form the main memory
of the machine (as referred to in the previous comment) to the two columns
of cogs in the mill. These temporarily hold the two numbers which are to
be summed, multiplied, subtracted or divided (these columns form the
equivalent of modern day processor registers). The mill then carries out
the requested operation on the two register-variables, returning the
result to a column in the 'main memory'.

> It contains two principal species of cards: first, Operation cards, by
> means of which the parts of the machine are so disposed as to execute
> any determinate series of operations, such as additions, subtractions,
> multiplications, and divisions; secondly, cards of the Variables, which
> indicate to the machine the columns on which the results are to be
> represented. The cards, when put in motion, successively arrange the
> various portions of the machine according to the nature of the processes
> that are to be effected, and the machine at the same time executes these
> processes by means of the various pieces of mechanism of which it is
> constituted.

The program is represented to the analytical engine as a sequence of
'punch' cards, which when fed to the engine in their prescribed order
cause the engine to execute the program. There are two types of
card: 'Operation' cards, which tell the machine which operation
to perform next; and 'Variable' cards, which tell the machine which
variables in memory the next operation is to be performed upon. The cards
work by mechanically obstructing or permitting the movement of the parts
of the machine necessary for the working of the requisite operation, or
selection of the requisite variable (by indicating the column of cogs on
which that variable is held).

> In order more perfectly to conceive the thing, let us select as an
> example the resolution of two equations of the first degree with two
> unknown quantities. Let the following be the two equations, in which x
> and y are the unknown quantities:-
> mx + ny = d
> m'x + n'y = d'

Menabrea then goes on to give an example of how the analytical engine may
be used to effect the solution of the simultaneous equations given
above. He does this first by rearranging the equations to give expressions
for x and y in terms of their coefficients and d and d'. (This step, it
should be noted, could also be carried out by the analytical engine.) He
then breaks the equations down into their component arithmetic operations,
ordering them and assigning their operands variables in such a way as to
program the engine to solve the equations.

> In the preceding table it will be remarked that the column for
> operations indicates four successive multiplications, two subtractions,
> and one division. Therefore, if desired, we need only use three
> operation-cards; to manage which, it is sufficient to introduce into the
> machine an apparatus which shall, after the first multiplication, for
> instance, retain the card which relates to this operation, and not allow
> it to advance so as to be replaced by another one, until after this same
> operation shall have been four times repeated.

Menabrea shows how the working of the machine may be optimised: where
there are several successive identical operations to be carried out, one
card may be used to represent all of them. The card would instruct the
machine to carry out operation 'x' 'n' times, in a way analogous to the
modern-day compression technique of run-length encoding. In this instance,
the optimisation is done by the programmer, but as with modern computers
there seems to be little barrier to the machine itself carrying out such
optimisation in a pre-processing step (this would only be worthwhile if
the same program were to be executed more than once).

> Perhaps the immense number of cards required for the solution of any
> rather complicated problem may appear to be an obstacle; but this does
> not seem to be the case. There is no limit to the number of cards that
> can be used. Certain stuffs require for their fabrication not less than
> twenty thousand cards, and we may unquestionably far exceed even this
> quantity[13].

Since there is no upper bound on the size of a program, the analytical
engine can execute a program of any length. This contrasts with today's
computers, where the program and the variables are held in the same memory
during execution. This difference in implementation is not important
however: a modern day computer could easily deal with a program of
unlimited size if implemented using a different architecture. Of course
such an architecture would be less convenient, and not worth the extra
cost since in practice computer programs do not tend to exceed a certain

> Since the engine has a mode of acting peculiar to itself, it will in
> every particular case be necessary to arrange the series of calculations
> conformably to the means which the machine possesses; for such or such a
> process which might be very easy for a calculator may be long and
> complicated for the engine, and vice vers.

>From a performance perspective, it is true that the program should be
written in such a way as to minimise the time taken for the engine to
execute the program. Menabrea does not mean that the engine will not be
able to carry out a program at all unless it is arranged in a specific

> Considered under the most general point of view, the essential object of
> the machine being to calculate, according to the laws dictated to it,
> the values of numerical coefficients which it is then to distribute
> appropriately on the columns which represent the variables, it follows
> that the interpretation of formulae and of results is beyond its
> province, unless indeed this very interpretation be itself susceptible
> of expression by means of the symbols which the machine employs.

Menabrea clarifies the role of the machine as nothing more than a symbol
manipulator. The symbols are subject to human interpretation alone, unless
it turns out that intelligence (and thus semantics) are just computation,
as computationalism claims.

> Thus, although it is not itself the being that reflects, it may yet be
> considered as the being which executes the conceptions of
> intelligence[14].

By this, I think Menabrea simply means that the machine is capable of
carrying out calculations based on mathematical equations as previously
explained. The equations themselves are 'the conceptions of intelligence'
to which he refers.

> Yet it is by the laborious route of analysis that he must reach
> truth; but he cannot pursue this unless guided by numbers; for without
> numbers it is not given us to raise the veil which envelopes the
> mysteries of nature.

Menabrea appears to make the contentious implication that mathematics is
a part of nature, and not a product of how we think about nature (as Kant
and others have argued). It appears at least to me that mathematics is
shaped by nature rather than being an intrinsic part of its 'design'; as
such it is just a model, invented by humans to describe nature, rather
than a discovery about how nature actually works. The currently uncertain
position of mathematics has implications for computationalism and strong
AI: if mathematics is just a model of how the world works, can
(mathematical) computation do any more than *model* intelligence? It seems

This archive was generated by hypermail 2.1.4 : Tue Sep 24 2002 - 18:37:19 BST