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