1842—1848 годы Бэббидж посвятил почти исключительно созданию аналитической машины. В это время он разработал теоретические основы машины и уяснил огромные возможности, которые могут иметь подобные устройства. Без какой бы то ни было финансовой поддержки, Бэббидж продолжал работу, используя собственные средства. Он нашел чертежников и рабочих, которые работали у него дома. Как и при изготовлении разностной машины, он решил начать работу с выполнения модели. В процессе работы он постоянно вносил изменения в конструкцию машины и ставил бесконечные эксперименты.
Часть «Аналитической машины»
Не окончив первую модель машины, Бэббидж принимается за следующую. Но затем он временно прекращает работу над аналитической машиной, так как в 1848 г. решает разработать полный комплект чертежей для второй разностной машины. В этих чертежах должны были быть отражены все усовершенствования, к которым Бэббидж пришел, создавая аналитическую машину. В 1849 г. он закончил эту работу.
В 1849 г., закончив чертежи разностной машины, Бэббидж возобновил работу над аналитической. К тому времени у него сложилось отчетливое представление о машине, как об устройстве, позволяющем заменить труд многих вычислителей. Человек-вычислитель, проводя расчет без машины, использует следующие средства: ручной счетный прибор для производства арифметических действий; расчетный бланк для записи промежуточных результатов и порядка расчета, т. е. программу вычислений; справочные таблицы и собственные соображения относительно последовательности выполнения операций. Бэббидж разрабатывает машину с такой же функциональной структурой; она включает три основных блока.
|
Блок-схема аналитической машины
Первое устройство, которое Бэббидж называет «store» предназначено для хранения цифровой информации на регистрах из колес; в современных машинах это—запоминающее устройство.
Во втором устройстве с числами, взятыми из памяти, проводятся цифровые операции; у Бэббиджа оно носит название «mill», в настоящее время — арифметическое устройство.
Третье устройство управляет последовательностью операций, выборкой чисел, с которыми производятся операции, и выводом результатов. Бэббидж оставил это устройство без названия; по современной терминологии этот «мозг» машины называется устройством управления.
В конструкцию аналитической машины также входило устройство ввода-вывода.
Предполагая, что скорость движущихся частей машины не превышает 40 фут/мин (12 м/мин), Бэббидж оценивал ее быстродействие следующими цифрами: сложение (вычитание) двух 50-разрядных чисел производится со скоростью 60 сложений в минуту или 1 операция в секунду; умножение двух 50-разрядных чисел — со скоростью 1 операция в минуту; деление числа из 100 разрядов на число из 50 разрядов— со скоростью 1 операция в минуту.
Перфокарты, с помощью которых Бэббидж предполагал автоматизировать работу аналитической машины, могут быть разделены на две основные группы: операционные и управляющие.
С помощью операционных перфокарт осуществлялись сложение, вычитание, умножение и деление чисел, находящихся в арифметическом устройстве. Операционные перфокарты выглядели так:
С помощью управляющих перфокарт осуществлялась передача чисел как внутри машины (из памяти в арифметическое устройство и обратно), так и в системе — «человек-машина» (ввод оператором новых чисел в память машины и вывод результатов вычислений на печать).
|
Для обозначения управляющих перфокарт, с помощью которых осуществлялась передача чисел между памятью и арифметическим устройством, Бэббидж использовал термин «карты переменных». В письме к Лавлейс от 30 июня 1843 г. Бэббидж писал, что в аналитической машине «используются только три вида карт переменных:
1) карты, с помощью которых переменные выводятся из памяти в счетное устройство, на колонках при этом остается нуль;
2) карты, с помощью которых переменные выводятся из памяти в счетное устройство, при этом величина их в памяти сохраняется;
3) карты, с помощью которых можно вызвать любую нулевую переменную с целью получения результата из счетного устройства».
Лавлейс предложила следующие названия данных трех разновидностей карт переменных:
1) «нулевая карта» (для вызова числа из регистра памяти с одновременной установкой нуля в регистре — по современной терминологии «считывание с разрушением информации»);
2) «удерживающая карта» (для вызова числа из регистра памяти без изменения содержания регистра — по современной терминологии «неразрушающее считывание»);
3) «доставляющая карта» (для передачи числа из арифметического устройства в память).
Важно отметить, что применение перфокарт не только обеспечивало автоматическое решение задачи на аналитической машине, но и существенно облегчало подготовительную работу для решения другой однотипной или сходной задачи.
|
Для решения некоторой задачи в аналитическую машину вводятся исходные числа, записанные на цифровые перфокарты. Каждое число занимает один регистр памяти (колонку из десятичных цифровых колес), где оно хранится и используется по требованию. По окружности дисков колес выгравированы цифры от 0 до 9; каждый из дисков, насаженных на общую ось колонки, может совершать независимое вращательное движение. Результат операции также передается в память. Управляющие карты вводят колеса колонки в зацепление с зубчатыми рейками, через которые данное число (записанное на перфокарте или представляющее на колонке промежуточный результат) вводится в память. Одного оборота главного овала достаточно, чтобы установить число на колонке памяти или передать его из памяти к другой части машины.
Бэббидж считал, что аналитическая машина должна выполнять арифметические операции независимо от величины чисел, над которыми производятся операции; кроме того, она должна управлять комбинациями алгебраических символов вне зависимости от их количества, а также длины той последовательности операций, в которых они участвуют.
Из этих основных принципов Бэббидж сформулировал ряд следствий, которые на первый взгляд выглядели неправдоподобными. Он считал, что количество цифр в каждом числе, а также количество чисел, вводимых в машину, может быть неограничено; количество операций, которые могут производиться в любом порядке, может повторяться неограниченное число раз. Также может быть неограниченным число констант, переменных и функций, с которыми производятся различные операции.
Бэббидж полагал, что разработанная им машина должна хранить тысячу чисел, считая это более чем достаточным. Но если бы потребовалось хранить в десять или в сто раз больше чисел, то в принципе это возможно, поскольку структура машины достаточно проста.
Далее Бэббидж рассматривает возможность неограниченного повторения четырех действий арифметики. Она вытекает из того, что четыре перфокарты операций, пробитые определенным образом, обеспечивают выполнение четырех правил арифметики. Эти карты могут соединяться в любом количестве и в том порядке, в котором необходимо выполнить действие. Очевидно, что порядок следования различных арифметических действий может варьироваться неограниченно.
Бэббидж приходит к выводу, что условия, которые требуются для выполнения расчетов, число операций в которых не ограничено, могут быть реализованы в аналитической машине.
В аналитической машине сложение является основной (базовой) операцией, поскольку механизм, сконструированный для ее эффективного выполнения, позволял осуществлять другие операции.
Вычитание в машине обеспечивается введением дополнительной шестерни, которая осуществляет реверс (обратный поворот) цифровых дисков: при этом, проходя перед окошком, цифры последовательно уменьшаются, и всякий раз, когда 0 проходит и появляется 9, происходит перенос. При вычитании производятся те же самые операции и используется тот же самый принцип зацепления. Таким образом, один и тот же механизм служит для сложения и вычитания; смена операций производится перемещением одного рычага.
Следует отметить, что при вычитании большего числа из меньшего должно быть сделано указание о месте нахождения высшего разряда. Это необходимо для переноса к месту слева от высшего разряда числа и в тех случаях, когда нужно пройти через ноль; если такое указание не было сделано, раздается звонок и машина останавливается.
Для аналитической машины было разработано и нарисовано несколько вариантов выполнения операции умножения. Один из них относится к умножению много разрядных чисел с помощью последовательных сложений. Для машины этот метод был подробно разработан, причем был подготовлен ряд чертежей, поясняющих действие механизмов.
При перемножении двух чисел, каждое из которых с любым числом знаков от одного до тридцати, необходимо для экономии времени установить, какой из сомножителей имеет меньшее число значащих цифр. Для этого были разработаны специальные механизмы, названные цифровыми счетными устройствами. Меньшее из двух чисел становится множителем. Оба числа вводятся в арифметическое устройство и размещаются на соответствующих колонках. При выполнении умножения способом последовательных сложений цифры множителя соответственно уменьшаются до нуля; во время проведения операции для любой одной цифры множителя эксцентрик на его колесе выталкивает рычаг, который разрывает связь и систему зацепления для сложения, происходит просто ход; при этом следующий оборот главной оси связан с ходом вместо сложения; затем связи восстанавливаются, и последовательные сложения продолжаются.
Бэббидж разработал несколько вариантов выполнения операций деления на машине, в том числе при помощи таблиц. Все разработки сопровождались теоретическими расчетами и рисунками. Наиболее эффективным оказался метод последовательного вычитания: делитель и делимое вводятся в счетное устройство, затем производится последовательное вычитание, число вычитания записывается.
Бэббидж впервые предложил идею программного управления ходом вычислений. В связи с этим самой важной характеристикой аналитической машины, которую не оценил сам ученый, стала возможность выполнения команды, получившая в настоящее время название команды условного перехода. Суть ее заключается в следующем: при программировании математику нет необходимости знать, на какой ступени расчета изменится признак, который оказывает влияние на выбор хода расчета. Математик инструктирует машину, которая самостоятельно выбирает, по какому пути идти в случае появления определенного или нескольких признаков; программу можно составить совершенно различными способами: предусмотреть ее продолжение, перейти к другой части, пропустив ряд инструкций, попеременно переходить к разным частям программы и т. д.
Введение операции условного перехода знаменовало собой начало замены логических, а не только вычислительных, возможностей человека машинами. С кодом условного перехода в вычислительных машинах связан и принцип обратной связи. Информационная обратная связь осуществляется между арифметическим устройством и устройством управления: изменение результата в арифметическом устройстве обуславливает выбор устройством управления той или иной команды для дальнейшего выполнения. Рассмотрим простой пример. Необходимо выбрать из двух чисел большее и продолжать с ним работать дальше. Числа должны быть помещены в двух колонках памяти, заранее подготовленных для их принятия; для этого перфокарты должны быть поставлены так, чтобы числа вычитались друг из друга. В одном случае должен получиться остаток, в другом — перенос, связанный с движением рычага. При переносе рычаг перемещается в самое высокое положение, соответствующее отрицательному результату, что в свою очередь позволяет ввести в работу массив предварительно подготовленных карт.
Для вывода данных из аналитической машины предусматривалось использование перфокарт. Кроме того, машина должна была печатать на бумаге конечные и промежуточные результаты, по желанию вычислителя, в одном или в двух экземплярах. Г. Бэббидж писал, что печатание было совершенно необходимым требованием, без выполнении которого вычислительную машину нельзя было применять для научных целей. Постоянная опасность ошибок при переписывании чисел делала сомнительным получение точных результатов без применения печатающих устройств. С помощью механизма, предложенного Бэббиджем, машина должна набирать цифры или буквы и печатать результаты расчета или таблицы чисел.
Бэббидж предлагал также создать механизм для перфорирования цифровых результатов на бланке или металлических пластинках. Для хранения информации в памяти ученый собирался использовать не только перфокарты, но и металлические диски, которые будут поворачиваться на оси. Металлические пластинки и металлические диски могут теперь рассматриваться нами как далекие прототипы магнитных карт и магнитных дисков.
Только в одном отношении аналитическая машина не была автоматической. Функции, записанные таблично, должны были быть заранее отперфорированы.
Предвосхищая будущее вычислительных машин, Бэббидж писал: «Кажется наиболее вероятным, что она рассчитывает гораздо быстрее по соответствующим формулам, чем пользуясь своими же собственными таблицами». И действительно, в современных вычислительных машинах существует обширная библиотека стандартных подпрограмм, с помощью которой рассчитываются функции различной степени сложности. Интересно, что термин «библиотека» для данного применения также был впервые употреблен Чарльзом Бэббиджем. О результатам разработки аналитической машины было сделано свыше 200 весьма подробных, выполненных в масштабе, чертежей машины и ее отдельных узлов, в общей сложности включающих 50 000 деталей. Некоторые из этих чертежей были выгравированы на деревянных досках, и с них по методу, предложенному Бэббиджем, были сделаны оттиски. Среди этих оттисков, получивших некоторое распространение, отметим следующие: план зацепления цифровых колес для выполнения операции сложения; разрез колес и осей; разрез корпуса машины; узел сложения; план механизма переноса десятков; часть разреза блока предварительного переноса и другие. Все эти рисунки были выполнены в середине 30-х годов. В 1840 г. Бэббидж составил один из наиболее общих планов аналитической машины, который был литографирован. На этой литографии стоит дата 6 августа 1840 г. С чертежами аналитической машины Бэббидж ознакомил ученых Великобритании и других стран.
Возможности аналитической машины в «Примечаниях переводчика» А. Лавлейс. Она отмечает, что вычислительные машины представляют собой совершенно новую область науки и техники и много внимания уделяет выработке соответствующей терминологии. Лавлейс указывает, что аналитическая машина может работать не только с числами: «Предположим, например, что основные соотношения о высоте звуков в науке о гармонии и музыкальной композиции достигли бы большой выразительности и поддавались бы такой обработке, что машина смогла бы соединять искусно написанные музыкальные отрывки любой степени сложности или длины».
Лавлейс пишет, что аналитическая машина по отношению к разностной играет такую же роль, какую играет анализ по отношению к арифметике. Разностная машина могла выполнять только сложение. Аналитическая же машина могла выполнять все четыре действия арифметики непосредственно. Разностная машина могла производить только табулирование, аналитическая же машина много различных операций.
Потом Лавлейс рассматривает запоминающее устройство аналитической машины и предлагает систему графического обозначения данных, содержащихся в регистре памяти. Например, кружок предлагается для записи в нем знака числа, квадрат — для записи символа переменной, значение которой хранится в регистре и т. д.
Далее Лавлейс впервые вводит понятие цикла операций (т. е. повторяемости группы операций) при машинном решении задач, а также понятия цикла циклов (т. е. кратных циклов). Как известно, оба понятия широко используются в современном программировании.
В примечании Р содержится, в частности, интересное замечание Лавлейс о возможностях аналитической машины получить решение такой задачи, которую из-за трудности вычислений практически невозможно решить вручную. Новизна мысли заключается в том, что машина рассматривается не как устройство, заменяющее человека, а как устройство, способное выполнить работу, превышающую практические возможности человека. Заметим что значение современных ЭВМ для научно-технического прогресса основано именно на том, что они в ряде случаев выполняют работу, которую без ЭВМ выполнить невозможно.
В заключительном примечании дана программа вычисления чисел Бернулли, в которой Лавлейс продемонстрировала возможности программирования на аналитической машине, рассмотренные в предыдущих примечаниях (циклические операции, циклы в цикле и др.). Таким образом возможность решения сложных задач с помощью аналитической машины была убедительно показана на конкретном примере.
Широкую известность получило замечание Лавлейс о принципиальных возможностях аналитической машины: «Аналитическая машина не претендует на то, чтобы создавать что-то действительно новое. Машина может выполнить все то, что мы умеем ей предписать. Она может следовать анализу, но она не может предугадать какие-либо аналитические зависимости или истины. Функции машины заключаются в том, чтобы помочь нам получить то, с чем мы уже знакомы».
Хотя Бэббидж написал свыше 70 книг и статей по различным вопросам, а также составил большее число неопубликованных описаний аналитической машины, но полного и доступного описания и, главное, анализа возможностей машины для решения различных задач он так и не сделал. Бэббидж говорил, что слишком занят разработкой машины, чтобы уделять время ее описанию. Работа Лавлейс не только заполнила этот пробел, но и содержала глубокий анализ особенностей аналитической машины. Важный итог работы Лавлейс заключается в создании основ программирования на универсальных цифровых вычислительных машинах.