Аналитическая машина представляла собой предложенный цифровой механический компьютер общего назначения , разработанный английским математиком и пионером компьютеров Чарльзом Бэббиджем . [2] [3] Впервые он был описан в 1837 году как преемник разностной машины Бэббиджа , которая представляла собой конструкцию более простого механического калькулятора. [4]
Аналитическая машина включала в себя арифметико-логический блок , поток управления в форме условного ветвления и циклов , а также встроенную память , что делало ее первой конструкцией компьютера общего назначения, которую можно было бы описать в современных терминах как полную по Тьюрингу . [5] [6] Другими словами, структура аналитической машины была по существу такой же, как та, которая доминировала в компьютерном проектировании в электронную эпоху. [3] Аналитическая машина — одно из самых успешных достижений Чарльза Бэббиджа.
Бэббидж так и не смог завершить строительство ни одной из своих машин из-за конфликтов со своим главным инженером и недостаточного финансирования. [7] [8] Лишь в 1941 году Конрад Цузе построил первый компьютер общего назначения Z3 , более чем через столетие после того, как Бэббидж предложил новаторскую аналитическую машину в 1837 году. [3]
Первой попыткой Бэббиджа создать механическое вычислительное устройство, « Разностную машину» , была машина специального назначения, предназначенная для табулирования логарифмов и тригонометрических функций путем оценки конечных разностей для создания аппроксимирующих полиномов . Строительство этой машины так и не было завершено; У Бэббиджа возникли конфликты со своим главным инженером Джозефом Клементом , и в конечном итоге британское правительство отозвало финансирование проекта. [9] [10] [11]
В ходе этого проекта Бэббидж понял, что возможна гораздо более общая конструкция — аналитическая машина. [9] Работа над проектированием аналитической машины началась около 1833 года. [12] [4]
Входные данные, состоящие из программ («формул») и данных, [13] [9] должны были передаваться машине через перфокарты , метод, который использовался в то время для управления механическими ткацкими станками , такими как жаккардовый ткацкий станок . [14] Для вывода машина будет оснащена принтером, плоттером и звонком. [9] Машина также сможет пробивать цифры на картах, чтобы их можно было прочитать позже. В нем использовалась обычная арифметика с основанием 10 и фиксированной запятой. [9]
Должно было быть хранилище (то есть память), способное хранить 1000 чисел по 50 десятичных цифр [15] каждое (около 16,6 КБ ). Арифметическое устройство («мельница») сможет выполнять все четыре арифметические операции , а также сравнения и, при необходимости, извлечение квадратного корня . [16] Первоначально (1838 г.) он был задуман как разностная машина , изогнутая назад, в целом круглой формы, с длинным магазином, выходящим в одну сторону. [17] Более поздние рисунки (1858 г.) изображают регуляризованную сетку. [18] Подобно центральному процессору (ЦП) в современном компьютере, мельница будет полагаться на свои собственные внутренние процедуры , которые будут храниться в виде колышков, вставленных во вращающиеся барабаны, называемые «бочками», для выполнения некоторых более важных задач. сложные инструкции, которые может указать пользовательская программа. [7]
Язык программирования, используемый пользователями, был похож на современные языки ассемблера . Были возможны циклы и условное ветвление, и поэтому задуманный язык был бы Тьюринг-полным , как позже определил Алан Тьюринг . Использовались три разных типа перфокарт: одна для арифметических операций, одна для числовых констант и одна для операций загрузки и сохранения, переноса чисел из хранилища в арифметическую единицу или обратно. Для трех типов карт было три отдельных считывателя. Бэббидж разработал около двух десятков программ для аналитической машины между 1837 и 1840 годами и одну программу позже. [14] [19] Эти программы обрабатывают полиномы, итеративные формулы, метод исключения Гаусса и числа Бернулли . [14] [20]
В 1842 году итальянский математик Луиджи Федерико Менабреа опубликовал описание двигателя на французском языке [21] на основе лекций, которые Бэббидж читал во время своего визита в Турин в 1840 году . [22] В 1843 году описание было переведено на английский язык и подробно аннотировано Адой . Лавлейс , который заинтересовался двигателем восемью годами ранее. [13] В знак признания ее дополнений к статье Менабреа, которая включала способ расчета чисел Бернулли с использованием машины (широко считается первой полной компьютерной программой), ее называют первым программистом .
В конце своей жизни Бэббидж искал способы построить упрощенную версию машины и собрал небольшую ее часть перед своей смертью в 1871 году. [1] [7] [23]
В 1878 году комитет Британской ассоциации содействия развитию науки назвал аналитическую машину «чудом механической изобретательности», но рекомендовал не создавать ее. Комитет признал полезность и ценность машины, но не смог оценить стоимость ее создания и не был уверен, будет ли машина правильно функционировать после постройки. [24] [25]
Периодически с 1880 по 1910 год [27] сын Бэббиджа Генри Прево Бэббидж строил часть мельницы и печатного аппарата. В 1910 году он смог вычислить (ошибочный) список кратных пи . [28] Это составляло лишь небольшую часть всего двигателя; он не был программируемым и не имел памяти. (Популярные изображения этой секции иногда неправильно маркируются, подразумевая, что это была вся мельница или даже весь двигатель.) «Аналитический двигатель» Генри Бэббиджа выставлен в Музее науки в Лондоне. [26] Генри также предложил построить демонстрационную версию полноценного двигателя с меньшей емкостью: «возможно, для первой машины подойдет десять (колонн) по пятнадцать колес в каждой». [29] Такая версия могла манипулировать 20 числами по 25 цифр каждое, и то, что ей можно было приказать делать с этими числами, по-прежнему могло быть впечатляющим. «Это только вопрос карт и времени», - писал Генри Бэббидж в 1888 году, «... и нет причин, по которым (двадцать тысяч) карт не следует использовать, если это необходимо, в аналитической машине для целей математика. ". [29]
В 1991 году Лондонский музей науки построил полный и работающий образец разностной машины Бэббиджа № 2 , конструкцию, которая включала в себя усовершенствования, обнаруженные Бэббиджем во время разработки аналитической машины. [5] Эта машина была построена с использованием материалов и технических допусков , которые были бы доступны Бэббиджу, что опровергает предположение о том, что конструкции Бэббиджа не могли быть произведены с использованием производственных технологий его времени. [30]
В октябре 2010 года Джон Грэм-Камминг начал кампанию «План 28» по сбору средств по «публичной подписке», чтобы обеспечить возможность серьезного исторического и академического изучения планов Бэббиджа с целью создания и тестирования полностью работающего виртуального проекта, который затем в свою очередь, позволяют построить физическую аналитическую машину. [31] [32] [33] По состоянию на май 2016 года попытки фактического строительства не предпринимались, поскольку из оригинальных проектных чертежей Бэббиджа еще не удалось получить последовательного понимания. В частности, было неясно, сможет ли он обрабатывать индексированные переменные, необходимые для программы Бернулли Лавлейса. [34] К 2017 году в рамках проекта «План 28» сообщалось, что доступна доступная для поиска база данных всех каталогизированных материалов, и был завершен первоначальный обзор объемных книг Бэббиджа «Каракули». [35]
Многие оригинальные рисунки Бэббиджа были оцифрованы и общедоступны в Интернете. [36]
Неизвестно, что Бэббидж записал подробный набор инструкций для двигателя наподобие современного руководства по процессору. Вместо этого он показывал свои программы в виде списков состояний во время их выполнения, показывая, какой оператор запускался на каждом этапе, практически не указывая, как будет управляться поток управления.
Аллан Дж. Бромли предположил, что колоду карт можно читать в прямом и обратном направлениях в зависимости от условного ветвления после проверки условий, которые сделали бы машину Тьюринг-полной:
...картам можно было приказать двигаться вперед и назад (и, следовательно, зацикливаться)... [14]
Введение в 1845 году впервые пользовательских операций для различных сервисных функций, включая, что наиболее важно, эффективную систему пользовательского контроля циклов в пользовательских программах. Нет указаний на то, как указано направление поворота рабочих и переменных карт. В отсутствие других доказательств мне пришлось принять минимальное допущение по умолчанию, что карты операций и переменных могут быть перевернуты только в обратном порядке, что необходимо для реализации циклов, используемых в примерах программ Бэббиджа. Не было бы никаких механических или микропрограммных трудностей в передаче направления движения под контроль пользователя. [37]
В своем эмуляторе движка Fourmilab говорят:
Устройство считывания карт Engine не ограничено простой обработкой карт в цепочке одна за другой от начала до конца. Кроме того, он может, направляемый самими картами, которые он считывает, и в зависимости от того, активирован ли рычаг запуска Мельницы, либо продвигать цепочку карт вперед, пропуская промежуточные карты, либо назад, заставляя ранее считанные карты обрабатываться один раз. снова.
Этот эмулятор действительно предоставляет письменный набор символических команд, хотя он был создан его авторами, а не на основе оригинальных работ Бэббиджа. Например, программа факториала будет записана так:
№0 6№1 1Н2 1×Л1Л0С1–Л0Л2S0Л2Л0CB?11
где CB — это инструкция условного перехода или «комбинационная карта», используемая для перехода потока управления, в данном случае назад на 11 карт.
Бэббидж понимал, что существование автоматического компьютера пробудит интерес к области, известной сейчас как эффективность алгоритмов , и писал в своих « Отрывках из жизни философа» : «Как только появится аналитическая машина, она обязательно будет направлять будущий ход развития человечества». Всякий раз, когда с ее помощью ищут какой-либо результат, тогда возникает вопрос: с помощью какого метода вычислений машина может получить эти результаты в кратчайшее время ?» [38]
С 1872 года Генри усердно продолжал работу своего отца, а затем в 1875 году периодически выходил на пенсию .
Перси Ладгейт написал о двигателе в 1914 году [40] и опубликовал свой собственный проект аналитической машины в 1909 году. [41] [42] Он был детально разработан, но так и не построен, а чертежи так и не были найдены. Двигатель Ладгейта будет намного меньше (около 8 кубических футов (230 л ), что соответствует кубу со стороной 2 фута (61 см)), чем двигатель Бэббиджа, и гипотетически будет способен умножать два числа из 20 десятичных цифр примерно на шесть. секунды. [43]
В своей работе «Очерки по автоматике» (1914) Леонардо Торрес Кеведо , вдохновленный Бэббиджем, разработал теоретическую электромеханическую вычислительную машину, которой должна была управлять программа, доступная только для чтения. В статье также содержится идея арифметики с плавающей запятой . [44] [45] [46] В 1920 году, чтобы отпраздновать 100-летие изобретения арифмометра , Торрес представил в Париже электромеханический арифмометр , который состоял из арифметического блока, подключенного к (возможно, удаленному) пишущей машинке, на котором подаются команды можно было набрать, а результаты распечатать автоматически. [47] [48]
Статья Ванневара Буша «Инструментальный анализ» (1936) включала несколько ссылок на работы Бэббиджа. В том же году он начал проект «Быстрая арифметическая машина» для исследования проблем построения электронного цифрового компьютера. [49]
Несмотря на эту основу, работа Бэббиджа осталась в исторической безвестности, а аналитическая машина была неизвестна создателям электромеханических и электронных вычислительных машин в 1930-х и 1940-х годах, когда они начали свою работу, что привело к необходимости заново изобрести многие архитектурные инновации Бэббиджа. сделал предложение. Говард Эйкен , создавший быстро устаревший электромеханический калькулятор Harvard Mark I в период с 1937 по 1945 год, хвалил работу Бэббиджа, вероятно, как способ повысить свой собственный авторитет, но ничего не знал об архитектуре аналитической машины во время создания Mark I. и считал свой визит к построенной части аналитической машины «величайшим разочарованием в своей жизни». [50] Mark I не оказал никакого влияния на аналитический движок, и в нем отсутствовала самая дальновидная архитектурная особенность аналитического движка — условное ветвление . [50] Дж. Преспер Эккерт и Джон В. Моучли также не были осведомлены о деталях работы Бэббиджа по аналитической машине до завершения разработки первого электронного компьютера общего назначения, ENIAC . [51] [52]
Если бы аналитическая машина была создана, она была бы цифровой , программируемой и полной по Тьюрингу . Однако это было бы очень медленно. Луиджи Федерико Менабреа сообщил в «Наброске аналитической машины »: «Мистер Бэббидж считает, что с помощью своей машины он может образовать произведение двух чисел, каждое из которых содержит двадцать цифр, за три минуты». [53] Для сравнения: Harvard Mark I мог выполнить ту же задачу всего за шесть секунд. Современный процессор может сделать то же самое менее чем за миллиардную долю секунды.