Аналитическая машина Беббиджа
Первая попытка создания вычислительной машины (Difference Engine), построенной на принципе счета «конечных разностей», окончилась неудачей. С середины 1830-х годов Бэббидж работает над созданием программируемой машины — Analytical Engine, что и становится делом всей его жизни. То была первая машина, управляемая внешней программой.
Новая машина отличалась от арифмометра наличием регистров. В них сохранялся промежуточный результат вычисления, и с их же помощью выполнялись действия, предписанные «программой». Вычислительные возможности, открывшиеся с изобретением регистров, поразили самого автора: «Шесть месяцев я составлял проект машины, более совершенной, чем первая. Я сам поражен той вычислительной мощностью, которой она будет обладать; еще год назад я не смог бы в это поверить».
Архитектура Analytical Engine уже практически соответствует современным ЭВМ. В ней присутствуют все три классических составляющих компьютера: control barrel — управляющий барабан (управляющее устройство — УУ), store — хранилище (теперь мы называем это памятью — ЗУ) и mill — мельница (арифметическое устройство — АУ). Регистровая память машины Бэббиджа была способна хранить как минимум сто десятичных чисел по 40 знаков, теоретически же могла быть расширена до тысячи 50-разрядных (для сравнения укажем, что ЗУ одной из первых ЭВМ «Эниак» в 1945 г. сохраняло всего 20 десятиразрядных чисел). АУ имело, как мы бы сейчас сказали, аппаратную поддержку всех четырех действий арифметики. Машина производила сложение за 3 секунды, умножение и деление — за 2 минуты. Эта «мельница» состояла из трех основных регистров: два для операндов, а третий для результатов действий, относящихся к умножению. Имелись также таблица для хранения промежуточных результатов и счетчик числа итераций. Основная программа заносилась на барабан (УУ), в дополнение к ней могли использоваться перфокарты, предложенные Жозефом Мари Жаккаром еще в 1801 г. для быстрого перехода с узора на узор в ткацких станках.
На вход машины должны были поступать два потока перфокарт, которые Бэббидж назвал operation card (операционными картами) и variable card (картами переменных): первые управляли процессом обработки данных, которые были записаны на вторых. Информация заносилась на перфокарты путем пробивки отверстий. Из операционных карт можно было составить библиотеку функций. Помимо этого, Analytical Engine, по замыслу автора, должна была содержать устройство печати и устройство вывода результатов на перфокарты для последующего использования. Так что Бэббидж стал пионером идеи ввода-вывода.
Analytical Engine так и не была реализована. Изобретатель писал в 1851 г.: «Все разработки, связанные с Analytical Engine, выполнены за мой счет. Я провел целый ряд экспериментов и дошел до черты, за которой моих возможностей не хватает. В связи с этим я вынужден отказаться от дальнейшей работы».