Аналитическая машина
Аналитическая машина (англ. analytical engine) — механическая программируемая вычислительная машина, прообраз современного компьютера.
Первая аналитическая машина была разработана известным английским математиком и пионером вычислительной техники Чарльзом Бэббиджем[2]. Конструкция машины была впервые описана им в 1837 году, аналитическая машина была преемником более раннего изобретения Бэббиджа — разностной машины, которая по сути являлась механическим калькулятором[3]:стр.196.
Аналитическая машина включала в себя:
- арифметико-логическое устройство;
- порядок выполнения вычислений в виде ветвления и циклов;
- интегрированную память.
Всё это сделало машину Бэббиджа первой конструкцией универсального компьютера, которую можно было бы описать современными терминами как полную по Тьюрингу[4]. Другими словами, структура аналитической машины Бэббиджа была по сути такой же, как и та, которая доминировала в компьютерном проектировании в электронную эпоху[2].
Аналитическая машина являлась одним из самых успешных достижений Чарльза Бэббиджа, хотя полностью построить её при жизни изобретателя не удалось[5][6].
Вторую в истории механическую аналитическую машину разработал талантливый ирландский учёный-любитель Перси Ладгейт. Проект машины был детально разработан и опубликован в 1909 году, но машина построена не была, а чертежи так и не были найдены.
Только в 1941 году Конрад Цузе построил первый электромеханический универсальный компьютер Z3, более чем через столетие после того, как Чарльз Бэббидж предложил новаторскую аналитическую машину в 1837 году[2].
Конструкция
Первой попыткой Чарльза Бэббиджа создать механическое вычислительное устройство была разностная машина, которая была предназначена для вычисления логарифмов и тригонометрических функций путём вычисления конечных разностей для создания аппроксимирующих многочленов.
Строительство этой машины так и не было завершено; у Бэббиджа возникли конфликты с его главным инженером Джозефом Клементом, и в конечном итоге британское правительство прекратило финансирование проекта[7][8].
В ходе работы над проектом разностной машины, Чарльз Бэббидж пришёл к мысли о том, что возможно создать гораздо более универсальную модель — аналитическую машину. Работа над её проектом началась примерно в 1833 году[9].
Входные данные, состоящие из программ («формул») и данных[10], должны были подаваться в машину с помощью перфокарт. Данный метод в то время использовался для управления механическими ткацкими станками, такими как жаккардовый ткацкий станок[3]:стр.215. Вывод информации из машины должен был осуществляться с помощью печати на принтере, отображаться на графопостроителе и сопровождаться звуком колокольчика. Машина также могла пробивать числа на картах для последующего считывания. Она использовала обычную десятичную систему счисления.
Предполагалось, что будет существовать хранилище (то есть, память), способное хранить 1000 чисел по 40 десятичных цифр каждое (примерно 16,6 Кб)[3]:стр.198. В конструкции Бэббиджа хранилище называлось складом, он состоял из ряда зубчатых колес, расположенных в высоких столбцах. На каждом из столбцов хранилось только одно число не длиннее пятидесяти цифр, а верхнее колесо определяло: положительно число или отрицательно. На чертежах Бэббиджа склад состоял из двух параллельных рядов высоких числовых столбцов, и в каждом из них хранилось одно число. Одна из сторон склада сообщалась с мельницей.
Арифметическое устройство (так называемая «мельница» англ. mill) должно было быть способно выполнять все четыре арифметические операции, а также сравнения и, при необходимости, вычисление квадратных корней[3]:стр.211.
Изначально (в 1838 году) изобретение было задумано как разностная машина, замкнутая сама на себя, в общем круговом расположении, с длинным хранилищем, выходящим в одну сторону[3]:стр.209. Поздние чертежи (1858 год) изображают упорядоченную сетку[11][12].
Как и центральный процессор (ЦП) в современном компьютере, «мельница» должна была полагаться на свои собственные внутренние процедуры (которые можно сравнить с микрокодом в современных ЦП), хранящимися в виде штифтов, вставленных во вращающиеся барабаны, называемые «бочками» (устройство можно считать одним из первых ПЗУ), для выполнения некоторых более сложных инструкций, которые может задать программа пользователя[5].
Язык программирования, который должны были использовать пользователи, был похож на современные языки ассемблера. Циклы и условные переходы были возможны, и поэтому язык в том виде, в котором он был задуман, был бы полным по Тьюрингу, как позже определил Алан Тьюринг. Использовались три разных типа перфокарт: одна для арифметических операций, одна для числовых констант и одна для операций загрузки и сохранения, передающих числа из хранилища в арифметическое устройство или обратно. Для трёх типов карт существовало три отдельных считывателя. Бэббидж разработал около двух десятков программ для аналитической машины в период с 1837 по 1840 год, а позже — ещё одну программу[3]:стр.215[13]. Эти программы обрабатывали многочлены, итеративные формулы, метод Гаусса и числа Бернулли[3]:стр.215.
В 1842 году итальянский математик Луиджи Федерико Менабреа опубликовал описание машины на французском языке[14], основанное на лекциях, которые Бэббидж читал во время своего визита в Турин в 1840 году[15]. В 1843 году это описание было переведено на английский язык и подробно прокомментировано знаменитым английским математиком Адой Лавлейс, которая заинтересовалась машиной восемью годами ранее[10]. В знак признания её дополнений к статье Менабреа, которые включали способ вычисления чисел Бернулли с помощью машины (широко признанной первой полной компьютерной программой), Аду Лавлейс называли первым программистом (хотя есть другие точки зрения).
Строительство машины
Исторические попытки строительства
В конце своей жизни Чарльз Бэббидж пытался найти способ создать упрощённую версию аналитической машины и успел собрать небольшую её часть перед своей смертью в 1871 году[1][5][16].
В 1878 году комитет Британской ассоциации содействия развитию науки описал аналитическую машину как «чудо механической изобретательности», но рекомендовал воздержаться от её строительства. Была признана полезность и ценность машины, но не удалось оценить стоимость её создания, также было высказано сомнение: будет ли машина корректно функционировать после завершения строительства[17][18].
В период с 1880 по 1910 год[19] сын Чарльза Бэббиджа — Генри Превост Бэббидж (1824—1918; англ. Henry Prevost Babbage) периодически конструировал часть «мельницы» и печатающего устройства.
В 1910 году построенная им секция смогла вычислить (неправильный) список кратных числу пи[21]. Секция составляла лишь небольшую часть всей машины; она не была программируемой и не имела памяти. При этом популярные изображения этой секции иногда были ошибочно подписаны, что создавало впечатление, будто это вся мельница или даже вся машина. «Аналитическая машина-мельница» Генри Бэббиджа выставлена в Музее науки в Лондоне[20].
Генри Бэббидж также предложил построить демонстрационную версию полной машины с меньшей ёмкостью памяти: «возможно, для первой машины хватит десяти (колонок) с пятнадцатью колёсами в каждой»[22]. Такая версия могла бы обрабатывать 20 чисел по 25 цифр каждое, и то, что с этими числами можно было бы сделать, всё ещё могло бы впечатлить. «Это только вопрос карт и времени», — писал Генри Бэббидж в 1888 году, «… и нет никаких причин, почему бы не использовать (двадцать тысяч) карточек, если это необходимо, в аналитической машине для целей математики»[22].
Успешное строительство в 1991 году
В 1991 году в Музее науки в Лондоне была построена полная, рабочая модель разностной машины Бэббиджа № 2, конструкция которой включала усовершенствования, найденные Бэббиджем в процессе разработки аналитической машины[23]. Эта машина была построена с использованием материалов и технических допусков, которые были бы доступны Бэббиджу, что опровергло предположение о том, что проекты Бэббиджа не могли быть реализованы с использованием производственных технологий его времени[24].
План 28
В октябре 2010 года Джон Грэм-Камминг (британский инженер-программист и писатель) запустил кампанию «План 28» по сбору средств путём «публичной подписки», чтобы провести серьёзное историческое и академическое исследование планов Бэббиджа с целью затем построить и протестировать полностью работающую виртуальную конструкцию, которая затем, в свою очередь, позволит построить физическую аналитическую машину[25][26].
По данным из отчёта по проекту за февраль 2025 года[27]:
- Был расширен анализ и техническое описание чертежей Бэббиджа для машины — задача, на выполнение которой ушло около десяти лет. Текст насчитывает более 150 000 слов и находится в состоянии, пригодном для публикации.
- Анализ отвечает на ключевые вопросы: какая версия машины, дизайн которой развивался на протяжении четырёх десятилетий, лучше всего отразит особенности и возможности устройства; уровень завершённости различных этапов дизайна; насколько близко физическая реализация должна стремиться к производственным возможностям того времени, и как лучше всего управлять компромиссом между сложностью и производительностью.
- Ведутся экспериментальные пробные конструкции: реализован механизм опережающей каретки, исследуя использование 3D-печатных деталей для вычислительного механизма и шаговых двигателей для синхронизации, последовательности и управления.
- Создана пробная компоновка сложного механизма шестерён мельницы, описанной в Плане 27, из древесно-стружечной плиты.
- Заинтересованная сторона заказала документальный фильм о проекте, начиная с интервью с участниками, чтобы запечатлеть мнения о технической, исторической и музейной ценности, и попытки построить эту новую/старую машину, с отснятым материалом, который будет использован позже.
- Исследуются возможности публикации технического анализа.
Многие из оригинальных чертежей Бэббиджа были отцифрованы и стали доступными для общественности в интернете[28].
Система команд
Известно, что Чарльз Бэббидж не записывал явный набор инструкций для машины в стиле современного руководства по процессору. Вместо этого он представлял свои программы в виде списков состояний во время их выполнения, показывая, какой оператор запускался на каждом шаге, с небольшими указаниями на то, как будет направляться поток управления.
Аллан Г. Бромли (1947—2002; англ. Allan G. Bromley) — авторитетный австралийский историк вычислительной техники — предположил, что колода карточек может считываться в прямом и обратном направлениях в зависимости от условного ветвления после проверки условий, что сделало бы машину Тьюринг-полной:
…карты могли бы быть упорядочены для движения вперед и назад (и, следовательно, для циклического выполнения).."[3]:стр.215. Введение впервые в 1845 году пользовательских операций для различных сервисных функций, включая, что наиболее важно, эффективную систему управления пользователем циклом в пользовательских программах. Нет никаких указаний на то, как задаётся направление поворота операционных и переменных карточек. В отсутствие других доказательств мне пришлось принять минимальное предположение по умолчанию о том, что как операционные, так и переменные карточки могут поворачиваться только назад, как это необходимо для реализации циклов, используемых в образцах программ Бэббиджа. Не возникло бы никаких механических или микро-программных сложностей в том, чтобы передать управление направлением движения пользователю[29].
На сайте Fourmilab Джона Уокера (1949—2024; John Walker) — американского программиста, автора и соучредителя компании Autodesk — сообщается об эмуляторе машины:
Считыватель карт машины не ограничен простой последовательной обработкой карточек (одна за другой от начала до конца). Кроме того, он может, под управлением самих карточек, которые он считывает, и в зависимости от того, активирован ли рычаг запуска «мельницы», либо продвигать цепочку карточек вперёд, пропуская промежуточные карточки, либо назад, что приводит к повторной обработке ранее прочитанных карточек[30].
Этот эмулятор предоставляет набор письменных символьных инструкций, хотя он был создан его авторами, а не основан на оригинальных работах Бэббиджа. Например, программа для вычисления факториала будет написана следующим образом:
N0 6 N1 1 N2 1 × L1 L0 S1 – L0 L2 S0 L2 L0 CB?11
где CB — это инструкция условного перехода или «комбинационная карта», используемая для изменения потока управления, в данном случае назад на 11 карт.
Влияние изобретения на развитие науки
Прогнозируемое влияние
Чарльз Бэббидж понимал, что появление автоматического компьютера вызовет интерес к области, впоследствии названной алгоритмическая эффективность, и писал в своей работе «Отрывки из жизни философа» (англ. Passages from the Life of a Philosopher): «Как только будет создана аналитическая машина, она обязательно будет направлять будущее развитие науки. Всякий раз, когда с её помощью будет получен какой-либо результат, возникнет вопрос: каким путём вычисления машина может получить эти результаты за наименьшее время?»[31].
Развитие информатики
Талантливый ирландский инженер-любитель Перси Ладгейт опубликовал свой собственный проект аналитической машины в 1909 году[32][33][34]. Она была детально разработана, но не построена, и чертежи так и не были найдены. Двигатель Ладгейта был бы намного меньше (около 230 л), чем двигатель Бэббиджа, и гипотетически мог бы умножать два 20-значных числа примерно за шесть секунд[35].
В своей работе «Эссе об автоматике» (исп. Essays on Automatics) (1914) испанский изобретатель Леонардо Торрес Кеведо, вдохновлённый изобретениями Чарльза Бэббиджа, разработал теоретическую модель электромеханической вычислительной машины, которая должна была управляться программой только для чтения. В работе также содержится идея арифметики с плавающей точкой[36]. В 1920 году, чтобы отпраздновать 100-летие изобретения арифмометра, Торрес представил в Париже электромеханический арифмометр, который состоял из арифметического устройства, подключённого к (возможно, удалённой) пишущей машинке, на которой можно было набирать команды, а результаты печатались автоматически[13][35].
В статье Вэнивара Буша «Инструментальный анализ» (англ. Instrumental Analysis) (1936) содержалось несколько ссылок на работы Бэббиджа. В том же году он начал проект «Быстрая арифметическая машина» для исследования проблем построения электронного цифрового компьютера[35].
Несмотря на такое внимание и признание работ Бэббиджа со стороны научных исследователей, его изобретения были практически забыты, и новаторские предложения, изложенные в проекте аналитической машине, были совершенно неизвестны создателям первых электромеханических и электронных вычислительных машин в 1930-х и 1940-х годах, что привело к необходимости заново изобретать многие архитектурные инновации, предложенные Бэббиджем.
Говард Эйкен, руководивший в период с 1937 по 1945 год работами по созданию первого американского (быстро устаревшего) электромеханического компьютера Harvard Mark I, утверждал, что вдохновлялся работами Бэббиджа. Однако во время создания Mark I он ничего не знал об архитектуре аналитической машины; также известен факт о том, что он ознакомился в музее с построенной частью аналитической машины и считал это «величайшим разочарованием в моей жизни»[37]. В результате Mark I не имел важнейшей (самой провидческой) архитектурной особенности аналитической машины — условного ветвления[37] и не умел выполнять условные переходы, из-за чего каждая программа представляла собой довольно длинный ленточный рулон.
Создатели первого электронного компьютера ENIAC Дж. Преспер Экерт и Джон В. Моучли также не были осведомлены о подробностях работы Бэббиджа над аналитической машиной[38][39].
Сравнение с другими ранними компьютерами
Если бы аналитическая машина была построена, она была бы цифровой, программируемой и полной по Тьюрингу. Однако она была бы очень медленной. Луиджи Федерико Менабреа сообщал в своём «Очерке аналитической машины» (англ. Sketch of the Analytical Engine):
Мистер Бэббидж считает, что с помощью своей машины он может сформировать произведение двух чисел, каждое из которых содержит двадцать цифр, за три минуты[10].
Для сравнения, первый электромеханический американский компьютер Harvard Mark I мог выполнить ту же задачу всего за шесть секунд (при том, что факт, является ли данный компьютер полным по Тьюрингу, спорный); первый электронный компьютер ENIAC, который является полным по Тьюрингу, также был бы быстрее. Современный процессор мог бы сделать то же самое менее, чем за миллиардную долю секунды.
| Название | Первый работоспособный экземпляр | Система счисления | Вычислительный механизм | Программирование | Полнота по Тьюрингу | Память |
|---|---|---|---|---|---|---|
| Разностная машина Бэббиджа | Построен только в 1990-х годах (проект 1820-х годов) | Десятичная система счисления | Механический | Не программируется; начальные числовые константы полиномиальных разностей задаются физически | Нет | Физическое состояние колёс в осях |
| Аналитическая машина Бэббиджа | Не построен (проект 1830-х годов)[40] | Десятичная система счисления | Механический | Программное управление с помощью перфокарт | Да (проект; пока не построен) | Физическое состояние колёс в осях |
| Аналитическая машина Ладгейта | Не построен (проект 1909 года) | Десятичная система счисления | Механический | Программное управление с помощью перфокарт | Да (проект; пока не построен) | Физическое состояние стержней |
| Аналитическая машина Торреса | 1920 | Десятичная система счисления | Электромеханический | Не программируется; настройки входа и выхода определяются коммутационными кабелями | Нет | Механические реле |
| Zuse Z1 (Германия) | 1939 | Двоичная система счисления; | Механический | Не программируется; настройки входа и выхода определяются коммутационными кабелями | Нет | Физическое состояние стержней |
| Bombe (Польша, Великобритания, США) | 1939 (Польша), март 1940 (Британия), май 1943 (США) | Символьный тип | Электромеханический | Не программируется; настройки входа и выхода определяются коммутационными кабелями | Нет | Физическое состояние роторов |
| Zuse Z2 (Германия) | 1940 | Двоичная система счисления; | Электромеханический (механическая память) | Программируемое управление с помощью перфорированной 35-миллиметровой киноплёнки (без условного ответвления) | Нет | Физическое состояние стержней |
| Zuse Z3 (Германия) | май 1941 | Двоичная система счисления; | Электромеханический | Программируемое управление с помощью перфорированной 35-миллиметровой киноплёнки (без условного ответвления) | В теории | Механические реле |
| Компьютер Атанасова — Берри (США) | 1942 | Двоичная система счисления | Электронный | Не программируется; ввод коэффициентов линейной системы с помощью перфокарт | Нет | DRAM |
| Colossus Mark 1 (Великобритания) | декабрь 1943 | Двоичная система счисления | Электронный | Программное управление с помощью соединительных кабелей и переключателей | Нет | Электронная лампа и Тиратрон |
| Harvard Mark I — IBM ASCC (США) | май 1944 | Десятичная система счисления | Электромеханический | Программное управление с помощью 24-канальной перфоленты (но без условного перехода) | Спорный | Механические реле |
| Colossus Mark 2 (Великобритания) | 1 июня 1944 | Двоичная система счисления | Электронный | Программное управление с помощью соединительных кабелей и переключателей | Предположительный[41] | |
| Zuse Z4 (Германия) | март 1945 (или 1948)[42] | Двоичная система счисления; | Электромеханический | Программируемое управление с помощью перфорированной 35-миллиметровой киноплёнки (без условного ответвления) | В 1950 году | Механические реле |
| ENIAC (США) | декабрь 1945 | Десятичная система счисления | Электронный | Программное управление с помощью соединительных кабелей и переключателей | Да | Триодные триггеры на электронных лампах |
| Manchester Baby (Великобритания) | июнь 1948 | Двоичная система счисления | Электронный | Двоичная программа, вводимая в память с клавиатуры (первый электронный цифровой компьютер с сохранённой программой) | Да | Электронно-лучевая трубка Уильямса |
| EDSAC (Великобритания) | май 1949 | Двоичная система счисления | Электронный | Пятибитный код операции и операнд переменной длины (первый компьютер с хранимой программой, предлагающий вычислительные услуги широкому сообществу) | Да | Ртутные линии задержки |
Использование в популярной культуре
- Киберпанк — романист Уильям Гибсон в соавторстве с Брюсом Стерлингом написали стимпанк — роман альтернативной истории под названием «Разностная Машина» (The Difference Engine), в котором разностные машины и аналитические машины Бэббиджа стали доступны викторианскому обществу. В романе исследуются последствия раннего внедрения вычислительной техники.
- Аналогичный приём использует Сидни Падуа (британская художница и аниматор) в своём веб-комиксе «Захватывающие приключения Лавлейс и Бэббиджа» (англ. The Thrilling Adventures of Lovelace and Babbage)[43][44]. В нём представлена альтернативная история, в которой Ада Лавлейс и Бэббидж создали аналитическую машину и используют её для борьбы с преступностью по просьбе королевы Виктории[45]. Комикс основан на тщательном исследовании биографий и переписки между Бэббиджем и Лавлейс, которая затем искажена для создания юмористического эффекта.
- Короткий рассказ Джека Нимершейма «Мориарти по модему» (Moriarty by Modem) описывает альтернативную историю, в которой аналитическая машина Бэббиджа действительно была завершена и считалась строго засекреченной британским правительством. Персонажи Шерлока Холмса и Мориарти на самом деле были набором прототипов программ, написанных для аналитической машины. Когда «программа Холмса» реализуется на современном компьютере, он снова вынужден сразиться со своим врагом в современных аналогах аналитической машины Бэббиджа[46].
- Онлайн-проект Orion 's Arm представляет Machina Babbagenseii, полностью разумные механические компьютеры, вдохновлённые Бэббиджем. Каждый из них размером с большой астероид, способен выживать только в условиях микрогравитации и обрабатывает данные со скоростью 0,5 % скорости человеческого мозга.
- Чарльз Бэббидж и Ада Лавлейс появляются в эпизоде сериала «Доктор Кто» под названием «Шпион: Часть 2», где аналитическая машина демонстрируется и упоминается.
Примечания
Литература
- Babbage, Charles. Chapter VIII – Of the Analytical Engine // Passages from the Life of a Philosopher. — London : Longman, Green, Longman, Roberts, & Green, 1864. — P. 112–141.
- Babbage, Charles. Babbage's Calculating Engines – Being a Collection of Papers Relating to Them; Their History, and Construction. — New York : Cambridge University Press, 1889. — ISBN 978-1-108-00096-3.
- Bromley, Allan G. (July–September 1982). “Charles Babbage's Analytical Engine, 1838” (PDF). IEEE Annals of the History of Computing. 4 (3): 197—217. DOI:10.1109/mahc.1982.10028. S2CID 2285332. Архивировано из оригинала (PDF) 14 May 2015. Дата обращения 24 December 2015. Используется устаревший параметр
|url-status=(справка) - Bromley, Allan G. Computing Before Computers. — Ames : Iowa State University Press, 1990. — P. 59–98. — ISBN 978-0-8138-0047-9.
- Bromley, Allan G. (October–December 2000). “Babbage's Analytical Engine Plans 28 and 28a-The Programmer's Interface”. IEEE Annals of the History of Computing. 22 (4): 5—19. DOI:10.1109/85.887986. S2CID 17597243.
- Cohen, I. Bernard. 8 - Aiken's Background in Computing and Knowledge of Babbage's Machines // Howard Aiken: Portrait of a Computer Pioneer. — Cambridge : MIT Press, 2000. — P. 61–72. — ISBN 9780262531795.
- Collier, Bruce (1970). The Little Engines That Could've: The Calculating Machines of Charles Babbage (PhD). Harvard University. Дата обращения 18 December 2015.
- Green, Christopher D. (2005). “Was Babbage's Analytical Engine intended to be a mechanical model of the mind?” (PDF). History of Psychology. 8 (1): 35—45. DOI:10.1037/1093-4510.8.1.35. PMID 16021763. Архивировано из оригинала (PDF) 2022-10-09. Дата обращения 25 December 2015. Используется устаревший параметр
|url-status=(справка) - Hyman, Anthony. Charles Babbage: A Biography. — Oxford : Oxford University Press, 1982. — ISBN 9780198581703.
- Menabrea, Luigi Federico. Sketch of the Analytical Engine invented by Charles Babbage... with notes by the translator. Translated by Ada Lovelace // Scientific Memoirs / Luigi Federico Menabrea, Ada Lovelace. — London : Richard and John E. Taylor, 1843. — Vol. 3. — P. 666–731.
- Randell, Brian (October–December 1982). “From Analytical Engine to Electronic Digital Computer: The Contributions of Ludgate, Torres, and Bush” (PDF). IEEE Annals of the History of Computing. 4 (4): 327—341. DOI:10.1109/mahc.1982.10042. S2CID 1737953. Архивировано из оригинала (PDF) 2013-09-21.
- Rojas, Raul (January–March 2021). “The Computer Programs of Charles Babbage”. IEEE Annals of the History of Computing. 43 (1): 6—18. DOI:10.1109/MAHC.2020.3045717. S2CID 232149889.
- Wilkes, Maurice Vincent. Babbage as a Computer Pioneer // Proc. Babbage Memorial Meeting. — London : British Computer Society, 1971. — P. 415–440.