Аналитическая машина была предложенным механическим компьютером общего назначения, разработанным английским математиком и пионером вычислительной техники Чарльзом Бэббиджем при содействии из Ады Лавлейс. Впервые он был описан в 1837 году как преемник разностной машины Бэббиджа - конструкция более простого механического компьютера.
Аналитическая машина содержала арифметико-логический блок, поток управления в форме условного ветвления и циклов, а также интегрированной памяти, что делает его первым проектом универсального компьютера, который может в современных терминах можно описать как полный по Тьюрингу. Другими словами, логическая структура аналитической машины была по существу такой же, как та, которая доминировала в компьютерном дизайне в электронную эпоху. Аналитическая машина - одно из самых успешных достижений Чарльза Бэббиджа.
Бэббидж так и не смог завершить постройку какой-либо из своих машин из-за конфликтов со своим главным инженером и недостаточного финансирования. Только в 1941 году был построен первый универсальный компьютер, Z3, более чем через столетие после того, как Бэббидж предложил новаторскую аналитическую машину в 1837 году.
Первая попытка Бэббиджа создать механическое вычислительное устройство, Difference Engine, была специальной машиной, предназначенной для табулирования логарифмов и тригонометрические функции путем вычисления конечных разностей для создания аппроксимирующих полиномов. Строительство этой машины так и не было завершено; У Бэббиджа возник конфликт со своим главным инженером, Джозефом Клементом, и в конечном итоге британское правительство прекратило финансирование этого проекта.
В ходе этого проекта Бэббидж понял, что гораздо более общий замысел, аналитический Двигатель, было возможно. Работа над дизайном аналитической машины началась в c. 1833.
Ввод, состоящий из программ («формул») и данных, должен был быть предоставлен в машину через перфокарты, метод, использовавшийся в то время для управления механическими ткацкие станки, такие как жаккардовые. Для вывода машина будет иметь принтер, плоттер кривых и звонок. Машина также сможет вводить числа на карточки, чтобы их можно было прочитать позже. В нем использовалась обычная base-10 арифметика с фиксированной запятой.
Должен был быть накопитель (то есть память), способный хранить 1000 чисел по 40 десятичных цифр каждое (примерно 16,2 кБ ). Арифметическое устройство («мельница») могло бы выполнять все четыре арифметических операции, плюс сравнения и, необязательно, квадратные корни. Первоначально (1838 г.) он был задуман как разностный двигатель , загнутый назад, в общем круглом виде, с длинным магазином, выходящим в одну сторону. Более поздние рисунки (1858 г.) изображают упорядоченную сетку. Подобно центральному процессору (CPU) в современном компьютере, комбинат будет полагаться на свои внутренние процедуры, которые будут храниться в виде штифтов, вставленных во вращающиеся барабаны, называемые «бочки». ", для выполнения некоторых из более сложных инструкций, которые может указывать программа пользователя.
Язык программирования, который использовался пользователями, был сродни современным языкам ассемблера. Были возможны циклы и условное ветвление, и поэтому язык в его задумке был бы полным по Тьюрингу, как позже определил Алан Тьюринг. Использовались перфокарты трех различных типов: один для арифметических операций, один для числовых констант и один для операций загрузки и сохранения, передачи чисел из магазина в арифметическое устройство или обратно. Для трех типов карт было три отдельных считывателя. Бэббидж разработал около двух десятков программ для аналитической машины между 1837 и 1840 годами и одну программу позже. Эти программы обрабатывают многочлены, итерационные формулы, исключение Гаусса и числа Бернулли.
. В 1842 году итальянский математик Луиджи Федерико Менабреа опубликовал описание механизма на основе лекция Бэббиджа на французском языке. В 1843 году описание было переведено на английский язык и снабжено обширными комментариями Адой Лавлейс, которая заинтересовалась двигателем восемь лет назад. В знак признания ее дополнений к статье Менабреа, в которых был описан способ вычисления чисел Бернулли с помощью машины (которая широко считается первой полной компьютерной программой), она была названа первым программистом..
В конце своей жизни Бэббидж искал способы построить упрощенную версию машины и собрал небольшая часть его перед его смертью в 1871 году.
В 1878 году комитет Британской ассоциации развития науки описал аналитическую машину как «чудо механической изобретательности», но не рекомендуется строить. Комитет признал полезность и ценность машины, но не смог оценить стоимость ее постройки и не был уверен, будет ли машина работать правильно после сборки.
Периодически с 1880 по 1910 год, сын Бэббиджа Генри Прево Бэббидж строил часть мельницы и печатный аппарат. В 1910 году он смог вычислить (ошибочный) список кратных пи. Это составляло лишь небольшую часть всего двигателя; он не был программируемым и не имел памяти. (Популярные изображения этого раздела иногда неправильно маркируются, подразумевая, что это был весь завод или даже весь двигатель.) «Завод аналитических машин» Генри Бэббиджа выставлен в Музее науки в Лондоне. Генри также предложил создать демонстрационную версию полного двигателя с меньшим объемом памяти: «возможно, для первой машины хватило бы десяти (колонн) с пятнадцатью колесами в каждой». Такая версия могла манипулировать 20 числами по 25 цифр каждое, и то, что ей можно было сказать, что делать с этими числами, все равно могло быть впечатляющим. «Это всего лишь вопрос карт и времени», - писал Генри Бэббидж в 1888 году, - «... и нет причин, по которым (двадцать тысяч) карт не следует использовать в случае необходимости в аналитической машине для математических целей.
В 1991 году Лондонский музей науки построил полный и рабочий образец разностной машины № 2 Бэббиджа, конструкции, которая включала в себя усовершенствования, обнаруженные Бэббиджем во время разработка аналитической машины. Эта машина была построена с использованием материалов и технических допусков, которые были бы доступны Бэббиджу, что опровергает предположение о том, что конструкции Бэббиджа не могли быть произведены с использованием производственных технологий его времени.
В октябре 2010, Джон Грэм-Камминг начал кампанию «План 28» по сбору средств по «публичной подписке» для проведения серьезного исторического и академического изучения планов Бэббиджа с целью затем построить и протестировать полностью работающий виртуальный проектирование, которое, в свою очередь, позволит построить физическую аналитическую машину. По состоянию на май 2016 года попыток фактического строительства не проводилось, поскольку на основе оригинальных проектных чертежей Бэббиджа еще нельзя было получить последовательного понимания. В частности, было неясно, может ли он обрабатывать индексированные переменные, которые требовались для программы Бернулли Лавлейса. К 2017 году проект «План 28» сообщил, что доступна база данных с возможностью поиска по всем каталогизированным материалам, и был завершен первоначальный обзор объемных Книг Бэббиджа.
Бэббидж, как известно, не записал явный набор инструкций для двигателя в виде руководства по современному процессору. Вместо этого он показал свои программы в виде списков состояний во время их выполнения, показывая, какой оператор запускался на каждом шаге, с небольшим указанием того, как будет направляться поток управления.
Аллан Г. Бромли предположил, что колода карт может быть прочитана в прямом и обратном направлениях как функция условного ветвления после тестирования условий, которые сделали бы двигатель завершенным по Тьюрингу:
... картам можно было приказать двигаться вперед и назад (и, следовательно, зацикливаться)...
Впервые в 1845 году были введены пользовательские операции для различных сервисных функций, включая, что наиболее важно, эффективную систему для пользовательский контроль зацикливания в пользовательских программах. Нет указания, как указано направление поворота рабочих и переменных карт. Ввиду отсутствия других доказательств мне пришлось принять минимальное допущение по умолчанию, что и операции, и переменные карты могут быть повернуты только в обратном направлении, что необходимо для реализации циклов, используемых в примерах программ Бэббиджа. Не было бы никаких механических или микропрограммных трудностей в том, чтобы поставить направление движения под контроль пользователя.
В своем эмуляторе движка Fourmilab говорят:
Считыватель карт двигателя не ограничен просто обработать карты в цепочке одну за другой от начала до конца. Кроме того, он может управлять самими картами, которые он считывает, и сообщать, активирован ли пусковой рычаг мельницы, продвигать цепочку карт вперед, пропуская промежуточные карты, или назад, в результате чего ранее считанные карты обрабатываются один раз. снова.
Этот эмулятор действительно предоставляет письменный набор символьных инструкций, хотя он был построен его авторами, а не основан на оригинальных работах Бэббиджа. Например, факториальная программа может быть записана как:
N0 6 N1 1 N2 1 × L1 L0 S1 - L0 L2 S0 L2 L0 CB? 11
где CB - это инструкция условного перехода. или «комбинированная карта», используемая для перехода потока управления, в данном случае назад на 11 карт.
Бэббидж понимал, что существование автоматического компьютера вызовет интерес к области, известной теперь как алгоритмическая эффективность, пишет в его отрывки из жизни философа: «Как только аналитическая машина существует, она обязательно будет направлять будущий курс науки. Когда с ее помощью добиваются какого-либо результата, тогда возникает вопрос: каким путем вычислений можно добиться? эти результаты будут получены с помощью машины в кратчайшие сроки? "
С 1872 года Генри усердно продолжал работу своего отца, а затем периодически уходил на пенсию в 1875 году.
Перси Ладгейт писал о двигателе в 1914 году и опубликовал свой собственный проект аналитической машины в 1908 году. Он был детально разработан, но так и не был построен, а чертежи так и не были найдены. Двигатель Ладгейта был бы намного меньше (около 8 кубических футов (230 л )), чем двигатель Бэббиджа, и гипотетически мог бы умножать два 20-значных числа примерно за шесть секунд.
Леонардо Торрес и Кеведо писал о двигателях Бэббиджа в «Очерках по автоматике» (1913). Книга содержит проект электромеханической машины, способной вычислять значение функции полностью автоматически.
Статья Ванневара Буша «Инструментальный анализ» (1936) содержала несколько ссылок на работы Бэббиджа. В том же году (он) начал проект «Быстрая арифметическая машина», чтобы исследовать проблемы построения электронного цифрового компьютера.
Несмотря на эту основу, работа Бэббиджа оказалась в исторической безвестности, а аналитическая машина была неизвестна строителям электромеханических систем. и электронно-вычислительные машины в 1930-х и 1940-х годах, когда они начали свою работу, что привело к необходимости заново изобретать многие архитектурные инновации, которые предлагал Бэббидж. Ховард Эйкен, который построил быстро устаревающий электромеханический калькулятор Harvard Mark I между 1937 и 1945 годами, хвалил работу Бэббиджа, вероятно, как способ повышения его собственного положения, но ничего не знал. архитектуры Аналитической машины во время строительства Mark I, и считал свое посещение построенной части Аналитической машины «величайшим разочарованием в моей жизни». Mark I не оказал влияния со стороны аналитической машины, и в ней отсутствовала самая дальновидная архитектурная особенность аналитической машины - условное ветвление. J. Преспер Эккерт и Джон В. Мочли точно так же не знали о деталях работы аналитической машины Бэббиджа до завершения разработки своего первого электронного компьютера общего назначения, ENIAC.
Если бы аналитическая машина была построена, она была бы цифровой, программируемой и полной по Тьюрингу. Однако это было бы очень медленно. Луиджи Федерико Менабреа писал в «Наброске аналитической машины»: «Г-н Бэббидж считает, что он может с помощью своей машины образовать произведение двух чисел, каждое из которых состоит из двадцати цифр, за три минуты». Для сравнения: Harvard Mark I мог выполнить ту же задачу всего за шесть секунд. Современный ПК может сделать то же самое менее чем за миллиардную долю секунды.
Имя | Первый рабочий | Система счисления | Вычислительный механизм | Программирование | Тьюринг завершен | Память |
---|---|---|---|---|---|---|
Разностный механизм | Нет выпускался до 1990-х годов | Десятичный | Механический | Не программируемый; начальные числовые константы полиномиальных разностей, установленные физически | Нет | Физическое состояние колес в осях |
Аналитическая машина | Еще не построена | Десятичная | Механическая | Управляется программой с помощью перфокарт | Да | Физическое состояние колес в осях |
Bombe (Польша, Великобритания, США) | 1939 (Польский ), март 1940 г. (Великобритания), май 1943 г. (США) | Вычисления символов | Электромеханические | Непрограммируемые; настройки ввода шифрования, задаваемые соединительными кабелями | Нет | Физическое состояние роторов |
Zuse Z3 (Германия) | Май 1941 | Двоичный с плавающей точкой | Электромеханические | Управляется программой с помощью перфорированной 35-мм пленки приклада | Принципиально | Механические реле |
Atanasoff – Berry Computer (США) | 1942 | Двоичный | Электронный | Непрограммируемый; ввод коэффициентов линейной системы с помощью перфокарт | № | Регенеративная конденсаторная память |
Colossus Mark 1 (UK) | декабрь 1943 г. | двоичный | Электронный | Программно-управляемый с помощью соединительных кабелей и переключателей | № | Термоэмиссионные клапаны (вакуумные трубки) и тиратроны |
Harvard Mark I - IBM ASCC (США) | Май 1944 г. | Десятичный | Электромеханический | Управляется программой с помощью 24-канальной перфоленты. (но без условного перехода) | Нет | Механические реле |
Zuse Z4 (Германия) | март 1945 (или 1948) | Двоичная с плавающей запятой | Электромеханический | Программно-управляемый с помощью перфорированной 35-мм пленки | Да | Механический реле |
ENIAC (США) | июль 1946 г. | десятичное | электронное | программное управление с помощью соединительных кабелей и переключателей | Да | Триод на электронных лампах триггеры |
Manchester Baby (Великобритания) | 194 8 | Двоичная | Электронная | Двоичная программа, вводимая в память с клавиатуры (первый электронный цифровой компьютер с хранимой программой) | Да | Электронно-лучевой анализатор Вильямса tube |
Викискладе есть материалы, связанные с аналитической машиной. |