[Список Лекций] [Мой путь в науке] [Вычисления, машины, программирование] | [<<] [<] [^] [>] [>>] |
Мой путь в науке
Вычисления, машины, программирование
Еще в 1943 г., будучи в командировке в Москве, я попал, по приглашению Лазаря Ароновича Люстерника, на семинар, где обсуждались проблемы использования машин для больших вычислительных работ. В это время в Москве проводились некоторые такие расчеты. Сначала шла речь о примитивных машинах — счетно-аналитических, которые были приобретены в связи с переписью населения 1939 г. и после этого практически не использовались. По-видимому, впервые эти машины были применены для некоторых численных расчетов проф. И. Н. Янжулом из Астрономического института в Ленинграде 65. На семинаре обсуждались возможности использования этих машин для других расчетов. Они были очень медленными — табулятор делал сложение за полсекунды, умножение — в течение пяти-восьми секунд. Вскользь говорилось о начавшихся разработках по электронным машинам и счетно-аналитическим, построенным на тех же принципах (типа «Марк I», «Марк II» в США). Меня эти вопросы очень заинтересовали, и я тут же на семинаре предложил ряд вариантов их применения. После возвращения в Ленинград мне была поручена сначала группа в ЛОМИ, а затем и отдел «Приближенных вычислений», который должен был заниматься разработкой численных методов и проводить большие конкретные вычислительные работы по заданию тех или иных организаций (как правило, связанных с физикой). Нами была установлена связь с ленинградской машинно-счетной фабрикой, занятой простейшими бухгалтерскими вычислениями на машинах, оставшихся там после переписи населения. М. К. Гавурин и я предложили некоторые новые схемы использования этих счетных машин. Основной принцип их эффективного использования — это запараллеливание аналогичных вычислений, благодаря чему появлялась возможность введения простейших программных изменений на коммутационной доске (конечно, вручную). Так, были предложены способы скорой выборки из таблиц и способ расчета скалярного произведения не умножением, а сложением на табуляторе, при этом один из сомножителей формировался не в десятичной, а в двоичной системе [92]. Серьезным конкретным достижением было вычисление на этой примитивной технике таблиц Бесселевых функций до 120 порядка на большом интервале [93]. Наиболее интересным тут было запараллеливание вычислений66 при интегрировании на этих машинах дифференциального уравнения для Бесселевых функций. Запараллеливание достигалось тем, что промежуток интегрирования был разбит на несколько интервалов и функции разных номеров на каждом из интервалов вычислялись одновременно, поэтому получались достаточно большие массивы одинаковых операций, которые эффективно осуществлялись на этих машинах. Эта работа была сделана при моем участии М. К. Гавуриным и В. Н. Фаддеевой. Любопытно, что параллельно таблицы Бесселевых функций рассчитывались в США на машинах «Марк» и даже «ЭНИАК». Наша работа началась двумя годами позже и была выполнена всего за полтора года, еще до того, как было закончено издание американских таблиц. Мое внимание привлекла и сама вычислительная техника. Возникла идея — важную, часто встречающуюся операцию выборки значений функции из таблиц осуществлять автоматически. Для этого было спроектировано специальное устройство — «функциональный преобразователь» на простейшей электромеханике, полупроводниках — купроксах и селенах, включавшее более 10 тысяч полупроводниковых элементов. По заказу Математического института и заинтересованных организаций это устройство было изготовлено в нескольких экземплярах на заводе счетно-аналитических машин в Москве. Оно позволяло операцию расчета значения функции — выборки основного значения из таблицы и расчета поправки — делать за короткое время. Для каждой функции требовалась своя система коммутации. Впрочем, как я уже говорил, была и доска с универсальной коммутацией, которая одновременно позволяла вычислять десять различных функций, но с меньшей точностью. В дальнейшем «функциональный преобразователь» был зарегистрирован как изобретение [94], некоторое время применялся, но это было уже время перехода на электронную вычислительную технику. У нас появились первые ЭВМ — «Стрела» и БЭСМ, с которыми наше устройство конкурировать не могло. Но, вероятно, это была первая в мире вычислительная машина, в которой широко использовались полупроводники. Первые годы электронно-вычислительная техника была малопроизводительна, дорога и доступна только некоторым приоритетным учреждениям. Между тем расчеты велись во многих организациях — научных, проектных, геодезических и других, в которых работали десятки и сотни вычислителей - операторов, и именно ими фактически выполнялись массовые вычисления. Эти операторы работали на счетных машинах механического типа — арифмометрах. Наиболее совершенными из настольных счетных машин были в то время «Мерседес-Эвклид» и «Рейнметалл», которые импортировались из-за границы. Попытки собственного производства подобных автоматов встретили значительные трудности — нужны были высококачественные материалы и очень точная механическая обработка. Было произведено лишь несколько десятков или сотен таких машин, причем работали они неудовлетворительно. Между тем и зарубежные машины также имели недостатки — были не очень надежны, требовали частого и сложного ремонта, запасных частей, так что каждые пять работающих машин должен был опекать квалифицированный механик. Здесь пригодился наш опыт в области составления элементов, вычислительных приемов и конструирования устройств, накопленный в процессе работы над «функциональным преобразователем» и некоторыми другими экспериментальными образцами. На основе этих элементов были сконструированы оригинальные образцы настольных счетных автоматов, причем была использована техника, которая не применялась ранее ни у нас, ни за рубежом. Это было зарегистрировано как изобретение [95]. Сконструированные машины были несколько более производительными, чем механические автоматы, и очень простыми в эксплуатации и ремонте — достаточно было замены одного из нескольких типов элементов. Внедрение их в практику оказалось делом довольно трудным. И в Москве, и в Ленинграде их отказались производить, но, к счастью, тогда было время совнархозов, и в Кирове нашелся завод и конструкторское бюро, которые были мало загружены и приняли это изобретение к реализации. Всё же в течение года или полутора лет они не приступали к работе, желая создать аналогичную машину, но собственной разработки. Однако работа вошла в план, сроки поджимали, и у нас запросили чертежи. В довольно короткий срок было начато изготовление этих машин на трех заводах, в том числе в Кирове — машина «Вятка» — и в Вильнюсе — машина «Вильнюс» (практически они совпадали). В течение десяти лет было выпущено около сорока тысяч машин, что в основном удовлетворило нужды страны и позволило по большей части освободиться от импорта. Несмотря на большой эффект от реализации нашего изобретения, авторское вознаграждение мы получили далеко не полностью и не сразу. Лишь около семидесятого года начали производить настольные электронно-счетные клавишные машины, которые первое время были намного дороже и менее удобны в эксплуатации. Но прогресс неизбежен. Почти сразу же после появления электронных машин началась работа по упрощению и автоматизации программирования. Мы в Ленинграде также включились в эту работу. Основным недостатком существовавшей системы, на мой взгляд, было резкое различие языка для машины и математического языка, на котором описывался алгоритм. В математическом описании использовались символы, крупные операции, различные математические понятия, а в машинной программе все это надо было доводить до стандартных операций над числами. Конечно, большим достижением была система управления и пересылки, в создании которой большую роль сыграл Дж. фон Нейман. Первым новшеством нашей системы было другое описание вычислительной схемы, именно, в ней применялись не только простейшие арифметические операции, но и многие укрупненные математические операции. Другим, конечно, было то, что элементами схемы были не отдельные числа, а целые их массивы с описаниями расположения и др. В результате схема расчета записывалась с вычислительного плана с логическими связями и переходами, довольно короткого и обозримого. Для укрупненных операций — упорядочение, скалярное произведение, операции над матрицами и т. д. — были созданы подпрограммы, их реализующие. Также выделялись и специальные операции, если они часто встречались в каком-то расчете. При этом вместо машинных адресов использовались инвентарные адреса, что можно назвать паспортом данных массива или операции. Эта система в соответствии с модным тогда термином, применявшимся в строительстве, была названа «крупноблочным программированием». Эти идеи имели и другое воплощение — благодаря использованию логической схемы для записи процесса расчета появлялась возможность оперирования с этими схемами и их применения не только для численных, но и для аналитических выкладок. Скажем, программа позволяла производить аналитическое дифференцирование любой функции, составленной из элементарных или специальных. Эти работы велись начиная с 1953 г., но возможность первых публикаций относится к 1956 г. [96 - 99]. Довести эту работу до конца и создать цельную систему автоматизированного программирования не удалось. Как известно, создание таких систем требует десятков и сотен разработчиков. Кроме того, в нашей системе несколько большее место занимали операции управления, так что при тогдашнем голоде машинного времени ее было целесообразно применять только к массовым задачам. Схемная запись вычислительных планов нашла использование в созданной в Киеве машине «Мир-3», а впоследующем использовалась физиками для проведения на машинах сложных аналитических выкладок [97]. В это же время были составлены (в командном и автоматизированном исполнении) программы для решения задач линейного программирования, в частности, для транспортной задачи. В компактной и быстродействующей программе, опубликованной в 1958 г. М. А. Яковлевой, был реализован метод потенциала [98]. Разработкой этих программ и системы «крупноблочного» программирования занимались мои сотрудники Л. Т. Петрова, В. А. Булавский, М. А. Яковлева, Р. А. Звягина. |
|
[<<] [<] [^] [>] [>>] |