Добавлен: 22.04.2023
Просмотров: 154
Скачиваний: 1
После анализа источников (к ним еще надо было бы добавить некоторые журнальные статьи, например [25], в связи с использованием подпрограмм в машине ЭДСАК) вернемся к рассмотрению книги "Программирование для быстродействующих электронных счетных машин".
Глава I. Цифровые машины и автоматизация вычислений (21 стр.). Определение цифровых машин, системы счисления, логическая структура алгоритмов (последовательные вычисления, циклы, разветвления), счетно-аналитические машины, автоматические вычислительные машины, принцип программного управления, оперативная и внешняя памяти.
Глава II. Операции над числами в цифровых машинах (94 стр.). Изображение чисел, фиксированная и плавающая запятая, операции над числами и двоичными кодами, особенности действий над конечноразрядными числами, схемы умножения, деления и извлечения квадратного корня.
Материал этой главы излагается весьма подробно и существенно шире, нежели того требуют специфические свойства БЭСМ. Стоит заметить, что эта глава оказала заметное влияние на выбор алгоритмов выполнения арифметических операций при конструировании отечественных ЭВМ, в частности машин типа М-20.
Глава III. Некоторые стандартные процессы при автоматических вычислениях (24 стр.). Конспективное описание схемы вычислений и правил арифметизации некоторых часто встречающихся алгоритмов (сумма произведений, перевод чисел из одной системы в другую, арифметика с двойной точностью, вычисление многочленов, последовательные суммы и разности, решение уравнения методом сужения интервала, вычисление функций с помощью рядов, непрерывных дробей и итерационных методов, логические методы контроля вычислений, включая контроль по четности и код Хэмминга.
Глава IV. Программирование решений математических задач (86 стр.). Глава начинается с повторения принципа программного управления и свойств команд, адреса, кода операции, адресности. При сравнении одно- и трехадресных кодов как наиболее предпочтительных отмечаются их принципиальная эквивалентность, большее удобство трехадресного кода и большая информационная экономичность одноадресного. Впервые формулируется известное прикидочное правило: число команд в одноадресной программе примерно вдвое больше числа команд в трехадресной программе. Дается пример простейшей программы (комплексного деления) в трехадресном и одноадресном (в символике ЭДСАКа) кодах. Подробно описываются команды условного и безусловного переходов в разных вариантах адресности команд. На примере решения квадратных и кубических уравнений составляются программы, содержащие разветвления. Подробно описываются цифровое кодирование команд и связанные с ним способы преобразования как команды в целом, так и отдельных ее частей (в трехадресном коде). Выделяются случаи инициализации команды, аддитивного изменения адреса, формирования адреса, "реставрации" команды к начальному виду. Даются система команд абстрактной трехадресной машины, обозначения символического кодирования, дисциплина распределения памяти. Авторы установили многолетнюю традицию стилистики написания машинных трехадресных программ и использования абстрактной машины для описания принципов программирования. На примерах демонстрируется управление циклом с помощью сравнения по переменной команде и по счетчику. Впервые формулируется общий принцип программирования цикла (с ненулевым числом повторений).
Специальный параграф обсуждает способы составления сложных программ из более простых. Способы вызова подпрограмм обсуждаются неподробно и содержат только два приема: формирование возврата на главную программу перед переходом к подпрограмме, находящейся на известном фиксированном месте, и использование двух (центрального и местного) управлений. Для больших задач рекомендуются разбиение задачи на содержательные подзадачи и затем составление блок-схемы, состоящей из подзадач. Выделяется систематическая (но не автоматизированная) процедура настройки куска программы помосту. Описывается прием использования разными ветвями вычислений общих кусков, который сейчас можно было бы назвать запроцедурированием. Глава завершается примером программы численного решения уравнений баллистики, а также 16 программами решения стандартных алгоритмов из предыдущей главы.
Глава V. Программы для решения некоторых математических задач (85 стр.). Глава содержит 17 содержательных программ решения следующих задач: -- преобразования алгебраических многочленов, решение системы линейных уравнений, интегрирование обыкновенных дифференциальных уравнений методом Рунге-Кутта, интегрирование уравнений внешней баллистики методом Адамса, вычисление таблицы бессолевых функций. Весьма полезным оказались подробные пояснения к программам, описывающие большое количество технических программистских приемов (представление перестановок, взаимодействие команд управления во вложенных циклах, разные способы контроля числа повторений, униформизация вычислений для увеличения степени цикличности, повышение скорости за счет расхода памяти и наоборот и т. п.).
В 1952 г. в СССР появилась также известная книга М. Уилкса, Д. Уилера и С. Гилла [26] (в русском переводе издана в 1953 г. [27]), которая существенно дополнила опыт программирования, отраженный в [23]. Книга, в частности, убедительно показала, насколько более эффективным становится использование "одетой" машины, и явилась по существу первым описанием интегрированной системы программного обеспечения, являющейся одновременно и замкнутой в смысле полноты (тесты оборудования, как сейчас говорят, экстракоды 1-го уровня, математическая библиотека, служебные программы ввода-вывода, средства отладки, средства загрузки и ассемблирования, небольшие пакеты прикладных программ), и открытой в смысле способности к росту, -- все это пронизано единым стилем работы на машине, находящейся в гармоническом соответствии со скромными возможностями оборудования.
Итак, можно констатировать, что к началу интенсивного использования первых советских ЭВМ программисты были подготовлены сравнительно неплохо.
Следует отметить, что хотя важность развития вычислительной техники признавалась бесспорной, решительный поворот в сторону универсальных цифровых электронных машин осуществить было не так просто. Дело было не только в недостатке технической базы и других трудностях послевоенного периода. Имела место довольно серьезная дискуссия об установке на универсальные или специализированные средства. За представителями второго направления стояла не только инерция старой школы, но и методологический принцип: "данную конкретную задачу часто можно более эффективно решить специальными средствами". Представители первого направления встречали дополнительное сопротивление некоторых философов-догматиков, с опаской воспринимавших "кибернетические спекуляции по поводу электронного мозга". Нужны были авторитет и воля, чтобы утвердить это новое направление вычислительной техники и связанную с ним методологию.
В решение этой проблемы очень важный вклад внесли академики А.А. Дородницын, М.А. Лаврентьев, М.В. Келдыш и С.Л. Соболев, возглавлявшие работы, связанные с приложениями математики в различных областях техники, которые не только должным образом на правили возглавляемые ими коллективы, но и смогли убедить заинтересованные ведомства в правильности ориентации на универсальные электронные вычислительные машины-главное звено в развитии вычислительной техники.
Работа над первой большой ЭВМ под руководством С.А. Лебедева в ИТМиВТ велась интенсивно и с энтузиазмом. Проектная группа состояла главным образом из студентов-выпускников Московского энергетического института. Среди них, в частности, были В.С. Бурцев -- нынешний директор ИТМиВТ и В.А. Мельников -- впоследствии ведущий конструктор БЭСМ-6. Со стороны математиков в выработке системы команд участвовал В.М. Курочкин. В 1951 г. БЭСМ была изготовлена, а в 1952 г. началась ее опытная эксплуатация. Машина была спроектирована в расчете на оперативную память на трубках Вильямса, но, поскольку они были сначала недоступны, в качестве первого варианта памяти использовались ртутные линии задержки (до 1955 г.). Часть быстрой памяти была сделана только читающей и сконструирована в виде серии гнезд с пружинными контактами и прижимными крышками, очень напоминающими вафельницы. "Вафельница" содержала одну 45-колонную перфокарту, в каждой строке которой было по одной команде. Все оборудование, кроме трубок и электроники, было самодельным, включая ввод с перфоленты, двухдорожечный магнитофон, барабан и ртутную память. Машина по тем временам была весьма быстродействующей (см. табл. 1).
БЭСМ имела трехадресную систему команд. У нее было два счетчика команд -- центральный и местный. Возвратная передача управления и возврат осуществлялись безусловным переходом с переключением на местное управление и обратным переключением на центральное управление. Местное управление использовалось также для выполнения операций обмена.
В этот же период в конструкторском бюро Министерства приборостроения и средств автоматизации СССР, которым руководил М.А. Лесечко, началось проектирование другой ЭВМ, получившей название "Стрела" и предназначенной для серийного изготовления на Московском заводе счетно-аналитических машин. Главным конструктором машины был Ю.Я. Базилевский, а одним из его ведущих сотрудников -- Б.И. Рамеев, в дальнейшем создатель серии машин "Урал". "Стрела" не имела магнитного барабана, но для нее были специально спроектированы 45-дорожечные магнитные ленты. Машина имела весьма удобную систему команд. В частности, каждая счетная команда вырабатывала логическое значение (признак , определявшее работу команд условного перехода. Другой особенностью было наличие "групповых операций", выполняющих покомпонентные действия с векторными массивами. В состав машины входили небольшая односторонняя память для констант и специальная односторонняя память, имевшая свое отдельное управление для встроенной библиотеки подпрограмм. Машина была снабжена достаточно удобными средствами ввода-вывода.
Первая "Стрела" была установлена в Отделении прикладной математики МИАНа, где в конце 1953 года началась ее опытная, а вскоре и производственная эксплуатация.
Анализируя архитектурные особенности двух наших первых крупных ЭВМ, любопытно отметить, что оба коллектива разработчиков находились в то время в плену ложной альтернативы -- скорость или удобство. Добившиеся высокой скорости позволяли себе не уделять должного внимания удобству работы, а не сумевшие обеспечить высокую скорость оправдывали этот недостаток наличием удобства.
Из пионеров советской вычислительной техники необходимо отметить также заведующего лабораторией электросистем Энергетического института АН СССР члена-корреспондента Академии наук И.С. Брука. Он приступил к работе над ЭВМ в 1951 г. и построил небольшой макет, известный под названием М-1. После накопления первого опыта и формирования начального коллектива под его руководством в течение 1962 г. была спроектирована машина М-2. Одним из ведущих разработчиков был М.А. Карпов, который впоследствии внес большой вклад в теорию и практику конструирования арифметических устройств. М-2 положила начало серии машин среднего класса, причем одним из основных принципов ее конструирования была экономичность. В этом отношении конструкция машины М-2 была весьма удачной и создала долголетнюю традицию проектирования учениками И.С. Брука не одной серии недорогих и массовых ЭВМ. Среди учеников следует в первую очередь назвать Г.Л. Лопато, впоследствии главного конструктора серии машин "Минск".
ПЕРВЫЙ ОПЫТ И ПЕРВЫЕ НАУЧНЫЕ РЕЗУЛЬТАТЫ НА ПЕРВОЙ КОНФЕРЕНЦИИ (1954-1956 гг.)
Создание в СССР первых ЭВМ было расценено как весьма важное научно-техническое событие. С.А. Лебедев был избран в 1953 г. действительным членом АН СССР по специальности вычислительная техника, а Ю.Я. Базилевский -- удостоен звания Героя Социалистического Труда. В Академии наук и в Министерстве высшего образования был осуществлен ряд организационных мер, направленных на формирование и укрепление коллективов, связанных с производством и использованием новой вычислительной техники.
Работы по прикладной математике в МИАНе были сконцентрированы под руководством М.В. Келдыша в Отделении прикладной математики, ставшим впоследствии Институтом прикладной математики. В составе Отделения в 1953 г. был организован первый в СССР отдел программирования, который в течение первого года возглавлял А.А. Ляпунов, а с 1954 г. и по настоящее время -- ШБ.
Годом раньше в Московском государственном университете была реорганизована кафедра вычислительной математики для обучения прикладных математиков, подготовленных для работы с ЭВМ. Заведующим кафедрой стал академик С.Л. Соболев.
Выпуски этой кафедры 1953-1954 гг. создали первое поколение специалистов, сознававших себя профессиональными программистами с самого начала своей карьеры.
В 1955 г. был создан Вычислительный центр Академии наук СССР, предназначенный для ведения научной работы в области машинной математики и для предоставления открытого вычислительного обслуживания другим организациям Академии наук. Его директором стал академик А.А. Дородницын.
В 1952 г. началась работа в области программирования в отделе приближенных вычислений Ленинградского отделения МИАНа (ЛОМИ), который возглавлял Л.В. Канторович, уже известный своими работами по функциональному анализу и пионерскими исследованиями в области линейного программирования.
После переезда С.А. Лебедева в Москву сотрудники его лаборатории были переведены по его инициативе в Институт математики АН УССР. Директор института Б.В. Гнеденко создал вычислительную лабораторию. Через несколько лет эту лабораторию возглавил В.М. Глушков, незадолго до этого защитивший докторскую диссертацию по теоретической алгебре. Кроме математического, Глушков имел также инженерное электротехническое образование. В его проницательном представлении область вычислительной техники давала благоприятную возможность для реализации своих знаний. На базе вычислительной лаборатории в 1957 г. был создан Вычислительный центр Академии наук УССР. ставший впоследствии Институтом кибернетики АН УССР.