Изображение разностной машины Чарльза Бэббиджа, опубликованное в журнале Harper's Magazine в декабре 1864 года.
Некоторые исследователи считают, что машина Бэббиджа не могла быть закончена из-за существовавших на тот момент технических ограничений. Однако шведГеорг Шутц (1785–1873) и его сын Эдвард, прочитав статью о разностной машине Бэббиджа, создали свой вариант этой машины и представили его в 1843 году.
Позднее, в 1851 году, при поддержке Шведской академии наук они построили машину большего размера, способную выполнять вычисления с точностью до 15 знаков после запятой и печатать результаты расчетов.
В отличие от Чарльза Бэббиджа, который не смог завершить работу над своей машиной, Шутц создал полностью рабочий экземпляр. В 1991 году в лондонском Музее науки был воссоздан первый прототип машины Бэббиджа с использованием технологий того времени. Также был воссоздан второй прототип, который в настоящее время хранится в Музее компьютерной истории в городе Маунтин-Вью (штат Калифорния, США). Машина Бэббиджа позволяла выполнять расчеты с точностью до 31 знака, вычислять значения многочленов седьмой степени и имела размеры 2,4 X 2,1 X 0,9 м. Размеры машины Шутца составляли 54 X 86 X 65 см, однако она была способна вычислять значения многочленов всего лишь третьей степени с точностью до 15 знаков. В 2000 году в лондонском Музее науки также была построена печатная машина, спроектированная Бэббиджем для своей вычислительной машины.
Оставив работу над разностной машиной в 1834 году, Бэббидж занялся новым устройством, которое он назвал аналитической машиной (Analytical Engine). Аналитическая машина стала ближайшим предком современных компьютеров. С помощью разностной машины можно было вычислять лишь значения многочленов, в то время как аналитическая задумывалась как устройство широкого применения, способное вычислять значения произвольных функций. Источником энергии для новой машины Бэббиджа служил паровой двигатель, ввод информации выполнялся с помощью перфокарт, вывод — с помощью печатной машины и устройства для нанесения перфорации на перфокарты. В памяти машины могло храниться до тысячи 50-значных чисел. Она также содержала арифметическое устройство для выполнения четырех основных действий, которое Бэббидж назвал мельницей (the mill).
Для программирования машины использовался особый язык, ставший прообразом современных языков программирования. Помимо базовых инструкций этот язык содержал операторы циклов, условные операторы и инструкции для хранения данных. С формальной математической точки зрения машина Бэббиджа была эквивалентна машине Тьюринга, появившейся век спустя.
Бэббидж работал над машиной совместно с Адой Лавлейс, дочерью лорда Байрона. Ее вклад был по достоинству оценен позднее, и теперь Ада Лавлейс считается первым программистом в истории. Она предвидела, что в будущем компьютеры будут использоваться не только для численных расчетов, в то время как Бэббидж уделял основное внимание именно им.
* * *
АДА БАЙРОН, ГРАФИНЯ ЛАВЛЕЙС (1815–1852)
Ада Августа Байрон была единственной дочерью лорда Байрона и Анабеллы Милбэнк. Девочка не знала отца, так как родители разошлись за месяц до ее рождения, и лорд Байрон навсегда покинул Англию. Она была болезненным ребенком (слабое здоровье она унаследовала от отца), поэтому обучалась на дому. Особое внимание при этом уделялось математике и другим наукам. Ее обучали известные преподаватели: Уильям Френд, Уильям Кинг, Мэри Сомервилл и Огастес де Морган. Учителя считали, что девочка сможет стать исследователем первой величины. Мэри Сомервилл представила ее Чарльзу Бэббиджу. В знак признания ее заслуг по созданию языков программирования Министерство обороны США назвало в ее честь язык программирования Ада.
* * *
Они начали сотрудничать, когда Бэббидж попросил Аду Байрон перевести с французского текст Луиджи Менабреа об аналитической машине, написанный вскоре после выступления Бэббиджа в Турине, куда его пригласил математик Джованни Плана. Ада дополнила статью Менабреа примечаниями, которые по объему превысили исходный текст. В знаменитом примечании G помимо других важнейших открытий описывается алгоритм вычисления чисел Бернулли на языке программирования машины Бэббиджа с помощью двух циклов. Так было доказано, что машина Бэббиджа может иметь самое широкое применение. Это была первая в мире компьютерная программа. Ада также описала алгоритмы вычисления тригонометрических функций, в которых использовались переменные.
* * *
БУДУЩЕЕ, ОПИСАННОЕ В ПРИМЕЧАНИИ G
В примечании G Ада Лавлейс выразила уверенность, что не только машина Бэббиджа, но и сам новый способ обработки информации произведут революцию в науке: «Аналитическая машина не претендует на то, чтобы дать начало чему-либо. Она способна выполнить всё, что мы сможем приказать ей. Она может произвести анализ, но не способна предугадать ни истинность высказываний, ни взаимосвязь между ними. Она способна помогать нам, делая доступнее то, что нам уже известно. Изначально эффект от ее использования будет получен преимущественно в этой области, однако весьма вероятно, что она окажет косвенное и взаимное влияние на саму науку. Распространение и сочетание истин и формул анализа, которое возможно будет выполнить при помощи машины, прольет свет на взаимосвязи и природу множества научных материй, которые станет возможно изучить более глубоко. Возможно, это косвенный и несколько спекулятивный результат этого открытия, но нет сомнений, что эта новая форма записи математических истин и работы с ними открывает новые перспективы, пусть и в теории. Во всех областях человеческой власти и познания помимо основной цели всегда сочетаются различные побочные воздействия».
* * *
Некоторые исследователи высказывают сомнения относительно того, кто был автором примечания G. Быть может, это был сам Бэббидж? Как бы то ни было, бесспорно, Ада обладала обширными знаниями математики и была знакома с принципом действия аналитической машины. Она настолько тесно сотрудничала с ее изобретателем, что ее вклад в разработку аналитической машины трудно переоценить.
Ада превосходно разбиралась в устройстве станка Жаккара, и некоторые авторы считают, что именно она подсказала Бэббиджу, что для ввода программ и данных в аналитическую машину можно использовать перфокарты. Ада сформулировала понятия инструкций, циклов и подпрограмм, которые известны каждому, кто знаком с языками программирования. За ее талант и знания математики Бэббидж называл ее «повелительницей чисел» (the Enchantress of Numbers).
Аналитическая машина также не была сконструирована полностью, на этот раз из-за возникших финансовых, политических и юридических проблем. Были разработаны лишь некоторые компоненты, в частности элементы арифметического устройства и системы печати. Ни память, ни программируемые компоненты созданы не были.
Компьютеры, сопоставимые по логическому устройству с этой машиной, были созданы лишь 100 лет спустя. Аналитическая машина была забыта всеми, за исключением некоторых изобретателей, на которых оказали влияние важнейшие понятия, сформулированные Бэббиджем в ходе работы над ней.
В 1903 году ирландский бухгалтер Перси Ладгейт спроектировал машину, схожую с машиной Бэббиджа, в которой на смену паровому двигателю пришел электромотор. Испанский инженер, математик и автор множества изобретений Леонардо Торрес Кеведо использовал идеи Бэббиджа при создании автоматической шахматной машины в 1911 году. Его машина была способна играть с человеком окончание шахматной партии с королем и ладьей против короля. Машина действовала не совсем точно, но всегда ставила мат за минимально возможное число ходов, неизменно одерживая победу в партии.
Позднее, в 1930-е годы, американский ученый Вэнивар Буш создал цифровой электрический компьютер и несколько машин для решения дифференциальных уравнений. Даже в первом электромеханическом компьютере Harvard Mark I, который был создан в период с 1939 по 1943 год американским инженером Говардом Хатауэем Эйкеном при поддержке IBM, 760000 зубчатых колес и 800 километров проводов были расположены по схеме, предложенной Бэббиджем.
Если бы аналитическая машина Бэббиджа была построена, в ней было бы 30 метров в длину, 10 метров в ширину и 4,5 метра в высоту. Сложение выполнялось бы за 3 секунды, умножение — от 2 до 4 минут, не считая времени, затраченного на ввод данных в арифметическое устройство — это заняло бы еще 2,5 секунды.
Чарльз Бэббидж также известен благодаря многим другим открытиям. Он взломал шифр Виженера (вариант шифра Цезаря), разработал приспособление, сбрасывающее посторонние предметы с путей перед локомотивом, а также сформулировал экономический «принцип Бэббиджа». Он также создал современную почтовую систему и был первым, кто указал, что ширина колец на спиле дерева зависит от погодных условий, что позволило изучить климат прошлых лет.
В области философии и богословия, которые он также не обошел стороной, ему не удалось достичь столь значимых успехов. Он был очень верующим человеком и в 1837 году опубликовал «Девятый трактат Бриджуотера» (Ninth Bridgewater Treatise), последовавший за восемью трактатами по богословию, издание которых было оплачено из наследства преподобного Фрэнсиса Генри, графа Бриджуотерского. Бэббидж пытался доказать существование Бога с позиций математики. Он писал, что Бог как высший законодатель создал законы или программы, согласно которым различные виды живых существ появлялись тогда, когда это было необходимо, и не вмешивался в земные дела напрямую. Он также доказывал возможность происхождения чудес с математической точки зрения, использовав методы теории вероятности. Его работы были написаны в то же время, что и труды Чарльза Дарвина (1809–1882).
Логика и Джордж Буль
В 1847 году была опубликована книга «Математический анализ логики» (