Цвет сверхдержавы - красный 4 Восхождение. часть 2
Шрифт:
Однако ЭВМ, считающие в системе остаточных классов, требовались не только для обработки сигналов РЛС. Трудно сказать, кто из аналитиков ИАЦ обратил внимание Ивана Александровича Серова на проблему криптографии и применение для шифровки и дешифровки модулярных ЭВМ. Однако Серов поставил этот вопрос сначала на одном из совещаний МЭП, затем на совещании в МРП, и в итоге дошёл со своей запиской до Хрущёва.
Никита Сергеевич ничего не понимал в криптографии и не имел ни малейшего представления о модулярной арифметике. Он лишь коротко спросил Серова:
— Ты хоть знаешь, что это такое, и для чего нужно?
— Как эта херня работает, я не знаю и знать не хочу, — ответил Серов. — На то специалисты есть. Я только знаю, что такая ЭВМ крайне необходима для зенитчиков и для шифровальщиков.
— Понял, — кивнул Хрущёв. — Вот бы все так понятно
Он взял карандаш и написал на записке Серова, как обычно, с орфографическими ошибками: «Нимедленно в роботу. Абеспечить лутших спецеалистов».
Лучшими специалистами по модулярной арифметике и системе остаточных классов, имеющими опыт разработки ЭВМ, были на тот момент Акушский и Юдицкий. По рекомендации Лукина, Юдицкому дали отдел в НИИ-37 (позднее — НИИ ДАР), где первой задачей Юдицкого было завершение неудачной разработки ЭВМ А-340А для создаваемых НИИ-37 радиолокационных станций (РЛС), которую пришлось существенно переделать. Акушский, как ученый-теоретик, сразу занялся научными основами построения модулярной ЭВМ. По окончании работы над А-340А, Юдицкий вместе с Акушским начал разрабатывать мощные модулярные ЭВМ Т-340А и К-340А. (характеристики реальных ЭВМ.
Но сейчас эти ЭВМ уже создавались на базе микросборок, их разрядность составляла 64 бита, то есть, их строили в соответствии с требованиями декабрьского совещания 1953 года. (АИ, см. гл. 01-12). Вторым заказчиком разработки был Комитет Госбезопасности. Конечной целью было создание криптосистемы, основанной на теории чисел.
В СССР подготовка программистов началась в начале 50-х. Хотя важность развития вычислительной техники признавалась бесспорной, решительный поворот в сторону универсальных цифровых электронных машин было осуществить непросто. В советской науке шла в то время довольно серьезная дискуссия об установке на универсальные или специализированные средства. Сторонники специализированных вычислительных машин действовали не только по инерции «старой школы», но и исповедовали методологический принцип «данную конкретную задачу часто можно эффективнее решить специальными средствами», не осознавая рост количества разнообразных задач, и экономическую неэффективность «лобового» подхода, когда для решения каждого дифференциального уравнения строился отдельный аналоговый вычислитель. На сторонников универсальных ЭВМ дополнительно давили некоторые философы-догматы, в духе времени воспринимавшие «кибернетические спекуляции по поводу электронного мозга». Нужны были авторитет и воля, чтобы утвердить это новое направление вычислительной техники и связанную с ним методологию.
В решение этой проблемы внесли большой вклад академики Мстислав Всеволодович Келдыш, возглавлявший работы по прикладной математике в МИАН, Анатолий Алексеевич Дородницын, который возглавлял математический отдел в ЦАГИ, Сергей Львович Соболев, руководивший математическим отделом в Институте атомной энергии АН СССР и Михаил Алексеевич Лаврентьев, директор ИТМиВТ с 1950 по 1953 г. Они смогли убедить заинтересованные ведомства в правильности ориентации на универсальные электронные вычислительные машины как главное звено в развитии вычислительной техники.
В МИАН работы по прикладной математике были сосредоточены под руководством академика Келдыша в Отделении прикладной математики (ОПМ), выросшим впоследствии в отдельный Институт прикладной математики. В составе Отделения в 1953 г. был организован первый в СССР отдел программирования, который в течение первого года возглавлял Алексей Андреевич Ляпунов, а с 1954 г. — доктор технических наук Михаил Романович Шура-Бура.
В 1952 году в Московском государственном университете была реорганизована кафедра вычислительной математики, она начала готовить специалистов для работы с ЭВМ. Заведующим кафедрой стал академик Соболев. Выпуски этой кафедры в 1953 и 1954 годах создали первое поколение профессиональных программистов в СССР. Одним из этих программистов выпуска 1954 года был Андрей Петрович Ершов. Еще будучи студентом, в 1953г., он поступил на работу в Институт точной механики и вычислительной техники (ИТМиВТ), где в то время складывался один из первых советских коллективов программистов. Он успел поработать на БЭСМ (А.П. Ершов за пультом БЭСМ, а с 1954 по 1957 г учился в аспирантуре у профессора Ляпунова. К 1958 г он подготовил кандидатскую диссертацию. В 1957 г. он был назначен заведующим отделом автоматизации программирования во вновь созданном Вычислительном центре АН СССР.
Программы для первых ЭВМ составлялись, по большей части, в машинных кодах — в том виде, который понимала сама машина. Это было связано и с доступными на тот момент вычислительными ресурсами — машины имели мизерный объём оперативной памяти и очень малое быстродействие. Тогда господствовала точка зрения, что время компьютера много дороже времени программиста: если программа может выполняться быстрее, то трудоемкость ее составления несущественна. Писать большую программу в машинных кодах было очень сложно, но ещё сложнее было через некоторый промежуток времени понять, что же в программе написано и как она, чёрт её подери, работает.
Высокоуровневых языков программирования, можно сказать, не было. Точнее, не было их реализаций, пригодных к использованию на существующих ЭВМ. Первый язык программирования высокого уровня разработал в 1943-45 годах немецкий учёный Конрад Цузе. Язык назывался Планкалкюль и предназначался для разрабатываемого Цузе компьютера Z4. Однако в то время он так и остался на бумаге — (Первый компилятор для Планкалкюль был разработан лишь в 2000 г, через 5 лет после смерти Цузе)
Работа программиста первых ЭВМ заключалась в переводе алгоритма программы в понятные ЭВМ машинные коды. Трансляторов и компиляторов на тот момент не существовало, и программист был вынужден по таблице кодов вручную расписывать, в какую ячейку памяти записать одно число, в какую другое, какую машинную команду вызвать для их обработки, куда положить результат. Затем ему приходилось вбивать коды на перфоленту или перфокарту, при помощи устройства, напоминающего пишущую машинку. Эта работа занимала много времени и была чревата трудно вылавливаемыми ошибками. Естественным решением было переложить её на ЭВМ. (Пример подобной программы 1959 г в системе команд реальной ЭВМ «Урал-1»Таблица 2)
Поэтому большим прорывом стала разработка трансляторов и компиляторов, получивших в СССР название «программирующих программ». Первым в мире транслятором языка высокого уровня является «программирующая программа ПП-1, успешно испытанная в 1954 г. Его разработали два молодых на тот момент программиста — Сергей Сергеевич Камынин и Эдуард Зиновьевич Любимский. Они исследовали реализуемость операторных схем и возможность автоматического построения соответствующих машинных программ. Законченная в 1954 году программирующая программа ПП-1 являлась одним из первых в мировой практике трансляторов и, по-видимому, имела самый высокий уровень входного языка.
Транслятор ПП-2 (1955 г., 4-й в мире транслятор) уже был оптимизирующим и содержал собственный загрузчик и отладчик, библиотеку стандартных процедур. В ПП-2 были усовершенствованы алгоритмы трансляции и было уделено заметное внимание оптимизации программ — экономии выражений, наилучшей реализации вычисления индексных выражений, оптимальному отведению памяти для рабочих ячеек. Это был, по-видимому, первый оптимизирующий транслятор.
В конце 50-х развивался и подход к автоматизации программирования с помощью библиотек стандартных программ. Были разработаны — стандартная составляющая программа — ССП, которая осуществляла статическую загрузку и связывание стандартных программ из достаточно обширной библиотеки, интерпретирующая система ИС-2 уже реализовывала некоторые функции будущих операционных систем, осуществляя динамическое связывание, подкачку и смену используемых подпрограмм, причем все это делалось с небольшими накладными расходами и весьма скромными запросами на память. (источник: «Разработка языков программирования и компиляторов в СССР»
Задачей первых ЭВМ была автоматизация громоздких и трудоёмких баллистических расчётов для артиллерии и ракет. Отсюда и то внимание, которое уделялось в первых языках программирования расчётному компоненту — даже название языка Фортран, разработанного с 1954 по 1957 г в компании IBM под руководством Джона Бэкуса, являлось сокращением английских слов formula translator. Типовая программа того времени не имела логических ветвлений, она считывалась в память с перфоленты, перфокарт или магнитной ленты, «зохавывала» предназначенный для обработки объём данных — обычно с такого же носителя, «перемалывала» его в арифметико-логическом устройстве (то, что было до появления процессора), и либо распечатывала результат, либо, что чаще, завершалась с ошибкой.