100 великих изобретений - Константин Рыжов
Шрифт:
Интервал:
Закладка:
Этот же принцип управляющих перфокарт Бэббидж предполагал использовать в своей аналитической машине. Над ее устройством он работал в течение почти сорока лет: с 1834-го до конца своей жизни в 1871 году, но так и не смог ее закончить. Однако после него осталось более 200 чертежей машины и ее отдельных узлов, снабженных множеством подробных примечаний, объясняющих их работу. Все эти материалы представляют огромный интерес и являются одним из удивительнейших в истории техники примеров научного предвидения.
По мысли Бэббиджа, аналитическая машина должна была включать четыре основных блока.
Первое устройство, которое Бэббидж назвал «мельница», было предназначено для выполнения четырех основных арифметических действий. Второе устройство — «склад» — предназначалось для хранения чисел (исходных, промежуточных и окончательных результатов). Исходные числа направлялись в арифметическое устройство, а промежуточные и конечные результаты получались из него. Основным элементом двух этих блоков были регистры из десятичных счетных колес. Каждое из них могло устанавливаться в одном из десяти положений и таким образом «запоминать» один десятичный знак. Память машины должна была включать в себя 1000 регистров по 50 числовых колес в каждом, то есть в ней можно было хранить 1000 пятидесятизначных чисел. Скорость выполняемых вычислений напрямую зависела от скорости вращения цифровых колес. Бэббидж предполагал, что сложение двух 50-разрядных чисел будет занимать 1 секунду. Для переноса чисел из памяти в арифметическое устройство и обратно предполагалось использовать зубчатые рейки, которые должны были зацепляться с зубцами на колесах. Каждая рейка передвигалась до тех пор, пока колесо не занимало нулевое положение. Движение передавалось стержнями и связями в арифметическое устройство, где посредством другой рейки использовалось для перемещения в нужное положение одного из колес регистра. Базовой операцией аналитической машины, как и разностной, являлось сложение, а остальные сводились к ней. Для того чтобы вращать множество шестеренок, требовалось значительное внешнее усилие, которое Бэббидж рассчитывал получить за счет использования парового двигателя.
Третье устройство, управлявшее последовательностью операций, передачей чисел, над которыми производились операции, и выводом результатов, конструктивно представляло из себя два жаккаровых перфокарточных механизма. Перфокарты Бэббиджа отличались от перфокарт Жаккара, которыми управлялась только одна операция — подъем нити для получения нужного узора в процессе изготовления ткани. Управление работой аналитической машины включало различные виды операций, для каждой из которых требовался специальный вид перфокарт. Бэббидж выделил три основных вида перфокарт: операционные (или карты операций), переменные (или карты переменных) и числовые. Операционные перфокарты осуществляли управление машиной. Согласно выбитым на них командам происходило сложение, вычитание, умножение и деление чисел, находившихся в арифметическом устройстве.
Одной из наиболее дальновидных идей Бэббиджа было введение в совокупность команд, задаваемых последовательностью операционных перфокарт, команды условного перехода. Самого по себе программного управления (без использования условного перехода) было бы недостаточно для эффективной реализации сложной вычислительной работы. Линейная последовательность операций строго определена во всех пунктах. Это дорога известна во всех деталях до самого конца. Понятие «условный переход» означает переход вычислительной машины к другому участку программы, если предварительно выполняется некоторое условие. Имея возможность использовать команду условного перехода, составитель машинной программы был не обязан знать, по какой ступени расчета изменится признак, который оказывает влияние на выбор хода расчета. Применение условного перехода позволяло у каждой развилки дороги анализировать сложившуюся ситуацию и на основе этого выбирать тот или иной путь. Условные команды могли иметь самый различный вид: сравнение чисел, выборка требуемых численных значений, определение знака числа и т.п. Машина производила арифметические операции, сравнивала между собой полученные числа и сообразно с этим проводила дальнейшие операции. Таким образом, машина могла перейти к другой части программы, пропустить часть команд или вновь вернуться к выполнению какого-либо участка программы, то есть организовать цикл. Введение команды условного перехода знаменовало собой начало использования в машине логических, а не только вычислительных операций.
С помощью второго вида перфокарт — переменных (или, по терминологии Бэббиджа, «карт переменных») осуществлялась передача чисел между памятью и арифметическим устройством. На этих картах указывались не сами числа, а лишь номера регистров памяти, то есть ячеек для хранения одного числа. Регистры памяти Бэббидж называл «переменными», указывая этим, что содержание регистра меняется в зависимости от хранящегося в нем числа. Аналитическая машина Бэббиджа использовала три вида карт переменных: для передачи числа в арифметическое устройство с сохранением его далее в памяти, для аналогичной операции, но без сохранения в памяти, и для ввода числа в память. Они получили названия: 1) «нулевая карта» (число вызывается из регистра памяти, после чего в регистре устанавливается нулевое значение); 2) «сохраняющая карта» (число вызывается из памяти без изменения содержания регистра); 3) «получающая карта» (число передается из арифметического устройства в память и записывается в один из регистров). При работе машины на одну операционную перфокарту приходилось в среднем три карты переменных. Они указывали номера ячеек памяти (адреса, по современной терминологии), в которых хранились два исходных числа, и номер ячейки, куда записывать результат.
Числовые перфокарты представляли основной вид перфокарт аналитической машины. С их помощью осуществлялся ввод исходных чисел для решения некоторой задачи и новых данных, которые могли потребоваться по ходу вычислений.
После выполнения предложенных вычислений машина выбивала ответ на отдельную перфокарту. Эти перфокарты оператор складывал по порядку их номеров и в дальнейшем использовал в работе (они являлись как бы ее внешней памятью). Например, когда в ходе вычислений машине требовалось значение логарифма 2303, она показывала его в особом окошечке и давала звонок. Оператор находил нужную перфокарту со значением этого логарифма и вводил в машину. «Все карты, — писал Бэббидж, — однажды использованные и изготовленные для одной задачи, могут быль использованы для решения тех же задач с другими данными, поэтому нет необходимости готовить их во второй раз — они могут тщательно сохраняться для будущего использования; со временем машина будет иметь собственную библиотеку».
Четвертый блок был предназначен для приема исходных чисел и выдачи конечных результатов и представлял из себя несколько устройств, обеспечивающих операции ввода-вывода. Исходные числа вводились в машину оператором и поступали в ее запоминающее устройство, из которого извлекались и поступали на выход конечные результаты. Машина могла выводить ответ на перфокарте или печатать на бумаге.
В заключение следует отметить, что если разработка аппаратной части аналитической машины связана исключительно с именем Бэббиджа, то программирование решения задач на этой машине — с именем его хорошего друга — леди Адой Лавлейс, родной дочери великого английского поэта Байрона, которая горячо увлекалась математикой и великолепно разбиралась в сложных научных и технических проблемах. В 1842 году в Италии была напечатана статья молодого математика Менабреа с описанием аналитической машины Бэббиджа. В 1843 году леди Лавлейс перевела эту статью на английский язык, снабдив ее обширным и глубоким комментарием. Чтобы проиллюстрировать работу машины, леди Лавлейс приложила к статье составленную ею программу для вычисления чисел Бернулли. Ее комментарий по существу является первой в истории работой по программированию.
Аналитическая машина оказалась очень дорогим и сложным устройством. Английское правительство, поначалу финансировавшее работы Бэббиджа, вскоре отказало ему в помощи, поэтому он так и не смог завершить свой труд. Была ли оправдана сложность этой машины? Не во всем. Многие операции (особенно ввод-вывод чисел и передача их от одного устройства к другому) значительно упростились бы, если бы Бэббидж использовал электрические сигналы. Однако его машина была задумана как чисто механическое устройство без каких бы то ни было электрических элементов, что ставило ее изобретателя часто в очень трудное положение. Между тем электромеханическое реле, ставшее позже основным элементом вычислительных машин, в это время уже было изобретено: его придумали в 1831 году одновременно Генри и Сальваторе даль Негро.