Михаил Кошкин, doiid@cnt.ru
Опубликовано: 16.5.2003
В истории вычислительной техники имя Чарльза Бэббиджа занимает особое место. Он создал первую программируемую вычислительную машину, сделав попытку реализовать многие идеи, которые в XX веке найдут свое применение в вычислительной технике.
Разделение труда в работе вычислителей
Ч. Бэббидж (1791 – 1871) проявил серьезные математические способности еще в кембриджском колледже Святой Троицы, куда поступил в 1810 г. Продолжил образование он во Франции, где познакомился с великими математиками Пьером Лапласом и Жаном Батистом Фурье. Но чистая математика его не привлекла. Сильнейшее влияние на молодого математика оказал барон Гаспар де Прони, чьи работы натолкнули Бэббиджа на мысль о построении технологии вычислений.
Правительство обновленной Франции решило создать новые логарифмические и тригонометрические таблицы. Эту работу и поручили барону де Прони, руководившему в ту пору Бюро переписи.
Де Прони перенес идею разделения труда на вычислительный процесс. Он распределил исполнителей по трем уровням квалификации: высшую ступень занимали несколько выдающихся математиков, среди которых были Лежандр и Лазар Никола Карно, — они готовили математическое обеспечение. На втором уровне стояли образованные «технологи», которые организовывали рутинный процесс вычислительных работ. Последними в этой структуре были вычислители — computers (первое использование этого слова): их квалификационный максимум — умение складывать и вычитать (обычно вычислителей набирали из девушек легкого поведения, которые после революции решились сменить профессию).
Заслуга де Прони в том, что он нашел алгоритмический и технологический подходы для сведения сложных вычислений к рутинным операциям, не требующим от большинства исполнителей творческого подхода. В принципе, де Прони создал первую вычислительную машину, где в качестве процессора использовались вычислители. Этот подход 150 лет успешно применялся при проведении сложных и даже очень сложных расчетов — от разработки конструкций кораблей до создания первых атомных бомб.
Распределение вычислительного труда у де Прони наводит Бэббиджа на мысль о замене человека-вычислителя (который неизбежно ошибается) машиной — которой, как полагал Бэббидж, ошибки неведомы.
Аналитическая машина
Первая попытка создания вычислительной машины
(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, выполнены за мой счет. Я провел целый ряд экспериментов и дошел до черты, за которой моих возможностей не хватает. В связи с этим я вынужден отказаться от дальнейшей работы».
Почему все так плохо кончилось
Так почему же хотя бы одна аналитическая машина так и не была изготовлена Бэббиджем, хотя еще при его жизни было построено несколько действующих экземпляров других конструкторов (конечно, гораздо более простых)? Кроме хронической нехватки финансовых средств, важнейшая из причин — технологическая. Тогда не умели обрабатывать металл с высокой степенью точности и с высокой производительностью — а для реализации проекта требовались тысячи одних только зубчатых колес. И в наши дни технологи бы сильно призадумались над возможностью постройки подобной железки — а в те времена самому Бэббиджу нередко приходилось изобретать технологии производства деталей, отвлекаясь от общего направления проекта. В целом он сделал более 200 чертежей различных узлов и около 30 вариантов общей компоновки машины. Может быть, неудача постигла ученого еще и потому, что Бэббидж был слишком увлечен самой проблемой и не смог вовремя поставить самому себе разумные границы.
В 1864 году он составил научный прогноз: «Пройдет, вероятно, полстолетья, прежде чем люди убедятся, что без тех средств, которые я оставляю после себя, нельзя будет обойтись». Он ошибся на 30 лет: в начале сороковых годов XX века. Говард Айкен построил машину Mark I, о которой говорил как об «осуществленной мечте Бэббиджа». Производительность Mark I всего в десять раз превышала расчетную скорость Analytical Engine.
Реализация проекта благодарными потомками
Большое влияние на посмертную судьбу машин оказал генерал Бэббидж, сын изобретателя. Выйдя в отставку в 1874 году, он несколько лет посвятил изучению отцовского наследия, а в 1880 году начал работу по восстановлению Difference Engine в «железе». Работа продолжалась с переменным успехом до 1896 г. В конце концов к 1904 году был создан небольшой фрагмент машины, который печатал результаты вычислений. Кроме того, Бэббидж-младший сделал несколько мини-копий Difference Engine и разослал их по всему миру.
В 1991 году, к двухсотлетию со дня рождения ученого, сотрудники лондонского Музея науки воссоздали по его чертежам 2,6-тонную «разностную машину № 2», а в 2000 году — еще и 3,5-тонный принтер Бэббиджа. Оба устройства, изготовленные по технологиям середины XIX века, превосходно работают — в расчётах Бэббиджа было найдено всего две ошибки.