Рассматривая возможности разностной машины, следует отметить, что Бэбидж впервые предложил машину, которая, в отличие от всех предшествующих, могла не только производить один раз заданное действие, но и осуществлять целую программу вычислений. Наряду с табулированием полиномов по методу конечных разностей на машине можно было рассчитывать значения функций, не имеющих постоянных разностей, с помощью искусно подобранных эмпирических формул.
Сам Бэбидж достаточно ясно представлял назначение своей машины. Он пропагандировал использование математических методов в различных областях науки и предсказывал при этом широкое применение вычислительных Машин. В частности, относительно применения математики в химии Бэбидж в 1838 г. писал, что химия, вместе с кристаллографией, должна стать ветвью математики и, используя имеющиеся данные, предсказывать характер нового соединения. Только в наше время, когда оказались разработанными автоматизированные системы поиска новых химических соединений из известных компонентов (на основе данных спектрального анализа), сбылось это научное предсказание Бэбиджа.
После 1833 г., когда была закончена часть разностной машины, Бэбидж не прекращал ею заниматься. Он рассматривает улучшенную схему расположения частей машины, вносит в нее различные изменения.
Продолжая работать над разностной машиной и все время совершенствуя ее, Бэбидж увидел возможность создать новую машину, которая должна была значительно превзойти разностную. В его голове складывается представление, что будущая (впоследствии он назвал ее аналитической) машина должна быть более гибкой, обладать большей скоростью и иметь более простую конструкцию.
Первый рисунок аналитической машины появился в бумагах Бэбиджа в сентябре 1834 г.
О начале работы над этой машиной вспоминает сын Ч. Бэбиджа, генерал-майор Генри Превост Бэбидж. Он пишет о том, что, как ранее и предполагалось, законченная часть разностной машины, оказалось, обладает большими возможностями, чем те, на которые она была рассчитана [85, с. 331]. Ряд этих возможностей был продемонстрирован на изготовленной части машины.
После установки нескольких связывающих колес колонка результатов могла взаимодействовать с другими колонками и оказывать влияние на отдельные части машины; таким образом был изменен порядок расчета в машине. Конструктивно это было выполнено следующим образом.
Бэбидж предложил расположить оси разностной машины по окружности таким образом, чтобы колонка результатов находилась вблизи от колонки последней разности и соответственно легко связывалась с нею. Он называл это приспособление «машиной, которая ест свой собственный хвост» [там же]. Но вскоре у Бэбиджа возникла идея управления вычислительным устройством полностью независимым путем, что сделало возможным производить не только сложение, но и другие арифметические операции по желанию в любом порядке и столько раз, сколько требуется. Бэбидж писал, что аналитическая машина будет рассчитывать цифровые значения любой алгебраической 'функции в любой заранее известный или зависящий от определенных условий момент времени; она будет прекращать расчет одной алгебраической функции и начинать расчет какой-либо другой так, что эти изменения могут быть повторены сколько угодно раз [77].
Конструктивная разработка аналитической машины казалась Бэбиджу настолько простой, что, по его мнению, пришлось бы затратить больше средств на окончание разностной машины по первоначальному плану, чем конструировать новую машину из более простых механических элементов.
Аналитическая машина была задумана как чисто механическое устройство без каких бы то ни было электрических элементов, так как электротехника в то время только начинала развиваться. Электромеханические реле были изобретены американским физиком Дж. Генри (1797— 1878) в 1835 г. и Бэбидж еще не знал об этом.
Однако при разработке машин Бэбидж предполагал использовать не только механический привод. Уже в первых своих высказываниях о создании машины для расчета таблиц Бэбидж отмечал, что он хотел бы выполнять эти расчеты с помощью какого-либо внешнего источника энергии и, в частности, пара. В письме к Г. Дэви [10] он пишет 0 применении тяжести или любой другой «движущей силы». Уайт отмечает, что «по проекту Бэбиджа приводить аналитическую машину в действие должен был паровой двигатель» [102].
На аналитической машине Бэбидж собирался вычислить навигационные таблицы, выверить таблицы логарифмов, рассчитать ряд астрономических таблиц и провести много других вычислительных работ.
В письме президенту Королевской академии наук в Брюсселе Стассарту, представленном на общее собрание академии 7—8 мая 1835 г., Бэбидж останавливается на возможностях своей машины. Приведем выдержку из этого письма (в переводе В. Я. Буняковского): [1 В России о проекте аналитической машины Бэбиджа впервые было сообщено в 1839 г. в работе академика Петербургской академии наук В. Я. Буняковского «Лексикон чистой и прикладной математики» [92].] «Я сам удивляюсь могуществу оставляемой мною машины, за год перед сим я не поверил бы возможности такого результата. Эта машина может производить действия над ста переменными (числами, которые могут изменяться); каждое число может состоять из 25 цифр. Если изобразим через v1, . . ., vn какие угодно числа, где n менее ста, и предположим, что имеет какую ни есть функцию ƒ (v1, v2, . . vn), которая составляется посредством сложения, вычитания, умножения, деления, извлечения корней и возвышения в степень, то машина определит численную величину этой функции. Она произведет подставление сей величины на место v или иной переменной и вычислит новую функцию относительно v1. При пособии этой машины почти все управления в конечных разностях могут быть приведены в таблицы.
Положим, что посредством наблюдений получили до тысячи величин а, b,c, d и желаем вычислить их по формуле P=√((a + b)/cd); сперва приготовляют машину к вычислению этой формулы и располагают первый ряд величин а, b, с, d; потом машина вычислит их, напечатает и уравнит нулю; наконец, зазвонит колокольчик и тем самым даст знать, что надобно расположить второй ряд постоянных. Когда, между каким ни есть числом последовательных коэффициентов ряда, существует отношение, выражающееся, как сказано было выше, то машина вычислит их и определит последовательно члены того ряда; после того можно будет расположить машину так, что она даст сумму ряда для каких угодно значений переменного количества» [92, с. 90—91]. В конце письма Бэбидж пишет, что он уже сумел преодолеть самые большие трудности в своем изобретении и что чертежи машины будут закончены через несколько месяцев.
В 1840 г. Бэбидж получил от своего друга математика М. Плана письмо с просьбой приехать в Турин для встречи с итальянскими учеными. В этом письме Плана пишет, что он расспрашивал многих соотечественников Бэбиджа о возможностях и механизме аналитической машины. В результате собранных сведений он представляет себе следующую картину: «До сих пор законодательная часть анализа была весьма мощной, исполнительная — совершенно ничтожной. Ваша машина, кажется, представляет нам возможность управления исполнением, которую мы имели ранее только над законодательной частью» [85, с. 64].
Впоследствии Бэбидж, говоря об этом приглашении, писал: «Рассмотрев чрезвычайно ограниченную информацию, которую смог получить мой друг относительно аналитической машины, я был удивлен и обрадован точным предсказанием ее возможностей. Даже в настоящее время я не могу выразить более ясно и в нескольких словах ее действительное назначение.
Я собрал вместе те из моделей, чертежей и заметок, которые, как я полагал, должны были наиболее подходить для уяснения принципов и методов работы аналитической машины, и сообщил о своем намерении приехать» [там же].
По пути в Италию Бэбидж проехал через Францию и посетил Лион, чтобы посмотреть процесс производства шелковых и других тканей. В частности, он хотел увидеть станок, на котором был выткан портрет изобретателя перфокарт Ж. М. Жаккара. Он купил копию этого портрета и привез его в Италию для подарка королеве.
В Италии Бэбиджа встретили торжественно. Король Сардинии К ар л-Альберт дал ему аудиенцию. Бэбиджа посетили крупные итальянские математики и инженеры: Мак Калак, Менабреа, Моссоти, Плана, Плантамор и др. После встреч и бесед, которые продолжались несколько дней по утрам в доме, где остановился Бэбидж, было решено провести ряд научных заседаний. Предполагалось, что Бэбидж расскажет о самой аналитической машине и о вопросах, связанных с ней.
Впоследствии Бэбидж так описывал начало этих заседаний: «В комнате заседания кругом были развешаны формулы, чертежи и различные иллюстрации, которые я привез с собой. В первый день был представлен краткий набросок идеи. Мои друзья время от времени просили объяснить те места, которые я выразил недостаточно четко. Плана первым предложил делать заметки с целью описания принципов работы машины. Но собственные напряженные занятия заставили его отказаться от замысла и предложить эту задачу своему более юному другу Менабреа» [85, с. 64].
Эти заседания и дискуссии, которые на них разгорались, имели для Бэбиджа большое значение. Он впервые подробно излагал свои взгляды на аналитическую машину, ее возможности и конструкцию. Вспоминая об этих заседаниях., он писал: «Собственные идеи при этом стали яснее, и я значительно выиграл от многочисленных замечаний, сделанных моими в высшей степени одаренными друзьями» [там же].
Поездка в Италию имела одно замечательное последствие. Л. Ф. Менабреа [1 Менабреа позже получил звание профессора прикладной математики в Туринском университете. Впоследствии он стал одним из руководителей борьбы за национальное освобождение и объединение Италии.] (1809—1869), следуя совету Плана, подробно записывал содержание лекций и бесед Бэбиджа. Будучи способным математиком и механиком, имея широкий научный кругозор, Менабреа сумел усвоить и оценить идеи Бэбиджа, разобраться в устройстве его машины. В октябре 1842 г. в печати появилась статья Менабреа, в которой впервые было дано описание машины Бэбиджа и изложение его идей. Менабреа, в частности, писал относительно программирования на аналитической машине: «После того, как будет изобретена машина, трудность будет заключаться в составлении перфокарт; однако, поскольку они являются просто переводом алгебраических формул, то при помощи каких-либо простых указаний легко будет получить их выполнение не очень квалифицированному работнику. Таким образом, вся умственная работа будет ограничена подготовкой формул, которые должны быть удобны для вычислений, производимых машиной» [85, с. 243].
Вскоре после появления статьи Менабреа А. А. Лавлейс (1815—1852) сообщила Бэбиджу, что перевела статью на английский язык. Здесь необходимо остановиться на личности Лавлейс, одной из немногих, оценивших прогрессивное значение идей Бэбиджа и в значительной мере способствовавших их распространению.
Ада Августа была единственной дочерью великого английского поэта Джорджа Байрона (1788—1824) и Аннабеллы Милбэнк (1792—1860).
[2 В 1816 г., когда Аде исполнился один год, Байрон навсегда покидает Англию. Отъезд во многом был вынужденным — острый политический характер общественных и литературных выступлений Байрона возбудил против него реакционное английское общество, скандальную огласку получил его разрыв с женой. Байрон никогда больше не видел дочери, но часто вспоминал о ней, заботился о ее воспитании, посвятил ей трогательные и нежные строки в поэме «Чайльд Гарольд»:
1
Дочь, птенчик, Ада милая! На мать Похожа ль ты, единственно родная?
В день той разлуки мне могла сиять В твоих глазах надежда голубая. . .
118
...............................
Спи в колыбели сладко, без волненья:
Я через море, с горной высоты Тебе, любимой, шлю благословенье,
Каким могла б ты стать для моего томленья!
(Перевод, Г. Шенгели, песнь третья). Байрон Дж. Избранные произведения. М., ГИХЛ, 1953.]
Ада получила прекрасное воспитание. Важное место в нем занимало изучение математики — в немалой степени под влиянием матери, проявлявшей неизменный интерес к математическим вопросам. Бэбидж, который был знаком с леди Байрон, поддерживал увлечение юной Ады математикой. Занятия Ады поощряют друзья ее семьи — известный математик де Морган и его жена, супруги Соммервил и др.
К 1834 году относится знакомство Ады с разностной машиной Бэбиджа. Ада посещает публичные лекции Д. Ларднера о машине. В это же время, совместно с Соммервилем и другими, она впервые навещает Бэбиджа и осматривает его мастерскую.
После первого посещения Ада стала часто бывать у Бэбиджа, иногда в сопровождении миссис де Морган. В своих воспоминаниях де Морган так описала один из первых визитов: «Пока часть гостей в изумлении глядела на это удивительное устройство (разностную машину. — Авт.) с таким чувством как, говорят, дикари первый раз видят зеркальце или слышат выстрел из ружья, мисс Байрон, совсем еще юная, смогла понять работу машины и оценила большое достоинство изобретения» [106, с. 89].
Мэри Соммервил также вспоминала, что они вместе с Адой «. . .часто посещали мистера Бэбиджа, работавшего над вычислительной машиной»; Бэбидж всегда приветливо встречал их, терпеливо объяснял устройство своей машины и практическую пользу автоматических вычислений [104, с. VII-XII].
В течение ряда лет Ада изучала математику под руководством де Моргана, который считал ее очень способной ученицей. Бэбидж постоянно следил за научными занятиями Ады, он подбирал и посылал ей статьи и книги, в первую очередь по математическим вопросам.
В 1835 г. Ада Байрон в возрасте 19 лет вышла замуж за лорда Кинга, который впоследствии стал графом Лавлейс. Муж с одобрением относился к научным занятиям Ады и по возможности помогал в них. Замужество Ады не отдалило ее от Бэбиджа; их отношения стали еще более сердечными.
В начале знакомства Бэбиджа с Адой его привлекли математические способности девушки. В дальнейшем Бэбидж нашел в ней человека, который полностью понимал его устремления, поддерживал все его смелые, а порою и дерзкие начинания. Отношения Бэбиджа с Адой Лавлейс во многом скрасили его личную жизнь, частые неудачи в работе. Ада, кроме того, была почти ровесницей его рано умершей единственной дочери. Все это привело, несмотря на сложность и противоречивость характера Бэбиджа, к теплому и искреннему отношению к Аде на долгие годы.
Ада Августа Лавлейс
На портрете А. Лавлейс выглядит миловидной темноволосой женщиной. Ада была маленького роста, и Бэбидж, упоминая о ней, часто называл ее феей. Однажды редактор журнала «Экзаменатор» описал ее следующим образом: «Она была удивительна, и ее гений (а она обладала гениальностью), был не поэтический, а метафизический и математический, ее ум находился в постоянном движении, которое соединялось с большой требовательностью. Наряду с такими мужскими качествами как твердость и решительность леди Лавлейс присущи были деликатность и утонченность наиболее изысканного женского характера. Ее манеры, вкусы, образование . . . были женскими в хорошем смысле этого слова, и поверхностный наблюдатель никогда не смог бы предположить силу и знания, которые лежали скрытыми под женской привлекательностью. Насколько она питала неприязнь к легкомыслию и банальностям, настолько она любила наслаждаться настоящим интеллектуальным обществом.Она страстно желала быть знакомой со всеми людьми, известными в науке, искусстве и литературе» [87, с. 159].
Ада была достаточно образована и умна, чтобы оценить дружбу такого выдающегося человека, как Бэбидж. Супруги Лавлейс вели светский образ жизни, регулярно устраивая приемы и вечера в своем лондонском доме и загородном имении Окхам-Парк, где постоянно бывал и Бэбидж. Несмотря на частые личные встречи, между Адой Лавлейс и Бэбиджем велась оживленная переписка.
Ада унаследовала от отца и литературные способности: ее письма написаны легко, красивым языком. В одном из писем к Бэбиджу, давая себе характеристику, А. Лавлейс пишет: «Мой мозг — нечто большее, чем просто смертная субстанция; я надеюсь, время покажет это (если только мое дыхание и прочее не будет слишком быстро прогрессировать к смерти). Клянусь Дьяволом, что не пройдет и десяти лет, как я высосу некоторое количество жизненной крови из загадок вселенной, причем так, как этого не смогли бы сделать обычные смертные губы и умы. Никто не знает, какая ужасающая энергия и сила лежат еще неиспользованными в моем маленьком гибком существе» [87, с. 174-175].
У супругов Лавлейс в 1836 г. родился сын, в 1838 — дочь и в 1839 — сын. Естественно, что это оторвало Аду на время от занятий математикой. Но вскоре после рождения третьего ребенка она обращается к Бэбиджу с просьбой подыскать ей преподавателя математики. При этом Ада пишет, что имеет силы дойти так далеко в достижении своих целей, как она этого пожелает.
Бэбидж в письме от 29 ноября 1839 г. отвечает Лавлейс: «Я думаю, что Ваши математические способности настолько очевидны, что не нуждаются в проверке. Я навел справки, но найти в настоящее время человека, которого я мог бы рекомендовать Вам как преподавателя, мне не удалось. Я продолжу поиски» [87, с. 162].
С начала 1841 г. Лавлейс серьезно занялась изучением машин Бэбиджа. В связи с этим меняется характер их переписки, которая в дальнейшем длительное время связана с научными вопросами.
5 января 1841 г., приглашая Бэбиджа в Окхам-Парк, Лавлейс пишет: «Вы должны сообщить мне основные сведения, касающиеся Вашей машины. У меня есть основательная причина желать этого». В письме от 12 января она подробно излагает свои планы: «Я очень хочу говорить с Вами. Я намекну Вам о чем. Мне пришло в голову, что некоторое время в будущем (может быть в течение трех или четырех, а возможно даже многих лет) моя голова может служить Вам для Ваших целей и планов. Если так, если я когда-либо смогу быть Вам полезной, — моя голова будет принадлежать Вам. Именно по этому вопросу я хочу серьезно поговорить с Вами» [87, с. 164].
Это предложение было с признательностью принято Бэбиджем. С этого времени их научные контакты, точнее — научное сотрудничество, не прерывалось и дало блестящие результаты.
22 февраля 1841 г. Лавлейс пишет Бэбиджу. «Я много думаю о возможности (полагаю, что могу сказать вполне вероятном) сотрудничестве между нами в будущем. . . Я считаю, что результаты этого сотрудничества будут полезны для нас обоих и полагаю, что эта идея (которую, между прочим, я долго вынашивала в смутной и приблизительной форме) является одной из тех счастливых проявлений интуиции, которые временами приходят в голову так необъяснимо и удачно» [там же].
В октябре 1842 г. была опубликована работа Менабреа, и Ада занялась ее переводом. Бэбидж был очень доволен. Впоследствии он вспоминал, что, узнав о переводе, спросил Аду «почему она не написала самостоятельной статьи по этому вопросу, с которым была так хорошо знакома. На это леди Лавлейс ответила, что эта мысль не пришла ей в голову. Тогда я предложил, чтобы она добавила некоторые примечания к очерку Менабреа. Эта идея была ею немедленно принята» [85, с. 68].
План и структуру примечаний они разрабатывали совместно, неоднократно возвращаясь к этому вопросу как в беседах, так и в переписке. Закончив очередное примечание, Лавлейс отсылала его Бэбиджу, который редактировал его, делал различные замечания и возвращал.
Работа была передана в типографию 6 июля 1843 г. Начиная с 10 июля стала поступать корректура, которую также смотрели и исправляли совместно. Слуга Лавлейс иногда по нескольку раз в день относил Бэбиджу просмотренный и исправленный текст. Если у Бэбиджа не было принципиальных возражений, он передавал корректуру непосредственно в типографию, если же его изменения были существенны, он отсылал материалы Лавлейс. Когда возникали разногласия, они встречались и разрешали их в личной беседе. Так, например, А. Лавлейс просит Бэбиджа прийти 13 июля на Сент-Джеймскую площадь в 9 часов утра, объясняя время встречи тем, что «столь ранний час выбран мною потому, что в этот день надо сделать очень много» [87, с. 177].
Несмотря на принципиальное согласие, иногда им приходилось трудно, так как столкнулись вместе две яркие индивидуальности со своими взглядами, привычками и манерой работать, Бэбидж часто путал отдельные страницы, иногда даже терял их, по нескольку раз правил одни и те же листы и не заглядывал в другие и т. п. Это раздражало пунктуальную и аккуратную Лавлейс. В свою очередь Лавлейс болезненно воспринимала многие исправления и замечания Бэбиджа. Так, например, в одном из писем она пишет Бэбиджу: «Я очень раздосадована тем, что Вы изменили мое примечание. Вы знаете, что я всегда соглашаюсь сделать любые необходимые изменения, но самостоятельно, и я не терплю, чтобы кто-либо вмешивался в мой текст. Если я не права, я смогу внести изменения при сверке, если Вы, конечно, пришлете мне корректуру» [87, с. 170].
Несмотря на некоторые неувязки и порой даже резкий тон, они работали совместно, хорошо понимая друг друга. Созданию такой творческой обстановки в первую очередь способствовал Бэбидж. Хотя он был раздражительным человеком, обижавшимся на любые возражения, в отношении Лавлейс Бэбидж проявлял тактичность и чуткость. Он понимал, что для женщины со слабым здоровьем и большим, пусть даже обоснованным, самомнением, одобрение является существенным моральным стимулом творчества. Поэтому' Бэбидж не упускал случая отметить успехи Лавлейс. Так, 30 июня Бэбидж писал ей: «Я получил наслаждение от примечания D. Оно написано Вашим обычным ясным стилем» [87, с. 169]. 2 июля: «Мне очень не хочется расставаться с превосходным философским рассмотрением аналитической машины, содержащимся в примечании А. . . Чем больше я читаю Ваши примечания, тем больше поражаюсь Вашей интуиции» [87, с. 171]. Таких записок было много.
28 июля Лавлейс восторженно пишетБэбиджу: «Я счастлива узнать, что мои Примечания требуют фактически мало исправлений. Сказать честно, я сама не могла бы быть не поражена ими. хотя речь идет обо мне самой. Они действительно написаны прекрасным стилем, который превосходит стиль самого очерка. Я заставила рассмеяться графа Л., когда невозмутимым тоном заметила: «Я очень довольна своим первенцем. Это необычайный ребенок и он вырастет в человека первоклассной величины и силы» [87, с. 179-180].
А. Лавлейс была права, эта ее работа действительно оказалась первоклассной. К большому сожалению, кроме нее Лавлейс не оставила больше ничего. «Первенец» оказался единственным.
А. Лавлейс работает с большим напряжением. В письмах к Бэбиджу она неоднократно жалуется на утомление, болезнь, плохое самочувствие. «Я работала непрерывно с семи часов утра до того времени пока оказалось невозможным концентрировать далее свое внимание» [87, с. 178]. «Примечание В измучило меня до смерти, хотя я сделала в нем только небольшие изменения» [87, с. 183]. «Я едва ли смогу описать Вам, как меня мучит и изводит болезнь» [87, с. 172] и т. п.
6 августа Бэбидж отсылает Лавлейс свои последние замечания и просит передать все в типографию. В конце августа того же 1843 г. перевод статьи Менабреа с примечаниями Лавлейс, которые почти в три раза превысили объем статьи Менабреа, вышел в свет [79]. Бэбидж был очень доволен и, отдавая дань обоим авторам, писал: «Эти работы (Менабреа и Лавлейс), взятые вместе, представляют для тех, кто способен понимать рассуждения, полную демонстрацию того, что все действия и операции анализа могут быть выполнены с помощью машин» [85, с. 68].
Менабреа был удивлен, обнаружив свою статью не только хорошо переведенной, но и снабженной обширными и глубокими комментариями и замечаниями. Статья была переведена неизвестным для Менабреа математиком (в этом он не сомневался), а каждое замечание было подписано инициалами A. A. L. (Ada Augusta Lovelace), которые он не мог связать ни с одним известным ему лицом. Каково же было восхищение Менабреа, когда после длительных выяснений он узнал, что за этими инициалами кроется 28-летняя леди Лавлейс.
После окончания работы над статьей Менабреа Ада Лавлейс в письме от 11 августа задает Бэбиджу вопрос, оставит ли он «интеллект и способности «леди-феи» на службе своим великим целям?» [87, с. 177]. Ответ Бэбиджа был, естественно, положительным. В этом же письме Лавлейс предлагает консультировать всех желающих по вопросам, связанным с вычислительными машинами, чтобы Бэбидж не отвлекался от основной работы.
Бэбидж продолжает работать над аналитической машиной, хотя все время испытывает большие финансовые трудности. 4 ноября 1842 г. Бэбидж получает письмо, в котором правительство окончательно отказывает ему в финансовой поддержке. 11 ноября он встречается с Робертом Пилем и пытается его убедить в необходимости финансирования дальнейших работ; однако беседа не принесла положительных результатов. Несмотря на это, Бэбидж не бросает работы над аналитической машиной. Он разрабатывает почти фантастические, нереальные способы приобретения денег.
Один из них относится к разработке системы ставок на бегах, которая бы давала верный выигрыш. В этом активное участие принимают супруги Лавлейс, большие любители лошадей. Как и следовало ожидать «система» не привела к выигрышу. Проиграв на скачках довольно большую сумму, Бэбидж и граф Лавлейс отказались от дальнейшего участия в игре. Но Ада продолжала упорно играть, часто даже скрытно и от мужа и от Бэбиджа. Она израсходовала на скачках почти все средства, которые ей принадлежали.
Лавлейс продолжала играть на скачках до своей болезни, первые признаки которой появились в начале 50-х годов. В ноябре 1850 г. она пишет Бэбиджу: «Здоровье мое. . . настолько плохо, что я хочу принять Ваше предложение и показаться по приезде в Лондон Вашим медицинским друзьям» [87, с. 209].
Несмотря на принимаемые меры, болезнь прогрессировала и сопровождалась тяжелыми мучениями. 27 ноября 1852 г. Ада Августа Лавлейс скончалась, не достигнув 37 лет. Она была погребена рядом с отцом в фамильном склепе Байронов. Бэбидж очень тяжело перенес эту утрату.
После смерти Лавлейс Бэбидж уничтожил большую часть переписки с ней.[1 По просьбе Лавлейс, высказанной в ее последнем письме Бэбиджу (от 12 августа 1852 г.), были уничтожены некоторые бумаги (она имела в виду письма, в которых упоминалось об игре на скачках).] Сохранившиеся письма не только глубже раскрывают творческий облик этих двух замечательных ученых, но и дают возможность лучше понять жизненные принципы и позиции их авторов.
Существенное внимание в примечаниях А. Лавлейс к статье Менабреа уделено особенностям структуры и возможностям аналитической машины. Но основная заслуга А. Лавлейс состоит в том, что она разработала первые программы для аналитической машины, заложив теоретические основы программирования [97].
1842—1848 годы Бэбидж посвятил почти исключительно созданию аналитической машины. В это время он разработал теоретические основы машины и уяснил огромные возможности, которые могут иметь подобные устройства. Без какой бы то ни было финансовой поддержки Бэбидж продолжал работу, используя собственные средства. Он нашел чертежников и рабочих, которые работали у него дома. Как и при изготовлении разностной машины, он решил начать работу с выполнения модели. В процессе работы он постоянно вносил изменения в конструкцию машины и ставил бесконечные эксперименты.
Не окончив первую модель машины, Бэбидж принимается за следующую. Но затем он временно прекращает работу над аналитической машиной, так как в 1848 г. решает разработать полный комплект чертежей для второй разностной машины. В этих чертежах должны были быть отражены все усовершенствования, к которым Бэбидж пришел, создавая аналитическую машину. В 1849 г. он закончил эту работу.
В том же году друг Бэбиджа, известный астроном У. Росс (1800—1867), был избран президентом Лондонского королевского общества. Росс всегда интересовался работами Бэбиджа. Узнав, что Бэбидж изготовил полный комплект чертежей разностной машины, Росс предложил Бэбиджу передать чертежи правительству и, обратившись с письмом к премьер-министру, попытаться убедить его в необходимости постройки машины. На предложение Росса Бэбидж ответил, что его первым желанием было отказаться, но, если правительство согласится изготовить машину, он готов передать ее чертежи и пояснения к ним.
Однако неприятности вновь преследуют Бэбиджа. Во время подготовки письма к премьер-министру произошла смена правительства. В начале 1852 г. Бэбидж написал письмо новому премьер-министру лорду Дерби. Это письмо, в котором Бэбидж жаловался на «потери и пренебрежение» к его трудам, Росс передал лорду Дерби. Кроме того, от имени Королевского общества он поддержал проект создания разностной машины.
В июне 1852 г. премьер-министр направил письмо Бэбиджа канцлеру казначейства Б. Дизраэли для ответа. Дизраэли быстро решил, что и через годы Бэбидж не закончит постройку машины. В своем ответе он писал, что проект представляется весьма дорогостоящим, затраты на его реализацию невозможно оценить, а работы, по всей вероятности, никогда не приведут к созданию механизма, заслуживающего внимания. Поэтому вряд ли можно было бы оправдать правительство, если бы оно согласилось принять на себя какие-либо обязательства по этому проекту.
Ответ канцлера, окончательно отказавшего в финансовой поддержке, возмутил Бэбиджа и вызвал ряд его резких замечаний. Бэбидж говорил, что разностная машина «может не только сосчитать миллионы, которые растратил канцлер, но и считать очень малые числа». Бэбидж назвал канцлера «Геростратом науки, имя которого, если избежит забвения, будут вспоминать только как имя разрушителя храма Изиды» [85, с. XVI].
В 1849 г., закончив чертежи разностной машины, Бэбидж возобновил работу над аналитической. К тому времени у него сложилось отчетливое представление о машине, как об устройстве, позволяющем заменить труд многих вычислителей. Человек-вычислитель, проводя расчет без машины, использует следующие средства: ручной счетный прибор для производства арифметических действий; расчетный бланк для записи промежуточных результатов и порядка расчета, т. е. программу вычислений; справочные таблицы и собственные соображения относительно последовательности выполнения операций. Бэбидж разрабатывает машину с такой же функциональной структурой; она включает три основных блока (рис. 2).
Первое устройство, которое Бэбидж называет «store» [1 Storage (англ.) — накопитель. Этот термин в настоящее время сравнительно широко применяется для обозначения запоминающих устройств, преимущественно устройств большой емкости (накопители на магнитных дисках, магнитных лентах и т. д.).] предназначено для хранения цифровой информации на регистрах из колес; в современных машинах это — запоминающее устройство.
Во втором устройстве с числами, взятыми из памяти, проводятся цифровые операции; у Бэбиджа оно носит название «mill»[1 Mill (англ.) — фабрика, завод, мельница.], в настоящее время — арифметическое устройство.
Рис. 2. Блок-схема аналитической машины
Третье устройство управляет последовательностью операций, выборкой чисел, с которыми производятся операции, и выводом результатов. Бэбидж оставил это устройство без названия; по современной терминологии этот «мозг» машины называется устройством управления.
В конструкцию аналитической машины также входило устройство ввода-вывода.
Рассмотрим характеристики основных блоков. Эффективность машины как вычислительного устройства во многом зависит от количества информации, которое может храниться в ее памяти. Бэбидж проектировал память машины, составленную из 1000 колонок по 50 цифровых колес в каждой, т. е. из 1000 чисел длиной в 50 десятичных разрядов. Эта величина приемлема даже в настоящее время и соответствует более чем 150 000 двоичных знаков (в современных ЭВМ, в основном, применяется двоичная система счисления); машины с таким объемом памяти начали разрабатываться только с 1946 г. Кроме того, машина должна была иметь встроенные (т. е. реализованные схемным образом) логарифмические и другие таблицы. После того как одна или несколько колонок использованы для каких-либо величин (данных или переменных), может случиться, что, начиная с какого-то момента, эти величины не потребуются далее; тогда они могут быть напечатаны на бумаге, а колонки используются для других данных. Если для решения какой-нибудь задачи требуется использовать больше величин, чем их можно поместить на регистрах, то возможно записать эти величины на перфокартах, которые могут следовать друг за другом в неограниченной последовательности.
Ж. М. Жаккар
Предполагая, что скорость движущихся частей машины не превышает 40 фут/мин (12 м/мин), Бэбидж оценивал ее быстродействие следующими цифрами:
сложение (вычитание) двух 50-разрядных чисел производится со скоростью 60 сложений в минуту или 1 операция в секунду;
умножение двух 50-разрядных чисел — со скоростью 1 операция в минуту;
деление числа из 100 разрядов на число из 50 разрядов— со скоростью 1 операция в минуту.
Для устройства управления Бэбидж намеревался применить разновидность карт Жаккара.
Ж. М. Жаккар (1752—1834) — французский ткач и механик, внесший много усовершенствований в ткацкое производство. В 1799 г. он построил свой первый ткацкий станок, который в 1801 г. на выставке в Париже получил бронзовую медаль. В 1804 г. Лондонское королевское общество, а затем Французское общество поощрения ремесел объявили премию за изобретение машины для вязания рыболовных сетей. Жаккар принял участие в конкурсе и получил от Французского общества золотую медаль и премию в 3000 франков. Но основная его заслуга состоит в том, что в самом начале XIX в. он автоматизировал работу ткацкого станка при изготовлении тканей со сложным переплетением нитей. Для управления работой станка были использованы перфорированные карты. Перфокарты Жаккара представляли собой картонные прямоугольники, на которых в определенных местах пробивались отверстия.
Управляли станком следующим образом. Группа нитей основы, выбранная так, чтобы образовать нужный узор, должна быть приподнята перед каждым проходом челнока. Нити проходят через проволочные петли (ремизки), прикрепленные по несколько штук к ряду крючков, расположенных в раме. Каждую группу нитей основы можно приподнять, поднимая перед проходом челнока соответствующий крючок. Та часть крючков, которая должна быть приподнята при каждом прохождении челнока, определяется отверстиями, пробитыми в перфокартах, — одна перфокарта для каждого пробега челнока. Карты связаны между собой веревочными петлями в непрерывный ряд. Перед проходом челнока одна из карт прижимается к матрице, состоящей из горизонтальных стержней, каждый из которых связан с одним крючком. В результате этого приходят в движение только те стержни, которые соприкасаются с картами; стержни, приходящиеся напротив отверстий в картах, остаются неподвижными.
Движущиеся стержни соединены с соответствующими крючками и убирают их с пути. После прохода челнока карта возвращается в исходное положение, затем к матрице стержней подходит новая карта.
Обычно в жаккаровском станке в матрице содержится 400 и более стержней и соответствующее число крючков. Наличие большого числа перфокарт, идущих одна за другой, дает возможность изготовлять довольно сложные узоры. Так, например, знамя с двуглавым орлом изготовлялось на станке с 14 000 карт; с помощью нескольких десятков тысяч перфокарт был выткан на шелку портрет Жаккара.
Рис. 3. Ткацкий станок Жаккара (1810)
Следует отметить, что сама операция изготовления карт довольно сложная, Рисунок ткани должен быть вначале выполнен на особой клетчатой бумаге (заправочный рисунок ткани). Затем соответственно каждому пробегу челнока должна быть пробита отдельная карта. При большом количестве карт на их изготовление уходило очень много времени.
Идея управления работой ткацкого станка при помощи перфокарт высказывалась и ранее (во Франции в 1728 г. М. Фальконом и в 1745 г. Ж. Вокансоном). Но только Жаккару удалось использовать ее в ткацком станке. Его конструкция станка 1804 г. быстро получила широкое распространение во Франции; с 1824 г. она вошла в употребление в Англии. Фактически на перфокартах отражались элементы двоичной арифметики: 0 и 1. Например, отверстие означает 0, а отсутствие отверстия — 1; это можно также интерпретировать как «да» и «нет» или как-нибудь по-другому.
После изобретения Жаккара перфорационный принцип управления получил распространение в тех машинах, где требовалось согласование различных действий многих механизмов. Этот принцип применяли, например, в музыкальных аппаратах, наборных машинах и в других случаях.
Перфокарты, с помощью которых Бэбидж предполагал автоматизировать работу аналитической машины, могут быть разделены на две основные группы: операционные (или перфокарты операций) и управляющие.
С помощью операционных перфокарт осуществлялись сложение, вычитание, умножение и деление чисел, находящихся в арифметическом устройстве. Операционные перфокарты выглядели так:
C помощью управляющих перфокарт осуществлялась передача чисел как внутри машины (из памяти в арифметическое устройство и обратно), так и в системе — «человек- машина» (ввод оператором новых чисел в память машины и вывод результатов вычислений на печать).
Для обозначения управляющих перфокарт, с помощью которых осуществлялась передача чисел между памятью и арифметическим устройством, Бэбидж использовал термин «карты переменных». В письме к Лавлейс от 30 июня 1843 г. Бэбидж писал, что в аналитической машине «используются только три вида карт переменных:
1) карты, с помощью которых переменные выводятся из памяти в счетное устройство, на колонках при этом остается нуль;
2) карты, с помощью которых переменные выводятся из памяти в счетное устройство, при этом величина их в памяти сохраняется;
3) карты, с помощью которых можно вызвать любую нулевую переменную с целью получения результата из счетного устройства» [87, с. 172].
Лавлейс предложила следующие названия данных трех разновидностей карт переменных:
1) «нулевая карта» (для вызова числа из регистра памяти с одновременной установкой нуля в регистре — по современной терминологии «считывание с разрушением информации»);
2) «удерживающая карта» (для вызова числа из регистра памяти без изменения содержания регистра — по современной терминологии «неразрушающее считывание»);
3) «доставляющая карта» (для передачи числа из арифметического устройства в память).
В письме к Лавлейс от 2 июля 1843 г. Бэбидж отмечал, что с помощью карт переменных нельзя заказать более одной переменной одновременно, так как механизм не приспособлен для этого. Практически только с 60-х годов XX в. в ЭВМ стала применяться параллельная обработка данных, т. е. совмещение во времени выполнения команд.
Для обозначения управляющих перфокарт, применяемых для ввода оператором чисел в память аналитической машины Бэбидж использовал термин «цифровая карта».
С помощью цифровых карт предполагался ввод чисел для решения конкретной задачи, в том числе констант значений логарифмов и т. д.
Важно отметить, что применение перфокарт не только обеспечивало автоматическое решение задачи на аналитической машине, но и существенно облегчало подготовительную работу для решения другой однотипной или сходной задачи. «За исключением цифровых карт, — писал Бэбидж, — все карты, однажды использованные и изготовленные для одной задачи, могут быть использованы для решения тех же задач с другими данными, поэтому нет необходимости готовить их во второй раз — они могут быть тщательно сохранены для будущего использования. Каждая формула требует своего массива карт и со временем машина будет иметь собственную библиотеку» [87, с. 173]. Иными словами, Бэбидж высказал идею создания библиотеки подпрограмм, реализованную только в начале 50-х годов ХХв.
Бэбидж следующим образом описывает процесс движения перфокарт при выполнении операций: «Средства, которые я применил, ежедневно используются при ткачестве. Они включают систему карт с различными отверстиями, которые объединяются в массив до достижения любого требуемого объема. Два больших ящика, один из которых пустой, а другой — наполненный перфорированными картами, располагаются спереди и сзади многогранной призмы. Эта призма прерывисто вращается на своей оси, и каждый раз продвигается вперед на короткое расстояние, после чего немедленно возвращается.
Карта проходит над призмой только перед каждым ходом челнока. Те карты, что прошли, падают вниз, пока не достигнут пустого ящика для сбора карт, в котором они располагаются одна над другой. При заполнении одной коробки становится другая пустая коробка для приема поступающих карт, а новая полная коробка на противоположной стороне заменяет только что опустевшую. Когда число карт на входной стороне точно соответствует числу карт на выходной, они полностью уравновешивают друг друга, так что вне зависимости от рассчитываемой формулы, крайне сложной или очень простой, сила, которая должна быть приложена, всегда остается почти той же самой» [85, с. 63].
В качестве иллюстрации процесса управления аналитической машиной с помощью перфокарт рассмотрим последовательность операций (программу работы) при расчете выражения (ab + c)d (табл. 4). Как видно из таблицы, для проведения расчета используются 14 управляющих перфокарт и 3 операционные.
Управляющие карты | Существо операций |
1 | Установить а на колонке 1 памяти |
2 | » b » 2 » |
3 | » е » 3 » |
4 | » d » 4 » |
5 | Вызвать а из памяти в арифметическое устройство |
6 | То же для b |
Операционная карта 1 (а x b = р) | |
7 | Установить р на колонке 5 памяти, где хранить для дальнейшего пользования |
8 | Вызвать р в арифметическое устройство |
9 | То же для c |
Операционная карта 2 (р + с = k) | |
10 | Установить к на колонке 6 памяти |
11 | Вызвать d в арифметическое устройство |
12 | То же для k |
Операционная кв рта 3 (d x k = p2) | |
13 | Установить р2 на колонке 7 памяти |
14 | Вывести р2 на печать или аппарат для изготовления стереотипных отпечатков |
1 | |
Примечание. Ввод исходных данных осуществляется управляющими картами 1—4. |
Для решения некоторой задачи в аналитическую машины вводятся исходные числа, записанные на цифровые перфокарты. Каждое число занимает один регистр памяти (колонку из десятичных цифровых колес), где оно хранится и используется по требованию. По окружности дисков колес выгравированы цифры от 0 до 9; каждый из дисков, насаженных на общую ось колонки, может совершать независимое вращательное движение. Результат операции также передается в память. Управляющие карты вводят колеса колонки в зацепление с зубчатыми рейками, через которые данное число (записанное на перфокарте или представляющее на колонке промежуточный результат) вводится в память. Одного оборота главного вала достаточно, чтобы установить число на колонке памяти или передать его из памяти к другой части машины.
Действие управляющих карт состоит в подъеме колес выбранных колонок таким образом, чтобы они были уравнены с зубчатыми рейками и введены в зацепление. При этом каждое колесо передвигается на число зубьев, соответствующее разряду числа. Для записи знака числа используется самое верхнее колесо в колонке. Промежуточные результаты вычислений фиксируются на колонках, которые в начале расчета устанавливаются на нуле. Каждой колонке памяти дается отдельная управляющая карта.
Генри Бэбидж впоследствии писал: «Следует отметить, что машина разработана для целей анализа, и применение аналитической машины для подсчета арифметических сумм равносильно использованию парового молота для битья орехов» или, говоря словами Лейбница: «Она сделана не для торговцев, а для обсерваторий и вычислителей» [85А с. 333].
Бэбидж считал, что аналитическая машина должна выполнять арифметические операции независимо от величины чисел, над которыми производятся операции; кроме того, она должна управлять комбинациями алгебраических символов вне зависимости от их количества, а также длины той последовательности операций, в которых они участвуют.
Из этих основных принципов Бэбидж сформулировал ряд следствий, которые на первый взгляд выглядели неправдоподобными. Он считал, что количество цифр в каждом числе, а также количество чисел, вводимых в машину, может быть неограничено; количество операций, которые могут производиться в любом порядке, может повторяться неограниченное число раз. Также может быть неограниченным число констант, переменных и функций, с которыми производятся различные операции.
Бэбидж понимал, что возможность осуществления этих принципов будет оспариваться многими, как с теоретической точки зрения, так и с точки зрения воплощения их в механической конструкции. Поэтому он приводит ряд интересных и тонких доказательств.
Бэбидж говорит, что машина, занимающая неограниченное пространство, удовлетворила бы всем выдвинутым требованиям. Но такую машину создать нельзя. Однако машину можно использовать неограниченное время.
И далее Бэбидж отмечает: «Замена бесконечности пространства бесконечностью времени позволила ограничить размер машины при сохранении ее неограниченной производительности» [85, с. 60].
Рассмотрим вслед за Бэбиджем на примере арифметических действий, как он предполагал осуществить свои идеи.
Одной из характеристик вычислительной машины является длина (количество разрядов) чисел, с которыми она может производить операции. В качестве стандарта для аналитической машины было выбрано число в пятьдесят разрядов. Бэбидж оказался прав, когда считал, что пройдет достаточно много времени, прежде чем требования науки превысят этот предел. Только в середине 50-х годов XX в. при решении некоторых задач возникла необходимость оперировать числами с большим количеством знаков.
Бэбидж отмечал, что сложение и вычитание чисел в машине должно быть одинаково быстрым независимо от количества разрядов в слагаемых. Приумножении разрядность чисел влияет на время выполнения операции. Например, необходимо перемножить два числа: а1050 + b и c1050 + d, каждое из которых состоит менее чем из ста разрядов, но более чем из пятидесяти. Непосредственно перемножить их в машине, которая оперирует только с числами до пятидесяти разрядов, нельзя. Произведение этих двух чисел будет: ас10100 +(ad + bc)1050 + bd.
Это выражение содержит четыре пары сомножителей (ас, ad, be, bd), каждый из которых состоит менее чем из пятидесяти разрядов. Поэтому такое умножение может быть выполнено в машине. Однако время умножения на машине двух чисел, каждое из которых содержит от пятидесяти до ста разрядов, будет приблизительно в четыре раза больше, чем для двух чисел длиной менее пятидесяти разрядов.
Рассуждая аналогично, Бэбидж доказал, что если количество цифр каждого сомножителя находится между ста и ста пятьюдесятью разрядами, время, требуемое для выполнения операции, будет приблизительно в девять раз больше, чем для пары сомножителей, имеющих до пятидесяти цифр. Бэбидж пришел к выводу, что если количество разрядов в числах возрастает в n раз, то время выполнения умножения чисел возрастает в n² раз. Таким образом, утверждение Бэбиджа о возможности операций с неограниченно большими числами в принципе осуществимо.
Следующий вопрос, который рассматривает Бэбидж, касается условия использования машины, как устройства, содержащего неограниченное число постоянных. Уже отмечалось, что табличные величины могут быть нанесены на перфокарты. В результате массив цифровых карт, получаемых и расставляемых самой машиной, может быть размещен в одном из ее устройств. Перфокарты могут вызываться самой машиной в том порядке, в котором они расположены. Машина может направить их для использования в соответствии с необходимой операцией. Следовательно^ условие, что неограниченное число постоянных может быть введено в машину в неограниченное время также выполняется.
Бэбидж полагал, что разработанная им машина должна хранить тысячу чисел, считая это более чем достаточным. Но если бы потребовалось хранить в десять или в сто раз больше чисел, то в принципе это возможно, поскольку структура машины достаточно проста.
Далее Бэбидж рассматривает возможность неограниченного повторения четырех действий арифметики. Она вытекает из того, что четыре перфокарты операций, пробитые определенным образом, обеспечивают выполнение четырех правил арифметики. Эти карты могут соединяться в любом количестве и в том порядке, в котором необходимо выполнить действие. Очевидно, что порядок следования различных арифметических действий может варьироваться неограниченно.
Бэбидж приходит к выводу, что условия, которые требуются для выполнения расчетов, число операций в которых не ограничено, могут быть реализованы в аналитической машине. «Способы, которые я применил, — писал Бэбидж, — однородны. Я преобразовал бесконечность пространства, которая требовалась по условиям задачи, в бесконечность времени» [85, с. 63]. Разумеется, вывод Бэбиджа относительно возможностей аналитической машины имел сугубо теоретический характер («бесконечность времени» с практической точки зрения не имеет преимуществ перед «бесконечностью пространства»). Даже наиболее производительные современные ЭВМ не в состоянии решать многие задачи из-за ограничений по емкости памяти и быстродействию. Вывод Бэбиджа представляет существенный интерес в другом отношении. Бэбидж показал принципиальную возможность решения с помощью вычислительной машины любой задачи (если это решение может быть достигнуто с цомощыо арифметических операций).
В детальном описании аналитической машины в статье Генри Бэбиджа [80] большое внимание уделено принципу зацепления, позволившему обеспечить сравнительно простое выполнение операций.
Он пишет, что первое преимущество аналитической машины состоит в использовании перфокарт, вторая «наиболее замечательная черта конструкции машины связана с принципом зацепления» [85, с. 334]. Сам Ч. Бэбидж считал механизм зацепления «наиболее выдающейся частью машины» [85, с. 53]. Это устройство дало возможность обходиться в различных случаях механически простой комбинацией рычагов, которая обеспечивала соединение и разъединение привода с любой желаемой колонкой в процессе выполнения команд программы.
Г. Бэбидж приводит пример реализации одной схемы, которую теперь мы назвали бы логической схемой совпадения.
Предположим, необходимо обеспечить некоторую логическую комбинацию (например, совпадение десяти различных «событий») [1 Событие (в общем случае логическое понятие) в машине Бэбиджа идентифицируется с проведением определенных операций.], которую можно осуществить механическим путем. При этом каждое событие должно быть представлено рычагом, поворачивающимся на своей оси и имеющим на конце блок, который держится свободно и может перемещаться вертикально независимо от несущего его рычага.
Теперь допустим, что каждый из этих рычагов по прошествии «события», которое он представляет, поставлен в такое положение, что все блоки находятся на одной вертикальной линии; тогда, если блок на самом низшем рычаге был поднят, то должны быть подняты все девять блоков вместе, а верхняя часть одного из них может быть, например, соединена со звонком. Однако, если хотя бы одно из десяти «событий» не произошло, его блок должен выйти из общего зацепления, и нижний блок должен сделать холостой ход; тогда звонка не будет.
Представленная схема совпадения соответствует, к примеру, возможности одновременного переноса во всех, где необходимо, разрядах числа после того, как полностью закончено (все «события» произошли) поразрядное сложение без переноса.
В аналитической машине, состоящей из многих отдельных цепочек движения, из которых только несколько в определенный момент времени находятся в действии, применение «принципа зацепления» весьма эффективно. Он помогает реализовать также другой важный принцип, а именно разбиение каждой цепочки движений, насколько это возможно, на короткие участки, последний из которых дает возможность осуществлять простое управление при очередном вводе механизма в работу с учетом наличия движущей силы. Очевидно, тяга при этом находится в несвязанном состоянии с другими деталями и затем может быть восстановлена любой из управляющих карт.
При сложении чисел в автоматической машине они передаются вначале из памяти в арифметическое устройство. Уменьшение числа до нуля на одной колонке заставляет поворачиваться другую на такую же величину: таким образом происходит сложение чисел на обеих колонках. Если предположить, что на каждом колесе укреплен диск с цифрами от 0 до 9 и перед колонкой имеется экран с окном для каждого диска, то во время процесса сложения цифры по одному будут проходить перед окном до тех пор, пока не получится сумма; таким образом, если 5 складывается с 7, то последовательность цифр в окне будет соответствовать 8, 9, 0, 1 и затем 2. В момент, когда 9 переходит в 0, будет сдвинут рычаг, означающий необходимость записи переноса к старшему разряду; сам перенос производится впоследствии.
В арифметическом устройстве для ускорения вычисления Бэбиджем был предложен и введен в машину механизм, названный им механизмом предварительного переноса. Бэбидж считал его одной из наиболее важных частей аналитической машины и нарисовал около 30 различных вариантов его конструкций. В настоящее время ясно, что эта составная часть машины отнюдь не одна из главных. Но устройство имеет действительно большое значение, так как в случае последовательного переноса, если он, например, имеет место во всех 50 разрядах числа, время, затрачиваемое на эту операцию, может намного превышать время основного цикла — сложения. С помощью же механизма предварительного (фактически — параллельного) переноса время цикла сложения разбивается следующим образом: 90% на чистое сложение и 10% — на перенос.
При сложении двух чисел переносы' могут происходить в любом месте, за исключением последнего; когда колесо переходит от 9 к 0, перенос возникает непосредственно. Если в числе имеется последовательность девяток, то перенос должен осуществляться во всех этих разрядах. Большое количество комбинаций при переносе обеспечивается механически принципом зацепления.
В машине имеется серия блоков для каждого разряда числа, причем нижний блок предназначается для применения в различных случаях. Верхний блок имеет выступающий рычаг, который при движении по окружности зацепляет зубчатое колесо и передвигает его на один зуб, воздействуя также на цифровой диск. Рычаг связан с нижним блоком, который передвигает его вверх и вниз. После того, как сложение окончено, в нужном месте должен произойти перенос, и рычаг признака сдвигается в сторону; это осуществляется (при управлении от главного вала) воздействием на нижний блок и через него на механизм зацепления; когда рычаг поднимается (снова при движении от главного вала), он поднимает также верхний блок, который, таким образом, обеспечивает обычный перенос.
Если в окне появляется цифра 9, рычаг признака не может быть сдвинут в сторону, но в каждом разряде, где есть девятка, другой рычаг движением от главного вала приводится в действие, вводя нижний блок в зацепление для переноса. После этого все переносы происходят одновременно. Детали механизма для предварительного переноса у Бэбиджа были хорошо проработаны для чисел до двадцати девяти разрядов.
При работе с большим количеством разрядов чисел экономия времени при использовании системы переноса становится весьма значительной, особенно с учетом того, что умножение обычно производится как последовательное сложение. Был придуман и нарисован также другой план системы переноса. Очевидно, что при многих последовательных переносах нет необходимости делать переносы непосредственно после каждого сложения. Операции сложения могут быть выполнены одно после другого и переносы запоминаются или даже производятся на отдельном колесе в каждом месте, когда они появляются; все они могут быть сделаны впоследствии, что дает весьма значительную экояомию времени. Такое суммирование (с накопленным переносом) было тщательно разработано Бэбиджем.
При сложении двух или более чисел на колонках может не остаться места для записи результатов суммы. Это происходит от недосмотра при подготовке или обработке карт, или когда расчет при решении математических проблем требует записи, превышающей возможности машины. В любом случае машина на это реагирует звуковым сигналом и останавливается.
Операция сложения в аналитической машине должна выполняться за один оборот главной оси, прерывистые периодические движения производятся эксцентриками на главной оси. Эксцентрики представляют из себя плоские диски с выступающими частями, действующими на рычаги с роликами на конце. Каждый эксцентрик должен быть двойным, т. е. иметь два ушка, причем выступ на одном соответствует впадине на другом. Такие эксцентрики довольно легко выполняются, устанавливаются и регулируются. Для выполнения операций сложения достаточно установить шесть-семь штук. На рис. 4 показан такой эксцентрик вместе с механизмом зацепления.
Рис. 4. Механизм зацепления аналитической машины
В центре внимания Бэбиджа при конструировании аналитической машины находились вопросы, связанные с выполнением операций в арифметическом устройстве.
Рис. 5. Схема выполнения операции сложения в аналитической машине
Особенно много внимания, как отмечалось выше, было уделено ускорению операции сложения. В аналитической машине сложение является основной (базовой) операцией, поскольку механизм, сконструированный для ее эффективного выполнения позволял (при сравнительно простой модификации) осуществлять другие операции.
Конструктивно суммирование двух чисел выполняется в арифметическом устройстве следующим образом. Представим себе десять ребер переменной длины от А а до Кк, размещенных на пластине (рис. 5, верхний). Вилка Р входит в зацепление с колесом N по оси m квадратного сечения. Если вилка Р находится, например, напротив цифры 6, а колесо, вращаясь, свободно перемещается вдоль пластины, то оно повернется на расстояние, соответствующее шести зубцам, а его движение передается механизму счетного устройства.
Одно число может быть сложено с любой суммой, уже подсчитанной в машине, соответствующим расположением ребер Aa, Bb и т. д. (рис. 5, слева внизу). Когда пластина PQ передвигается вниз к закрепленной пластине xz с отверстиями для ребер, цилиндрические прямозубные колеса (на рисунке не показаны) на оси pq поворачиваются на число зубьев, зависящих от положения ребер. Если колеса на pq находятся в состоянии, соответствующем, например, числу 543243, а ребра расположены (как на рисунке) в положении суммирования числа 314236, то новая сумма будет 857479. Перенос при этом может осуществляться путем прерывистого движения шестерен (внизу справа на рисунке), среди которых шестерня В будет перемещаться на 1/10 оборота при каждом обороте однозубого колеса А.
Вычитание в машине обеспечивается введением дополнительной шестерни, которая осуществляет реверс (обратный поворот) цифровых дисков: при этом, проходя перед окошком, цифры последовательно уменьшаются, и всякий раз, когда 0 проходит и появляется 9, происходит перенос. При вычитании производятся те же самые операции и используется тот же самый принцип зацепления. Таким образом, один и тот же механизм служит для сложения и вычитания; смена операций производится перемещением одного рычага.
Следует отметить, что при вычитании большего числа из меньшего должно быть сделано указание о месте нахождения высшего разряда. Это необходимо для переноса к месту слева от высшего разряда числа и в тех случаях, когда нужно пройти через ноль; если такое указание не было сделано, раздается звонок и машина останавливается.
Для аналитической машины было разработано и нарисовано несколько вариантов выполнения операции умножения. Один из них относится к умножению многоразрядных чисел с помощью последовательных сложений. Для машины этот метод был подробно разработан, причем был подготовлен ряд чертежей, поясняющих действие механизмов.
При перемножении двух чисел, каждое из которых с любым числом знаков от одного до тридцати, необходимо для экономии времени установить, какой из сомножителей имеет меньшее число значащих цифр. Для этого были разработаны специальные механизмы, названные цифровыми счетными устройствами. Меньшее из двух чисел становится множителем. Оба числа вводятся в арифметическое устройство и размещаются на соответствующих колонках. При выполнении умножения способом последовательных сложений цифры множителя соответственно уменьшаются до нуля; во время проведения операции для любой одной цифры множителя эксцентрик на его колесе выталкивает рычаг, который разрывает связь и систему зацепления для сложения, происходит просто ход; при этом следующий оборот главной оси связан с ходом вместо сложения; затем связи восстанавливаются, и последовательные сложения продолжаются.
Умножение должно обычно производиться от высшего разряда к низшему. Произведение^ обычно содержит накопленную ошибку вследствие округления цифр в каждом числе, с которым продолжают работать. Если тем не менее при записи числа последовательных сложений, которые в конце умножения должны давать сумму всех цифр множителя, известна максимально возможная ошибка, то при необходимости иметь точный результат должна быть проведена коррекция. Например, машина может быть использована для деления пополам некоторого числа и сложения этой величины с последними цифрами результата, где бы он ни был округлен.
Бэбидж разработал несколько вариантов выполнения операций деления на машине, в том числе при помощи таблиц. Все разработки сопровождались теоретическими расчетами и рисунками. Наиболее эффективным оказался метод последовательного вычитания: делитель и делимое вводятся в счетное устройство, затем производится последовательное вычитание, число вычитаний записывается.
Бэбидж впервые предложил идею программного управления ходом вычислений. В связи с этим самой важной характеристикой аналитической машины, которую не оценил сам ученый, стала возможность выполнения команды, получившая в настоящее время название команды условного перехода.
[1 Математически условный переход представляет собой операцию вида:
A = Am при ω =1
и Ai + 1 при ω = 0,
где Ai — адрес команды с кодом условного перехода, хранящийся в счетчике команд (СК); Аm — адресная часть команды, находящаяся в регистре команд (РК); ω — признак результата предыдущей операции. При ω = 0 происходит увеличение содержимого СК на единицу и переход к следующей команде, при ω = 1 — засылка в СК адреса команды, находящейся в РК, и переход к требуемой части программы.]
Суть ее заключается в следующем: при Программировании математику нет необходимости знать, на какой ступени расчета изменится признак, который оказывает влияние на выбор хода расчета. Математик инструктирует машину, которая самостоятельно выбирает, по какому пути идти в случае появления определенного или нескольких признаков; программу можно составить совершенно различными способами: предусмотреть ее продолжение, перейти к другой части, пропустив ряд инструкций, попеременно переходить к разным частям программы и т. д.
Например, при расчете формулы, состоящей из нескольких членов, машина периодически проверяет необходимость продолжения или окончания расчета в случае, если все члены уравнения уже подсчитаны. В зависимости от промежуточного результата машина самостоятельно выбирает необходимый путь. Такой переход, так называемый условный переход (в соответствии с условием), произойдет в некоторый момент, который не интересует математика; машина определит его сама.
Введение операции условного перехода знаменовало собой начало замены логических, а не только вычислительных, возможностей человека машинами. С кодом условного перехода в вычислительных машинах связан и принцип обратной связи. Информационная обратная связь осуществляется между арифметическим устройством и устройством управления: изменение результата в арифметическом устройстве обуславливает выбор устройством управления той или иной команды для дальнейшего выполнения. Рассмотрим простой пример. Необходимо выбрать из двух чисел большее и продолжать с ним работать дальше. Числа должны быть помещены в двух колонках памяти, заранее подготовленных для их принятия; для этого перфокарты должны быть поставлены так, чтобы числа вычитались друг из друга. В одном случае должен получиться остаток, в другом — перенос, связанный с движением рычага. При переносе рычаг перемещается в самое высокое положение, соответствующее отрицательному результату, что в свою очередь позволяет ввести в работу массив предварительно подготовленных карт.
Для вывода данных из аналитической машины предусматривалось использование перфокарт. Кроме того, машина должна была печатать на бумаге конечные и промежуточные результаты, по желанию вычислителя, в одном или в двух экземплярах. Г. Бэбидж писал, что печатание было совершенно необходимым требованием, без выполнения которого вычислительную машину нельзя было применять для научных целей. Постоянная опасность ошибок при переписывании чисел делала сомнительным получение точных результатов без применения печатающих устройств. С помощью механизма, предложенного Бэбиджем, машина должна набирать цифры или буквы и печатать результаты расчета или таблицы чисел.
Бэбидж предлагал также создать механизм для перфорирования цифровых результатов на бланке или металлических пластинках. Для хранения информации в памяти ученый собирался использовать не только перфокарты, но и металлические диски, которые будут поворачиваться на оси. Металлические пластинки и металлические диски могут теперь рассматриваться нами как далекие прототипы магнитных карт и магнитных дисков.
Только в одном отношении аналитическая машина не была автоматической. Функции, записанные таблично, должны были быть заранее отперфорированы. Так, например, цифровая карта, входящая в таблицу логарифмов, выглядела следующим образом:
Число | Табличное значение | |||||||||
2 | 3 | 0 | 3 | 3 | 6 | 2 | 2 | 9 | 3 | 9 |
• | • | º | • | • | • | • | • | • | • | • |
• | • | º | • | • | • | • | • | • | • | • |
º | • | º | • | • | • | º | º | • | • | • |
º | º | º | º | º | • | º | º | • | º | • |
º | º | º | º | º | • | º | º | • | º | • |
º | º | º | º | º | • | º | º | • | º | • |
º | º | º | º | º | º | º | º | • | º | • |
º | º | º | º | º | º | º | º | • | º | • |
º | º | º | º | º | º | º | º | • | º | • |
на карте десятичный логарифм числа 2303 (слева) равен 3,622939 (справа), отперфорированные (черные) отверстия соответствуют коду числа.
При необходимости найти величину функции предполагалось, что в соответствующем окошке машины будет показан ее аргумент и прозвенит предупредительный звонок. Работающий на машине должен вставить перфокарту, в которой пробиты значения этого аргумента и функции. И здесь Бэбидж предусмотрел возможность исправления ошибки, если будет вставлена карта с неправильным аргументом. Машина проводит проверку считыванием (эту функцию выполняют и современные цифровые вычислительные машины). Условием дальнейшей работы машины является равная нулю разность двух аргументов; в противном случае карточка отбрасывается, дается звонок, и машина, по выражению Бэбиджа, требует «точной интеллектуальной пищи».
Предвосхищая будущее вычислительных машин, Бэбидж писал: «Кажется наиболее вероятным, что она (аналитическая машина. — Авт.) рассчитывает гораздо быстрее по соответствующим формулам, чем пользуясь своими же собственными таблицами» [85, с. 59]. И действительно, в современных вычислительных машинах существует обширная библиотека стандартных подпрограмм, с помощью которой рассчитываются функции различной степени сложности. Интересно, что термин «библиотека» для данного применения также был впервые употреблен Чарльзом Бэбиджем.
По результатам разработки аналитической машины было сделано свыше 200 весьма подробных, выполненных в масштабе, чертежей машины и ее отдельных узлов, в общей сложности включающих 50 000 деталей. Некоторые из этих чертежей были выгравированы на деревянных досках, и с них по методу, предложенному Бэбиджем, были сделаны оттиски. Среди этих оттисков, получивших некоторое распространение, отметим следующие: план зацепления цифровых колес для выполнения операции сложения; разрез колес и осей; разрез корпуса машины; узел сложения; план механизма переноса десятков; часть разреза блока предварительного переноса и другие. Все эти рисунки были выполнены в середине 30-х годов. В 1840 г. Бэбидж составил один из наиболее общих планов (№ 25) аналитической машины, который был литографирован (рис. 5 [53]). На этой литографии стоит дата 6 августа 1840 г. С чертежами аналитической машины Бэбидж ознакомил ученых Великобритании и других стран.
Большое число всевозможных вариантов чертежей с трудом позволяет установить, какая комбинация узлов может быть признана наилучшей. К отдельным частям машины было написано свыше четырехсот замечаний.
В процессе конструирования машины Бэбидж разработал систему изображений механических величин [29] и внес усовершенствование в методы обработки металлов [56].
Конструкция аналитической машины была описана в статье Менабреа [79], позднее — в работе Генри Бэбиджа [80]. Теоретические возможности машины наиболее полно раскрыты в примечаниях Лавлейс к переводу статьи Менабреа.
Рис. 6. Общий план аналитической машины (рисунок Ч. Бэбиджа, 1840 г.)
В примечании А Лавлейс сравнивает две машины — разностную и аналитическую. Она отмечает, что вычислительные машины представляют собой совершенно новую область науки и техники и много внимания уделяет выработке соответствующей терминологии. Лавлейс указывает, что аналитическая машина может работать не только с числами: «Предположим, например, что основные соотношения о высоте звуков в науке о гармонии и музыкальной композиции достигли бы большой выразительности и поддавались бы такой обработке, что машина смогла бы соединять искусно написанные музыкальные отрывки любой степени сложности или длины» [85, с. 249].
Рис. 6 (продолжение).
В основном же примечание А относится к сравнительной оценке двух машин. Лавлейс пишет, что аналитическая машина по отношению к разностной играет такую же роль, какую играет анализ по отношению к арифметике. Разностная машина могла выполнять только сложение: при работе на ней другие действия арифметики сводились к серии сложений. Аналитическая же машина могла выполнять все четыре действия арифметики непосредственно. Разностная машина могла производить только табулирование, аналитическая же машина много различных операций.
«Фактически аналитическая машина может быть описана как материальное выражение функции любой степени общности и сложности как, например,
F(X, У, Z; log X, sin Y, Xp...),
которая, в свою очередь, является функцией многих других функций любого числа переменных. Нет конца демаркационной линии, ограничивающей возможности аналитической машины. Фактически аналитическую машину можно рассматривать как материальное и механическое выражение анализа. Она позволяет осуществить полное управление при выполнении действий над алгебраическими и цифровыми символами» [85, с. 245].
Интересно замечание Лавлейс о роли математики: она отмечала, что математика является не только обширным набором абстрактных и непреложных истин с присущей ей красотой, симметрией и законченностью, но это единственный язык, «с помощью которого мы можем одинаково выражать всеобъемлющие факты натурального мира» [85, с. 256].
Лавлейс очень высоко оценивала значение перфокарт. «Принцип, который Жаккар разработал для получения посредством перфокарт наиболее сложных рисунков при производстве парчовых материй, позволил сделать аналитическую машину устройством для реализации принципов абстрактной алгебры» и далее она образно описала назначение перфокарт: «Карты только указывают сущность операций, которые должны быть совершены, и адреса переменных, на которые эти действия направлены. Можно сказать достаточно точно, что аналитическая машина ткет алгебраические узоры, как ткацкий станок Жаккара — цветы и листья» [85, с. 252].
В примечании В Лавлейс рассматривает запоминающее устройство («склад») аналитической машины и предлагает систему графического обозначения данных, содержащихся в регистре памяти. Например, кружок предлагается для записи в нем знака числа, квадрат — для записи символа переменной, значение которой хранится в регистре и т. д.
В примечании С Лавлейс рассматривает способ возврата одиночной перфокарты или группы перфокарт с целью их повторного использования любое число раз.
Повторное использование перфокарт при решении некоторой задачи имеет существенное значение, поскольку нередко возникает необходимость в многократном повторении той или иной последовательности операций.
Примечание D представляет существенный интерес для истории вычислительных машин. Здесь впервые дана программа машинного решения задачи (решение системы двух линейных уравнений с двумя неизвестными). Программа записана в виде таблицы, причем в одном случае (операция записи суммы двух слагаемых в ячейку, ранее занятую одним из слагаемых) Лавлейс пользуется символикой, характерной для современного программирования. В примечании D впервые применен распространенный в настоящее время термин «рабочая ячейка» для обозначения регистра памяти.
В примечании Е Лавлейс уточняет и развивает соображения Менабреа о возможности расчета на аналитической машине функций вида: (a+bx) (А+В cos х).
Менабреа писал, что аналитическая машина приспособлена не только для производства расчетов с числами, она может производить операции и с аналитическими выражениями. При этом на одной колонке машины могут быть размещены как коэффициенты при функциях, так и сами функции, например, коэффициенты — в нижней части колонки, а функции — в верхней. При таком расположении можно проводить расчеты только с коэффициентами, не видоизменяя функции.
Далее Лавлейс приводит более сложный и более общий пример — вычисление тригонометрической функции. Лавлейс считает, что тригонометрические ряды не только удобны для иллюстрации работы машины, но представляют, прежде всего, практический интерес. Рассматривая возможности машины получать численные результаты при работе с аналитическими выражениями, Лавлейс приходит к следующим выводам:
1. Машина может рассчитывать численное значение всей формулы.
2. Можно рассчитать численные значения каждого члена формулы или ряда и хранить эти результаты раздельно. Для этого машина должна иметь достаточное число устройств.
3. Можно рассчитывать численные значения отдельных элементов каждого члена (формулы) и хранить все результаты раздельно. Можно, например, потребовать рассчитать каждый коэффициент отдельно от своей переменной, тогда в некоторых случаях машина должна иметь регистры с двумя результатами для каждого члена, содержащими как переменную, так и коэффициент.
«Итак, — отмечает Лавлейс, — существует много путей для получения численных значений различных частей алгебраической формулы, и это существенно при алгебраическом характере аналитической машины. Многие лица, недостаточно знакомые с математикой, считают, что роль машины сводится к получению результатов в цифровой форме, а природа самой обработки данных должна быть арифметической и цифровой более чем алгебраической и аналитической. Это заблуждение. Машина может обрабатывать и объединять цифровые величины точно так, как если бы они были буквами или любыми другими символами общего характера, и фактически она может выдать результаты в алгебраической форме. . . Она может выдавать результаты трех видов: символические результаты, . . численные результаты. . . и алгебраические в буквенных обозначениях» [85, с. 273].
Таким образом Лавлейс показывает, что возможности аналитической машины выходят за пределы выполнения вычислительных операций и представляют более общий научный интерес.
В примечании Е Лавлейс впервые вводит понятие цикла операций (т. е. повторяемости группы операций) при машинном решении задач, а также понятия цикла циклов (т. е. кратных циклов). Как известно, оба понятия широко используются в современном программировании.
В примечании F содержится, в частности, интересное замечание Лавлейс о возможностях аналитической машины получить решение такой задачи, которую из-за трудности вычислений практически невозможно решить вручную. Новизна мысли заключается в том, что машина рассматривается не как устройство, заменяющее человека, а как устройство, способное выполнить работу, превышающую практические возможности человека. Заметим, что значение современных ЭВМ для научно-технического прогресса основано именно на том, что они в ряде случаев выполняют работу, которую без ЭВМ выполнить невозможно.
В заключительном примечании G дана программа вычисления чисел Бернулли, в которой Лавлейс продемонстрировала возможности программирования на аналитической машине, рассмотренные в предыдущих примечаниях (циклические операции, циклы в цикле и др.). Таким образом возможность решения сложных задач с помощью аналитической машины была убедительно показана на конкретном примере.
Примечание G интересно и в другом отношении. Ранее Бэбидж писал о возможности выполнения операций математического анализа на машине. При этом он отмечал, что наиболее существенными методами анализа являются дифференциальное и интегральное исчисление, а также комбинаторный анализ Гинденбурга. Хотя существуют и другие методы, но именно эти два важнейших удобнее всего осуществить на машине. Бэбидж иллюстрирует свою мысль задачами, относящимися, например, к теории движения Луны. Рассматривая особенности аналитической машины, Лавлейс приходит к выводу, что расчеты в задачах классического и комбинаторного анализа хорошо подходят для машинной обработки.
Широкую известность получило замечание Лавлейс о принципиальных возможностях аналитической машины: «Аналитическая машина не претендует на то, чтобы создавать что-то действительно новое. Машина может выполнить все то, что мы умеем ей предписать. Она может следовать анализу, но она не может предугадать какие-либо аналитические зависимости или истины. Функции машины заключаются в том, чтобы помочь нам получить то, с чем мы уже знакомы» [85, с. 284]. Это замечание Лавлейс было рассмотрено А. Тьюрингом в его знаменитой работе «Может ли машина мыслить?» (раздел «Возражения леди Лавлейс») [101]. На наш взгляд, важно отметить, что, во-первых, представления Лавлейс о принципиальных возможностях аналитической машины вполне обоснованы (базируются на характеристиках именно этой машины) и, во-вторых, нет достаточных оснований оценивать замечание Лавлейс как верное (или неверное) применительно к современным ЭВМ, особенно, перспективам их эволюции. Дело в том, что качественный скачок в развитии вычислительной техники и программирования, связанный с прогрессом в области ЭВМ, требует иных подходов и критериев.
Как было показано выше, круг вопросов, рассмотренных в «Примечаниях» Лавлейс, весьма широк. Хотя Бэбидж написал свыше 70 книг и статей по различным вопросам, а также составил большее число неопубликованных описаний аналитической машины, но полного и доступного описания и, главное, анализа возможностей машины для решения различных задач он так и не сделал. Бэбидж говорил, что слишком занят разработкой машины, чтобы уделять время ее описанию. Работа Лавлейс не только заполнила этот пробел, но и содержала глубокий анализ особенностей аналитической машины. Важный итог работы Лавлейс заключается в создании основ программирования на универсальных цифровых вычислительных машинах.
Усвоив идеи Бэбиджа и обладая глубокими познаниями в математике, А. Лавлейс с большой энергией проповедует эти идеи, стремясь сделать их широко известными и понятными, стараясь заинтересовать ученых работами Бэбиджа; для этого она использует свои обширные связи и знакомства. Наряду с этим она разрабатывает некоторые чертежи для машины Бэбиджа и исследует вопросы, связанные с применением в машине двоичной системы счисления.
Прекрасный популяризатор идей Бэбиджа Лавлейс настолько хорошо понимала его работу, что описала принципы действия аналитической машины с четкостью, которой не ожидал сам Бэбидж. Он неоднократно повторял, что представления Лавлейс о его работе были яснее, чем его собственные, и даже отмечал, что А. Лавлейс исправила ошибки в его анализе расчета чисел Бернулли.
Мы уже подчеркивали, что она сама высказала ряд идей, получивших широкое применение только в настоящее время. Своими разработками и мыслями А. Лавлейс оказывала влияние и на Бэбиджа.