Интеллектуальные развлечения. Интересные иллюзии, логические игры и загадки.

Добро пожаловать В МИР ЗАГАДОК, ОПТИЧЕСКИХ
ИЛЛЮЗИЙ И ИНТЕЛЛЕКТУАЛЬНЫХ РАЗВЛЕЧЕНИЙ
Стоит ли доверять всему, что вы видите? Можно ли увидеть то, что никто не видел? Правда ли, что неподвижные предметы могут двигаться? Почему взрослые и дети видят один и тот же предмет по разному? На этом сайте вы найдете ответы на эти и многие другие вопросы.

Log-in.ru© - мир необычных и интеллектуальных развлечений. Интересные оптические иллюзии, обманы зрения, логические флеш-игры.

Привет! Хочешь стать одним из нас? Определись…    
Если ты уже один из нас, то вход тут.

 

 

Амнезия?   Я новичок 
Это факт...

Интересно

Центр исследования дислексии расположен в городе Ридинге[16].

Еще   [X]

 0 

Очерки истории отечественной программной инженерии в 1940-е – 80-е годы (Липаев Владимир)

Монография начинается с истории появления в нашей стране электронных вычислительных машин (ЭВМ) и программирования в 1940-е – 60-е годы. Далее изложена история проектирования и производства отечественных ЭВМ, а также средств и систем автоматизации технологических процессов производства программных продуктов в 1960-е – 80-е годы. Подробно представлена история формирования основных компонентов программной инженерии в 1960-е – 70-е годы. Внимание акцентируется на особенностях решения сложных задач по государственным заказам и на создании программных продуктов для мобильных и бортовых ЭВМ реального времени. Особое внимание уделяется истории разработки методов моделирования динамических объектов и стендов для тестирования и испытаний комплексов программ в реальном времени. Изложены методы оценивания качества программных продуктов, рисков, дефектов и ошибок при их разработке, а также история формирования требований к профессиям и квалификации специалистов программной инженерии в 1970-е – 80-е годы. Рассмотрен анализ сложности программных комплексов реального времени и распределение ресурсов ЭВМ для таких комплексов, характеристики и методы оценивания качества их компонентов. Один из разделов посвящен истории формирования в 1980-годы экономики программной инженерии, созданию средств технико-экономического анализа и экономическому обоснованию планов разработки крупных программных продуктов. Представлены реальные примеры их создания в 1960-е – 80-е годы для оборонных систем на основе методов программной инженерии.

Книга предназначена для специалистов по вычислительной технике и программной инженерии, программистов, студентов и аспирантов, интересующихся историей развития, успехами и проблемами отечественной науки и техники в этой области.

Год издания: 2015

Цена: 299 руб.



С книгой «Очерки истории отечественной программной инженерии в 1940-е – 80-е годы» также читают:

Предпросмотр книги «Очерки истории отечественной программной инженерии в 1940-е – 80-е годы»

Очерки истории отечественной программной инженерии в 1940-е – 80-е годы

   Монография начинается с истории появления в нашей стране электронных вычислительных машин (ЭВМ) и программирования в 1940-е – 60-е годы. Далее изложена история проектирования и производства отечественных ЭВМ, а также средств и систем автоматизации технологических процессов производства программных продуктов в 1960-е – 80-е годы. Подробно представлена история формирования основных компонентов программной инженерии в 1960-е – 70-е годы. Внимание акцентируется на особенностях решения сложных задач по государственным заказам и на создании программных продуктов для мобильных и бортовых ЭВМ реального времени. Особое внимание уделяется истории разработки методов моделирования динамических объектов и стендов для тестирования и испытаний комплексов программ в реальном времени. Изложены методы оценивания качества программных продуктов, рисков, дефектов и ошибок при их разработке, а также история формирования требований к профессиям и квалификации специалистов программной инженерии в 1970-е – 80-е годы. Рассмотрен анализ сложности программных комплексов реального времени и распределение ресурсов ЭВМ для таких комплексов, характеристики и методы оценивания качества их компонентов. Один из разделов посвящен истории формирования в 1980-годы экономики программной инженерии, созданию средств технико-экономического анализа и экономическому обоснованию планов разработки крупных программных продуктов. Представлены реальные примеры их создания в 1960-е – 80-е годы для оборонных систем на основе методов программной инженерии.
   Книга предназначена для специалистов по вычислительной технике и программной инженерии, программистов, студентов и аспирантов, интересующихся историей развития, успехами и проблемами отечественной науки и техники в этой области.


Владимир Липаев Очерки истории отечественной программной инженерии в 1940-е -80-е годы

Введение

   Истории развития отечественной вычислительной техники в Советском Союзе в начале 1950-х годов сопутствовали две противоречивые тенденции, существенно повлиявшие на прогресс науки и техники в стране. С одной стороны, началась идеологическая атака в средствах массовой информации на «буржуазную лженауку – кибернетику». С другой стороны, постановления Правительства активно стимулировали разработки вычислительных машин в нескольких организациях [3, 4] страны.
   В 1948 году была издана книга американского математика Норберта Винера «Кибернетика или управление и связь в животном и машине», которая в СССР попала на полки с секретными изданиями. Ее автор высказал идеи, не согласующиеся с официальными философскими доктринами, пропагандировавшимися в советском обществе. Для Винера было ясно, что многие концептуальные схемы, определяющие поведение живых организмов при решении конкретных задач, идентичны схемам, характеризующим процессы управления в сложных технических системах. Он был убежден, что социальные модели управления в человеческом обществе и модели управления в экономике могут быть проанализированы на основе тех же общих методов и положений, которые разработаны в области управления техническими системами, созданными людьми. Эти крамольные идеи не могли стать достоянием советских граждан, которым внушался тезис марксистской философии о несводимости «высших форм» существования материи к «низшим формам», используемым в технике.
   В журнале «Вопросы философии» в марте 1950 года критике были подвергнуты некоторые теоретические положения математической логики, противоречившие, по мнению авторов статьи, догмам материализма [4]. Они не скупились на резкие высказывания: «Речь идет не о том, чтобы ликвидировать математическую логику, а о том, чтобы отсечь реакционную тенденцию извращения ее, отражающую идеологию враждебных нам классов». После математической логики настала очередь массированной атаки на те направления в физиологии, которые нарушали «чистоту учения И.П. Павлова», объявленного марксистскими философами венцом учений о поведении животных, и той части поведения человека, которая регулировалась его центральной нервной системой.
   В 1953 году наступила очередь агрессивных статей философов о кибернетике. Вершиной наступления на кибернетику стала статья, напечатанная в журнале «Вопросы философии» в 1953 году. Она была помещена в разделе «Критика буржуазной идеологии» и называлась «Кому служит кибернетика» (автор скрылся под псевдонимом). Все, что касалось развития вычислительной техники как таковой, когда вычислительные машины уподоблялись очень быстро работающим арифмометрам, объявлялось полезным и нужным для социалистического отечества. В подобном качестве вычислительные машины ничем не отличались от устройств, создаваемых человеком для облегчения своего труда. Однако, когда речь заходила об использовании этих машин для моделирования различных процессов или для символьных преобразований, то натренированный на поиске идеологического криминала ум борца за чистоту марксистско-ленинского учения немедленно подавал сигнал опасности: «По мнению Винера, деятельность вычислительных машин дает ключ к познанию самых разнообразных природных и общественных явлений. Эта в корне порочная идея послужила Винеру основанием для создания новой «науки» – кибернетики».
   Вычислительные машины не могут внести качественно новую струю в процесс познания окружающего мира. Чтобы эта мысль дошла до всех читателей статьи, автор формулирует ее еще раз: «Теория кибернетики, пытающаяся распространить принципы действия вычислительных машин новейшей конструкции на самые различные природные и общественные явления без учета их качественного своеобразия, является механицизмом, превращающимся в идеализм. Это пустоцвет на древе познания, возникший в результате одностороннего и чрезмерного раздувания одной из черт познания». Набор ярлыков для кибернетики (пустоцвет, лженаука, идеологическое оружие империалистической реакции, порождение лакеев империализма) свидетельствовал, что никакой патриотически настроенный ученый в СССР не может заниматься столь одиозной наукой. В «Кратком философском словаре» (1954 год) в статье «Кибернетика» эта наука была определена как «реакционная лженаука, возникшая в США после второй мировой войны, получившая широкое распространение и в других капиталистических странах; форма современного механицизма».
   Практические задачи (и прежде всего, задачи укрепления обороноспособности страны) требовали не прекращения работ в этой области, а наоборот, расширения и активизации этих исследований. Это понимали даже партийные чиновники из оборонного отдела и отдела науки ЦК КПСС. Когда один из первых отечественных специалистов по применению вычислительных машин в военной области А.И. Китов, математик А.А. Ляпунов и известный своими теоретическими работами, связанными с созданием атомной бомбы, математик С.Л. Соболев объединились как авторы статьи «Основные черты кибернетики» и принесли ее в журнал «Вопросы философии», то: «Как ни странно, редколлегия спорить не стала» и в начале 1955 года статью опубликовали [4]. В это время А.И. Китов и А.А. Ляпунов организовали серию выступлений на научных семинарах в академических институтах, высших учебных заведениях и в других организациях, в которых методы кибернетики могли бы принести практическую пользу и наступление на кибернетику оголтелых философов к концу 50-х годов постепенно увяло.
   У истоков развития кибернетики (информатики) в СССР стояли сотрудники Академии наук и различных, именуемых «закрытыми» ведомств и предприятий, в большинстве своем связанные с оборонной техникой. Первые книги в области кибернетики, вычислительных машин и программирования, выпущенные уже во второй половине 50-х годов без грифа секретности, были написаны военными. Если бы не активная наступательная позиция военных, поддержанная членами Академии наук СССР, то идеологические концепции, охраняемые представителями консервативной философской и партийной элиты, возможно, задержали бы развитие информатики на несколько лет, как это случилось с генетикой и другими науками [З, 4].
   С середины 40-х годов началась и на протяжении нескольких десятилетий двадцатого века продолжалась история практически независимого от Запада, оригинального развития отечественной вычислительной техники и программирования, науки и техники в этой области. Созданные нашими учеными, инженерами и рабочими сложные вычислительные системы для различных сфер применения многие годы находились на уровне мировых достижений и не содержали зарубежных компонентов. Этот путь самостоятельного развития отечественных ЭВМ и программирования, в том числе, в секретных (закрытых) областях применения, практически неизвестен современному поколению специалистов в области информатики. Он почти не отражен в научно-технической, исторической литературе, а также в учебных курсах вузов. История развития вычислительной техники в нашей стране имеет много достойных результатов и их не следует прятать в архивах. Целесообразно сделать их доступными для установления справедливых оценок достижений и просчетов, для извлечения современными специалистами уроков из накопленного опыта и дискуссий предшествующих десятилетий, с учетом бурного развития этой области. Автор книги полагает, что это может быть интересно и полезно для широкого круга специалистов, поэтому эту историю целесообразно обобщить и объективно отразить в средствах массовой информации.
   Уже на начальных этапах развития вычислительной техники и программирования в конце 1950-х годов произошло разделение в этой сфере на два почти независимых направления: для применения в науке и народном хозяйстве и для оборонных систем. Первое направление вначале составляли относительно небольшие программы, создаваемые одиночками или небольшими коллективами (3–5) специалистов, преимущественно для получения конкретных результатов при автоматизации научных исследований, простых технологических процессов и/или для анализа результатов вычислений самими разработчиками программ. В 60-е годы десятки и даже сотни ЭВМ с оригинальной архитектурой и системами команд, почти кустарно изготавливались в единичных экземплярах в вузах, научных и исследовательских организациях и не имели перспективы их массового производства. Для многих видов относительно несложных программ не было необходимости в регламентировании и автоматизации жизненного цикла для длительного применения и сопровождения множества версий таких программ.
   Это приводило к созданию для них простейших операционных систем и технологических средств для пользователей с очень ограниченными возможностями. Их разработчики не применяли регламентирующих, нормативных документов, вследствие чего жизненный цикл таких продуктов по структуре, содержанию, качеству и стоимости основных процессов «творчества» имел непредсказуемый характер. Многие авторы таких систем не стремились создать упорядоченные методы и средства массового проектирования и производства программных продуктов гарантированного качества.
   Пеструю историю их создания и развития в 60-е годы трудно отразить системой методов и средств. Только в 70-е годы сформировались несколько базовых семейств ЭВМ, для которых были созданы операционные системы и технологические средства, обеспечивающие проектирование и производство больших прикладных комплексов программ. В 70-е годы начало меняться направление основных усилий разработчиков программ для ЭВМ, происходит переход от методов и процессов процедурного программирования небольших компонентов для решения частных задач к проектированию крупных комплексов программ для промышленных и административных систем реального времени. Увеличение ресурсов ЭВМ и их доступности стимулировало интенсивное расширение сфер применения и возрастание размеров создаваемых комплексов программ. Быстро увеличивались производительность, объем памяти и надежность ЭВМ, что позволяло повышать сложность выполняемых ими функций и решаемых с их помощью задач, расширять сферы их использования в науке, системах управления и в промышленности. Однако отсутствовали стимулы для объединения методов и средств создания и сопровождения программ и, как следствие, для формирования систематизированного набора положений «программной инженерии».
   Второе направление с середины 60-х годов составляли крупные заказные (создаваемые по заказу государства) комплексы программ реального времени для сложных оборонных систем управления и обработки информации. Такие комплексы создавались большими коллективами специалистов, преимущественно в оборонной промышленности, оформлялись в виде программных продуктов с гарантированным качеством. Эти комплексы программ являлись компонентами систем, реализующими их основные функции и содержащими предпосылки для последующего развития и изменений. Методология управления проектами программных продуктов зависела от многих факторов: от персонала, технических, организационных, договорных требований и сложности функций. Организованная и контролируемая коллективная разработка при строгом учете и контроле каждого изменения являлась основой эффективного, поступательного развития каждой крупной вычислительной системы методами программной инженерии. Руководством страны особенно активно стимулировалось развитие таких комплексов программ для оборонных систем. В предлагаемой монографии внимание акцентируется на истории и крупных достижениях технологии программирования в оборонной промышленности страны, наименее известных современным специалистам.
   В 1960-е – 80-е годы в оборонной сфере были сосредоточены огромные ресурсы науки и промышленности, работали сотни тысяч разработчиков сложных комплексов программ, в несколько раз больше, чем в гражданских отраслях. Концентрация специалистов, стимулирование их труда, естественно, давали результаты. Это, в частности, отражалось на активном ходе работ в области создания крупных интеллектуальных программных продуктов и технологических систем программной инженерии для повышения эффективности процессов разработки и оценки качества комплексов программ оборонных систем. Однако методологические и технологические достижения в этой области передовых предприятий оборонной промышленности оставались секретными, не отражались в открытых публикациях и зачастую были не известны специалистам даже близких по функциям и задачам предприятий.
   Разработки комплексов программ для оборонных систем с самого начала отличались организованностью и тесным взаимодействием с заказчиками таких систем. При этом требования заказчиков к функциям и качеству программных продуктов хронически превышали возможности разработчиков и ресурсы доступных вычислительных машин. Очень быстро расширялись функции комплексов программ и, соответственно, потребности в размерах памяти и производительности ЭВМ, на которых они использовались. Это заставляло разработчиков программ создавать и использовать эффективные алгоритмы решения поставленных задач и методы программирования. Это стимулировало совершенствование тех и других, и необходимость формализации технологий применявшейся тогда программной инженерии. Расширение размеров и функций, создаваемых программных продуктов, а также уровень автоматизации их проектирования и программирования следовали непосредственно за увеличением доступных ресурсов вычислительных машин. Одновременно повышалась производительность труда специалистов и качество программного продукта.
   Развитие вычислительной техники в 1960-ые годы происходило в Советском Союзе очень высокими темпами. Предприятия активно оснащались различными ЭВМ. Кульминационной точкой в истории отечественной вычислительной техники стало создание С.А. Лебедевым в 1967-ом году ЭВМ БЭСМ-6. Именно эта машина впервые поразила весь мир невероятной для того времени производительностью – один миллион операций в секунду. Машина БЭСМ-6 сильно опередила свое время, начав развитие второго поколения ЭВМ. Она вобрала в себя много оригинальных идей, подобного класса в мире тогда не было. Эта машина широко использовалась в системах автоматизации проектирования для моделирования сложнейших физических процессов и процессов управления как инструментальная машина для разработки крупных программных продуктов оборонных систем на базе различных мобильных и бортовых ЭВМ. Она оставалась востребованной рекордно долгое время, более тридцати лет – последний экземпляр БЭСМ-6 прекратили использовать только на рубеже 21-го века.
   К середине 80-х годов в стране было создано около 300 типов и более десяти семейств оригинальных ЭВМ, в основном, для оборонной техники [10, 11]. Однако большое число проектов оставалось на уровне экспериментальных образцов. Они не определяли вычислительный потенциал страны и не отражены в данной книге. Последующее изложение ориентировано на ограниченное число типов ЭВМ, сыгравших наиболее важную роль в отечественной истории развития вычислительной техники и программной инженерии. Большинство из них были оснащены отечественными операционными системами, трансляторами и отладчиками. Инструментальные средства проектирования и производства программных продуктов, естественно, были ориентированы на определенные типы аппаратуры ЭВМ и в большинстве случаев определялись используемыми вычислительными ресурсами, функциями и областями их применения. Средства программной инженерии могли реализоваться только при достаточно больших ресурсах ЭВМ. Это определило их появление и активное применение, начиная с середины 60-х годов для оборонных систем.
   В 1980-е годы начинает формироваться и систематизироваться программная инженерия для проектирования крупных комплексов программ административных, гражданских сфер народного хозяйства. В эти годы происходит переход к массовому производству сложных комплексов программ высокого качества и к подготовке специалистов для поддержки жизненного цикла таких программных продуктов. На многих предприятиях началась осваиваться методология программной инженерии. Завершалась эпоха самостоятельного развития ряда поколений отечественной вычислительной техники и операционных систем для широкого применения в народном хозяйстве. Оригинальные отечественные разработки в этой области сохранялись, в основном, в оборонных отраслях промышленности. В то же время проявилась тенденция к сокращению разнообразия архитектур, к унификации мобильных, бортовых и наземных ЭВМ оборонного назначения, к их сближению с архитектурами универсальных вычислительных машин.
   Этап оригинального развития вычислительной техники в СССР пошел на спад в конце 1970-х годов, когда было принято решение о переходе к производству и использованию ЭВМ, которые являлись прототипами моделей западных образцов – IBM 360 и PDP. Руководители высшего управленческого уровня не понимали уже освоенных в стране методов и технологий программной инженерии, направленных на создание сложных комплексов программ. Они видели, что на Западе имеется программный продукт, который «.без особого трудя» можно нелегально копировать и использовать, если наладить производство аппаратуры ЭВМ с соответствующей архитектурой. В угоду приоритету ЕС ЭВМ были оборваны и прекратили существование отечественные линии проектирования и производства семейств универсальных вычислительных машин, в частности, БЭСМ-6 и «Урал». Освоение зарубежных операционных систем, СУБД, прикладных и технологических программ для этих типов машин подорвало оригинальную, отечественную школу программирования и сориентировало ее на заимствование и адаптацию готовых, как правило, неизвестного качества, зарубежных программ. Такая тенденция стала в то время доминирующей. Проектирование и производство оригинальных советских ЭВМ – это успехи прошлого нашей страны. Вместе с тем, это свидетельство широких возможностей наших ученых и специалистов, которые, к сожалению, почти утрачены в настоящее время.
   Однако для ряда специальных, критических сфер применения оборонных систем (например, мобильных, бортовых в авиационной, ракетной и космической технике), сохранили актуальность разработка и использование унаследованных архитектур специализированных ЭВМ реального времени на новой элементной базе. К ним предъявлялись особенно высокие требования к качеству, надежности, габаритам, климатическим характеристикам. Это обусловливало значительные особенности их архитектур и систем команд, в том числе для сохранения и модернизации ранее разработанных и эксплуатируемых крупных функциональных программных продуктов оборонных систем.
   В конце 80-х годов началась очередная смена поколения вычислительной техники и активное освоение различных зарубежных персональных ЭВМ и серверов с резким увеличением доступных пользователям ресурсов. Эти годы стали переломными для истории оригинального развития отечественной вычислительной техники и программирования. Широкий поток в страну зарубежных персональных ЭВМ драматически отразился на создании отечественных средств автоматизации программирования и программной инженерии. Изобилие разнообразных программных продуктов для персональных ЭВМ переориентировало отечественных специалистов на их освоение и применение. Только в некоторых направлениях инструментальных средств программной инженерии (например, тестирование, компиляторы) продолжались исследования и создавались отдельные, принципиально новые технологические средства высокого качества.
   Изменение акцентов в деятельности многих отечественных специалистов, связанных с переходом от индивидуального программирования небольших компонентов к коллективному созданию и применению методов и технологий программной инженерии, происходило в 1960-е – 80-е годы. В различных, (в основном, оборонных) областях применения программных продуктов появилась потребность в обеспечении экономической эффективности процессов проектирования и производства крупных комплексов программ. Для этого начали использоваться наиболее совершенные методы управления проектами, системная автоматизация процессов на всех этапах жизненного цикла комплексов программ для повышения производительности и качества результатов труда участвующих в этих процессах специалистов. Управленческие и технические проверки, анализ качества результатов выполнения промежуточных работ и созданных компонентов, проверки корректности их взаимодействия должны были обеспечивать заказчикам, руководителям и всем разработчикам более высокую степень уверенности в достижении требуемого конечного результата, и гарантии качества программного продукта.
   Программные продукты, созданные для оборонных систем, стали интеллектуальной их основой, от качества которой зависят выполняемые ими функции и последствия их применении. К сожалению, руководители предприятий и исполнители проектов до сих пор должным образом не осознают того факта, что многие дефекты, нештатные ситуации и катастрофы сложных критических систем являются следствием низкого качества поддерживающих их функционирование программных продуктов, напрямую зависят от недостатков при применении методов и средств программной инженерии.
   Публикации по истории отечественной программной инженерии в последнее время рассекречены, многие из них представлены в Интернете. Однако они не отличаются систематичностью изложения и разнообразием. Для устранения этих недостатков целесообразно привлекать, прежде всего, тех специалистов, которые в те далекие годы, непосредственно участвовали в проектах и исследованиях, в том числе работая в многочисленных закрытых учреждениях. Большинство таких специалистов предпочитали заниматься основной, профессиональной деятельностью в ущерб анализу истории и особенностей, протекающих в те или иные годы процессов. Основные публикации по истории отечественной вычислительной техники сосредоточены на особенностях и характеристиках аппаратуры ЭВМ и только немного внимания, и очень неравномерно, уделяют созданию комплексов функциональных программ, инструментальным средствам и особенностям автоматизации программирования, в которых изредка упоминаются некоторые компоненты программной инженерии. Это определялось отсутствием необходимости создания крупных комплексов программ в различных гражданских отраслях народного хозяйства.
   При подготовке монографии активно использовались доступные публикации, среди которых наибольшее влияние на ее содержание оказали, прежде всего, работы некоторых ведущих отечественных специалистов, представленные в списке литературы [1 – 8], а также материалы в Интернете [11] и Компьютерном музее [10]. Материалы по развитию программной инженерии при создании систем контроля космического пространства представили Генеральный конструктор ЦНИИ Комета, доктор технических наук, профессор Виктор Порфирьевич Мисник и доктор технических наук, профессор Владимир Федорович Гребенкин, за что автор им весьма благодарен. В предлагаемой монографии, естественно, отразились профессиональные интересы, опыт и публикации автора [16–22], более 30 лет работавшего в оборонной промышленности над крупными проектами комплексов программ.

Глава 1. История появления в стране вычислительной техники и программирования в 1940-е – 60-е годы

1.1. Начало истории отечественной вычислительной техники в 1940-е – 60-е годы

   Развитием промышленности по производству средств вычислительной техники правительство и руководящие органы СССР начали серьезно заниматься практически сразу же после окончания Великой Отечественной войны, считая эту задачу одной из основных для народного хозяйства [1, 2, 3]. Поручение правительства по подготовке мероприятий, связанных с развитием вычислительной техники, было дано в период острой необходимости в капитальных вложениях для подъема, разрушенного войной народного хозяйства, одновременно с философской полемикой в печати о роли «буржуазной лженауки» кибернетики. Работы, имевшие для страны большое значение, как это было принято, поручались сразу нескольким организациям. Результатом выполнения этих поручений было постановление правительства 1948-го года, предусматривавшее создание Института точной механики и вычислительной техники (ИТМ и ВТ) АН СССР и двух отраслевых организаций: НИИсчетмаш и СКБ-245, а также расширение существующей производственной базы и выделение необходимых для этого средств. Кроме того, в ряде организаций АН СССР и различных ведомств: в лаборатории электросистем Энергетического института им. Г.М. Кржижановского в Москве; в лаборатории вычислительной техники Института математики АН УССР в Киеве (позже ВЦ АН УССР); в Ереванском институте математических машин; в
   Пензенском институте управляющих вычислительных машин, активно развивалась теория и началась разработка вычислительных машин. Однако к началу 50 – х годов в стране имелись только небольшие производственные мощности по выпуску счетных и счетно-перфорационных машин, электронная вычислительная техника только зарождалась, а производственные мощности по элементной базе для нее были близки к нулю.
   Послевоенные годы стали отправной точкой в истории создания первых советских ЭВМ. В 1948 – 1951-е годы в Киеве в лаборатории моделирования и вычислительной техники Института электротехники АН УССР под руководством Сергея Алексеевича Лебедева была создана первая советская малая электронная счетная машина (МЭСМ) – прототип современных ЭВМ. Созданием МЭСМ в кельях бывшего монастыря «Феофания» было положено начало развитию отечественной вычислительной техники. К концу 1950 года монтаж действующего макета первой отечественной ЭВМ был завершен, и началась его проверка путем решения тестовых и ряда простейших народно-хозяйственных задач. А уже через два года в Москве, в Институте Точной Механики и вычислительном центре АН СССР, директором которого стал С.А. Лебедев, на базе разработанной в Киеве модели создается БЭСМ – большая электронная счетная машина. Машины данной серии становятся одними из лучших в США и Европе! Сегодня в это сложно поверить, однако быстродействие БЭСМ, а также возможность выполнить сложные математические операции подтверждало высокий уровень развития науки и технологий в Советском Союзе и открывало широкие перспективы для новых открытий и достижений.
   Параллельно с С.А. Лебедевым по постановлению правительства над созданием электронно-вычислительных машин проводили работы и другие ученые – с 1948-го года в конструкторском бюро № 245, возглавляемом М.А. Лесечко, шла разработка цифровой вычислительной машины, получившей название «Стрела». Скорость ее работы составила две тысячи операций в секунду, что в пять раз уступает быстродействию БЭСМ. «Стрела» впервые стала выпускаться серийно.
   Важнейшим звеном в истории советской вычислительной техники стали созданные группой инженеров под руководством И.С. Брука машины «М1». Данная машина отличалась невысоким быстродействием, но ее важным преимуществом были небольшие габаритные размеры, что делало ее применение удобным в любых помещениях. Впоследствии разработки И.С. Брука были усовершенствованы, и в 1953-ем году машина «М2», скорость работы которой составляла уже 2 тысячи операций с минуту, сочетала в себе все преимущества советских ЭВМ.
   Три электронно-вычислительные машины на лампах – БЭСМ, «Стрела» и «М2» относятся к советским ЭВМ первого поколения (рис. 1).

   Рис. 1.

   Все эти разработки имели существенные недостатки – высокая степень энергопотребления и небольшая оперативная память требовали совершенствования, но и западные машины того времени не превосходили советские ЭВМ по своим эксплуатационным характеристикам.
   В середине 40-х годов в США был опубликован документ под названием «Архитектура, фон Неймана». В нем великий физик и математик Джон фон Нейман (John von Neumann) описал вычислительную систему, в которой процессорный модуль отделен от устройства хранения данных. Вскоре был создан, а затем и усовершенствован первый американский компьютер ENIAC. Его установили в Университете штата Пенсильвания, США, и начали использовать для решения научных задач. Тогда же в Англии появились первые управляемые программами ЭВМ. Ученым уже было известно, что американские и британские коллеги достигли определенных успехов, но «холодная война» наложила ограничения – исследования заморских умов нашим конструкторам были недоступны.
   При создании проекта МЭСМ в 1947-м году С.А. Лебедевым были независимо от работ Дж. фон Неймана сформулированы аналогичные основные принципы построения архитектуры электронных вы числительных машин:
   • в состав ЭВМ должны входить арифметическое устройство, память, устройство управления и устройство ввода-вывода;
   • программа в машинных кодах должна храниться в той же памяти, что и числа;
   • для представления чисел и команд должна применяться двоичная система счисления;
   • вычисления должны выполняться автоматически в соответствии с программой, хранящейся в памяти;
   • логические операции должны выполняться наряду с арифметическими операциями;
   • память машины должна быть организована по иерархическому принципу.
   Основой высокой эффективности деятельности С.А. Лебедева являлось понимание основополагающих принципов развития столь сложного направления человеческой деятельности, как электронная вычислительная техника, глубокий теоретический анализ выполняемых проектов [2]. Отсюда чрезвычайно высокие требования к главному конструктору и разработчикам выполняемого проекта. С.А. Лебедев тщательно обдумывал все аспекты проблемы и в результате не имел практически ни одного проекта «в корзину». Все его разработки – более полутора десятков проектов ЭВМ, были внедрены в серийное производство, из которых две трети для задач обороны страны.
   С.А. Лебедев очень точно определил направление развития вычислительной техники. Ее передовым фронтом он считал высокопроизводительные вычислительные системы. Сергей Алексеевич отстоял основное направление работы ИТМ и ВТ – высокопроизводительные вычислительные системы, несмотря на то, что впоследствии Институту предлагали главную роль в стране по разработке вычислительной техники на базе прототипов ЕС ЭВМ. Он считал, что развитие вычислительной техники определяют сверхвысокопроизводительные системы и страна должна иметь самостоятельное направление в этой области.
   С 1953-го года в стране был налажен серийный выпуск вычислительных машин. Первой в серию пошла ЭВМ «Стрела», созданная в СКБ-245 под руководством Ю.Я. Базилевского. Основные характеристики ЭВМ «Стрела»:
   • ЭВМ была разработана на обычных для того времени радиолампах общим количеством ~ 6000 штук;
   • быстродействие 2000 операций в секунду, тактовая частота 50КГц, команды трехадресные;
   • оперативная память содержала 2048 ячеек, ячейка, в которой размещались трехадресная команда или число, содержала 43 двоичных разряда, оперативная память была выполнена на электронно-лучевых трубках (ЭЛТ), каждый разряд запоминался на отдельной трубке;
   • общая потребляемая мощность составляла ~ 150 кВт, что создавало значительные проблемы с теплоотводом;
   • оперативным средством связи пользователей являлся центральный пункт управления. Он содержал по 3 ряда тумблеров и индикаторов (по 43 неоновых лампочек каждый) и ряд индикаторов адреса выполняемой команды.
   Несмотря на обилие радиоламп с ограниченным гарантийным сроком службы (до 500 часов) конструктивная реализация ЭВМ позволила довести среднее полезное время работы до 20 часов в сутки, но машина все равно с трудом справлялась с потоком задач. Из-за периодических сбоев при работе ЭВМ задачи считались с «двойным просчётом» и со сравнением контрольных сумм результатов.
   Первыми программистами были выпускники ведущих вузов с физико-математической специализацией.
   Они, в большинстве случаев, получив начальную постановку задачи и исходные данные, участвовали в её формализации, в разработке и отладке алгоритма и программы, зачастую выполняли функции операторов в организации вычислений.
   БЭСМ-2 была создана С.А. Лебедевым в 1957 году как серийный аналог уникальной БЭСМ-1 и нашла применение в ряде НИИ СССР и за рубежом для численного решения широкого круга математических задач. Основные технические характеристики были аналогичны характеристикам БЭСМ, система команд машины отличалась тем, что были исключены редко использовавшиеся команды и добавлены некоторые новые команды. Системное программное обеспечение в этих машинах отсутствовало. На серийных машинах БЭСМ-2 были решены тысячи задач: чисто теоретических, прикладной математики, инженерных. В частности, рассчитывались траектории полета первых космических аппаратов. Машина была разработана и внедрена в народное хозяйство коллективами ИТМ и ВТ АН СССР и завода им. Володарского (г. Ульяновск) в 1958-м году и производилась до 1962-го года.
   В первую очередь, ЭВМ «Стрела» и БЭСМ-2 задействовали в военных целях – для изучения термоядерных реакций, расчета баллистических траекторий ракет и так далее. В 1956-м году Лебедев выступил с докладом на конференции в западногерманском городе Дармштадте. Академик устроил переполох, рассказав миру о том, что в СССР действует сверхбыстрая ЭВМ, – оказалось, что в Европе машине БЭСМ-1 не было равных.
   Дальнейшее развитие вычислительных систем на протяжении нескольких лет было эволюционным. В 1958-м году на арену вышла система БЭСМ-2 с внешней памятью на основе ферритовых сердечников и увеличенным набором исходных команд. Впервые ЭВМ подготовили к серийному производству. Первые серьезные шаги по развитию централизованной производственной базы гражданских сфер применения ЭВМ были сделаны в конце 50-х годов после успешного завершения работ по созданию первых в нашей стране промышленных, универсальных вычислительных машин М-20 (см. рис. 1). В 1958-м году в серию пошла машина М-20, созданная в коллективе С.А. Лебедева в ИТМ и ВТ (зам. главного конструктора М.К. Сулим и М.Р. Шура-Бура) [1, 3]. Скорость решения задач напрямую зависела от подготовленности программиста, – он должен был быстро реагировать на сбои, ошибки, отлично ориентироваться в переключателях пульта управления. Первые попытки реализовать системный язык программирования С.А. Лебедев предпринял еще при разработке М-20, машина понимала некоторые наглядные и интуитивные команды, мнемокоды. Это существенно расширило круг специалистов, способных взаимодействовать с ЭВМ.
   Эта машина сыграла большую роль в развитии программирования, а позже на ее базе была создана транзисторная машина М-220. Создание машины М-20 являлось выдающимся достижением в развитии советской техники универсальных цифровых вычислительных машин. По своему быстродействию машина М-20 превосходила существовавшие отечественные и серийные зарубежные вычислительные машины. Благодаря большому быстродействию, совершенству логической структуры и развитой системе оперативных и внешних запоминающих устройств, а также высокой надежности машины, она позволяла решать множество сложных задач, выдвигавшихся отраслями науки и техники.
   Машина М-20 и ее аналог БЭСМ-4 имели следующие технические характеристики: быстродействие 20 тыс. операций в секунду, оперативная память на ферритовых сердечниках емкостью 4096 слов, представление чисел с плавающей запятой, разрядность 45, система элементов – ламповые и полупроводниковые схемы, внешняя память – магнитные барабаны и ленты, а также особенности:
   • впервые в отечественной практике была применена автоматическая модификация адреса;
   • совмещение работы арифметического устройства и выборки команд из памяти;
   • введение буферной памяти для массивов, выдаваемых на печать, совмещение печати со счетом;
   • использование накопителя на магнитной ленте с быстрым пуском и остановом;
   • для М-20 разработана одна из первых технологических систем программного обеспечения ИС-2 (Институт прикладной математики АН СССР).
   Вслед за М-20 были разработаны и освоены в серийном производстве машины «Урал-1», «Минск-1». Они вместе с их полупроводниковыми наследниками (М-220, Урал-11-14, Минск-22 и -32), созданными в 60-е годы, были основными в СССР, практически до освоения в серийном производстве машин третьего поколения, т. е. до начала 70 – х годов [1, 3]. Основную нагрузку по выпуску этих машин приняли на себя коллективы Московского завода САМ, Пензенского завода ВЭМ, а также вступившие в строй в 1959-м году Казанский завод ЭВМ, Минский завод математических машин, Астраханский завод «Прогресс» и ряд других предприятий. В эти же годы была существенно расширена научно-исследовательская и конструкторская база: в 1956-м году созданы НИИУВМ (Пенза) и НИИММ (Ереван); в 1958-м году – НИИ-250 (Пенза), а также ряд конструкторские бюро на заводах.

В середине 50-х годов в оборонных отраслях

   промышленности и в организациях министерства обороны страны проявился интерес к применению цифровых вычислительных машин для решения задач обработки информации и управления в системах военного назначения. Начались активные, секретные работы по освоению применения цифровой вычислительной техники для систем противовоздушной и противоракетной обороны, для контроля космического пространства и управления полетом в авиации и в космосе, для управления войсками и средствами вооружения разных видов. Многие из этих задач принципиально отличались по своему характеру и масштабу от ставших к тому времени традиционными вычислительных задач в гражданских областях и в науке. В них преобладали: логические операции, большая размерность, реальный масштаб времени и ряд других специфических свойств и требований. Очень быстро увеличивались номенклатура и объем функций систем, которые требовалось автоматизировать. Для реализации таких функций были необходимы значительные ресурсы памяти и производительности ЭВМ, а также большие коллективы специалистов, способные создавать крупные комплексы алгоритмов и программ в допустимые сроки. Уже первые комплексы программ военного назначения в 50-е годы достигали нескольких десятков тысяч команд, для чего было необходимо разрабатывать и применять некоторые методы программной инженерии. В результате начало активно развиваться специфическое направление вы числительной техники и программирования для крупных систем реального времени оборонного назначения [3, 9].
   Это направление почти одновременно начало формироваться в оборонных отраслях промышленности и на предприятиях в нескольких проблемноориентированных областях: для сухопутных, авиационных, морских, ракетных и других систем. Для последующего развития вычислительной техники существенными оказались особые требования заказчиков различных областей применения. В результате ЭВМ разделились на два класса: на стационарные, работающие в помещениях, и на мобильные, размещаемые на подвижных (транспортабельных) или движущихся (бортовых) объектах (в том числе, необслуживаемых). Эти факторы определили большие принципиальные различия в архитектуре, технических, климатических и массогабаритных характеристиках этих двух классов, специализированных ЭВМ оборонного назначения, а также в программировании для них. Первый класс тяготел к архитектурам и конструктивам стационарных, универсальных ЭВМ с необходимыми расширениями и модификациями для специализированного применения. Машины второго класса – мобильные, отличались наибольшей спецификой свойств задач и характеристик внешней среды применения, от остальных типов ЭВМ.
   Начали разрабатываться относительно небольшие, бортовые, мобильные, а также крупные территориально-распрелеленные вычислительные системы на базе средств телекоммуникации, функционирующие в реальном времени. Все эти работы проводились в режиме строгой секретности, и каждая функционально законченная оборонная система создавалась практически независимо как от достижений за рубежом, так и от методов и результатов на других отечественных предприятиях. На них акцентируется последующее изложение в главе 2.
   Для исследований, моделирования и постановки задач систем вооружения для оборонной промышленности в 1954 – м году был создан ВЦ-1 министерства обороны СССР – первый в стране профильный вычислительный центр. В научно-производственном аспекте по широте научных исследований и количеству разработчиков и специалистов в 1950-е годы это был самый мощный вычислительный центр в Советском Союзе и один из самых мощных в мире [11]. ВЦ-1 МО (впоследствии ЦНИИ-27 Министерства обороны СССР) был создан по инициативе Анатолия Ивановича Котова, который он и возглавил. ВЦ-1 стал одним из ведущих оборонных научных центров страны. В 1952-м году А.И. Китов защищает первую в СССР кандидатскую диссертацию, посвященную вопросам программирования. Название этой диссертации – «Программирование задач внешней баллистики ракет дальнего действия». В этом же году он организовал и возглавил первый в стране отдел вычислительных машин в Академии артиллерийских наук. После упразднения этой Академии в 1953-м году отдел А.И. Китова вместе с его начальником был переведён в подчинение Артиллерийской военно-инженерной академии им. Ф.Э. Дзержинского, а затем он возглавил ВЦ-1.
   Осенью 1959-го года Анатолий Иванович послал в ЦК КПСС на имя Н.С. Хрущёва разработанный им проект создания общегосударственной автоматизированной системы управления для вооруженных сил и для народного хозяйства страны на базе Единой государственной сети вычислительных центров (ЕГСВЦ) – так называемый проект «Красная книга». В преамбуле этого доклада давалась резкая критика текущего состояния дел в стране с внедрением ЭВМ, и в первую очередь, в министерстве обороны СССР. Это предопределило негативное отношение к докладу А.И. Китова партийного и военного руководства СССР. Главное заключалось в том, что работники аппарата ЦК КПСС и, в частности, аппарата МО СССР почувствовали, что коренная перестройка управления на основе этого проекта приведет к устранению многих из них от рычагов государственной власти. В результате, А.И. Китов был исключен из КПСС и снят с престижной генеральской должности, которую он занимал в ВЦ 1 [11].
   В 1965–1972 гг. А.И. Китов был Главным конструктором Отраслевой автоматизированной системы управления (ОАСУ) министерства радиопромышленности СССР и директором Главного вычислительного центра этого министерства. Потом около десяти лет он работал Главным конструктором АСУ «Здравоохранение». Опубликовал ряд основополагающих монографий и статей по вопросам применения ЭВМ и экономико-математических методов в области экономической информатики и медицинской информатики, в 1968-м году защитил докторскую диссертацию по гражданской тематике.
   После ВЦ-1 в 50-е годы министерством обороны были организованы ВЦ-3 для разработки и исследования вычислительных систем и программирования авиационных систем, а также ВЦ-4 для артиллерийских и ракетных систем.
   Отсутствие в стране в 50-е годы развитой централизованной промышленности электронных компонентов для ЭВМ являлось причиной их разработки зачастую теми же предприятиями, которые создавали архитектуру специализированных ЭВМ и системы управления в целом. Вследствие этого элементная база машин часто была полукустарной, малотиражной и разнотипной, не отличалась высоким качеством и технологическим уровнем. Необходимость для многих предприятий вести разработку систем по полному циклу, начиная с создания элементной базы ЭВМ и далее всей вычислительной техники и программных средств, не только приводила к множеству параллельных, не унифицированных разработок, но и значительно увеличивала длительность и стоимость проектов систем. Впоследствии это отразилось на сложности производства множества разнотипных ЭВМ, на трудностях сопровождения и модернизации систем в целом. С.А. Лебедев был убежден, что в разработках ЭВМ должна использоваться отечественная элементно-конструкторская база. ИТМ и ВТ был первым заказчиком дискретных интегральных и больших интегральных схем в министерстве электронной промышленности СССР. Отставание в технологии компенсировалось передовыми схемотехническими и архитектурными решениями. БЭСМ-6 была одной из лучших в мире ЭВМ по архитектурным и схемотехническим решениям (см. главу 2).
   В 1960-м году были начаты работы по созданию семейства полупроводниковых ЭВМ «Урал» [3]. Основные черты нового поколения машин были сформулированы Баширом Искандеровичем Рамеевым в 1959-м году. В соответствии с ними были определены: состав семейства машин, их структура, архитектура, интерфейсы, принципы унификации, утверждены технические задания на устройства, ограничения на типы используемых комплектующих изделий. В конце 1962 года была закончена разработка унифицированного комплекса полупроводниковых элементов «Урал-10», рассчитанного на автоматизированное производство. Хотя элементы разрабатывались для использования в серии ЭВМ «Урал-11» – «Урал-16», они нашли широкое применение и в других средствах вычислительной техники и автоматики. В результате принятых правительством мер к началу 60-х годов были практически завершены все работы, связанные с созданием и освоением серийного производства полупроводниковых ЭВМ [3]. Это позволило прекратить, начиная с 1964 года, производство ламповых машин первого поколения и с 1965 года начать массовое производство полупроводниковых машин Урал-11 – Урал-14; Минск-22; Минск-23; БЭСМ-4; М-220; Раздан-3 и др.
   В 1965 – 66-е годы все предприятия, НИИ и КБ в области вычислительной техники были переданы в состав двух министерств — министерства радиопромышленности (универсальные и специальные, бортовые, военные ЭВМ) и министерства приборостроения, средств автоматизации и систем управления (промышленные управляющие ЭВМ) [3, 10]. Работа предприятий в этих условиях совпала с началом активного создания и подготовки производства ЭВМ третьего поколения (на интегральных схемах). Трудности этого периода были связаны не только с решением научно-технических и технологических проблем (от архитектуры до элементной базы новых ЭВМ). Необходимо было решать большое количество сложных проблем создания в стране практически с нуля крупной отрасли вычислительной техники, базирующейся на новой технологии и широкой номенклатуре ранее не выпускавшихся средств, с переходом на внутриотраслевую специализацию. Освоение новых изделий во многих случаях шло одновременно со строительством самих заводов и обучением специалистов и сопровождалось множеством других проблем.
   Решать все эти проблемы необходимо было в крайне ограниченное время (3–5 лет) с одновременным увеличением выпуска ЭВМ более чем в три раза при существенном увеличении состава оборудования в каждой машине. Реализовать эту задачу предполагалось в дальнейшем за счет разработки и освоения в серийном производстве нескольких типов программно совместимых вычислительных машин, построенных на единой конструктивно-технологи-ческой базе. Увеличение объемов производства достигалось за счет специализации производства и его лучшего технологического оснащения. Сокращение сроков разработки предусматривалось как за счет использования (легального) опыта ведущих западных фирм, на основе заключенных с ними соглашений, так и за счет привлечения к разработке и производству новых ЭВМ коллективов практически всех предприятий и организаций, ранее работавших над созданием множества разнообразных, собственных ЭВМ. Реализации этих задач было посвящено постановление правительства 1967-го года, в котором были сформулированы задачи и предусмотрены необходимые меры для обеспечения их выполнения материальными, производственными и финансовыми ресурсами [3, 11].
   Это постановление определило создание в стране отрасли вычислительной техники, т. к. оно охватывало решение всех основных проблем – от разработки и освоения производства материалов и элементной базы до обеспечения производства нового поколения ЭВМ и повышения эффективности его использования в народном хозяйстве. Постановлением было предусмотрено:
   • увеличение мощностей по производству средств вычислительной техники с 304 млн. рублей в
   1965-м году до 1000 млн. рублей в 1970-м году и до 3000 млн. в 1975-м году;
   • рост выпуска средств вычислительной техники с 2470 млн. рублей в 1966 – 1970-е годы до 7500 млн. рублей в 1971 – 1975-е годы;
   • увеличение выпуска ЭВМ с 5800 машин в 1966 – 70-е годы до 20000 машин в 1971 – 1975-е годы.
   Только по министерству радиопромышленности СССР постановлением было предусмотрено строительство 14 новых заводов и реконструкция 11 существующих. Аналогичное развитие было предусмотрено и по предприятиям министерства приборостроения, средств автоматизации и систем управления и министерства электронной промышленности. Кардинальные решения были приняты по развитию мощностей по производству элементной базы машин третьего поколения, практически «с нуля» до 65 млн. интегральных схем в год. Эта программа максимум не была полностью выполнена, но она способствовала тому, что в стране примерно вдвое выросли производственные мощности по выпуску компонентов и систем вычислительной техники. В результате в 60-е годы были созданы предпосылки для последующей разработки таких высокопроизводительных систем, как БЭСМ-6, 5Э26, АС-6, МВК Эльбрус, М-13 (см. главу 2).

1.2. Начало истории отечественного программирования в 1950-е – 60-е годы

   Первые программы определялись в ЭВМ установкой ключевых переключателей на передней панели вычислительного устройства. Очевидно, таким способом можно было составить только очень небольшие программы. С развитием вычислительной техники появился машинный язык, с помощью которого программист мог задавать команды, оперируя с ячейками памяти, полностью используя возможности машины. «Слова» на машинном языке, представляло собой одно элементарное действие для центрального процессора, такое, например, как считывание информации из ячейки памяти. Каждая модель процессора имела свой собственный набор машинных команд, хотя большинство из них совпадало. Тогда еще не было компиляторов и приходилось все писать числами. Это был адский труд – постоянно держать в памяти таблицу машинных кодов и вводить их в ЭВМ.
   Со временем ЭВМ стала умнеть, но самое главное, она все также оперировала двоичными числами, однако делала это намного быстрее. Программист – это человек, и ему очень тяжело создавать логику в числах. Намного легче работать с привычными словами. В случае, когда нужно иметь эффективную программу, вместо машинных языков начали использоваться близкие к ним машинно-ориентированные языки – ассемблеры. Использовались мнемонические команды взамен машинных команд. Но даже работа с ассемблером достаточно сложна и требует специальной подготовки.
   На протяжении 60-х годов запросы на разработку программного обеспечения быстро возросли и программы становились очень большими. Руководители начали понимать, что создание программного обеспечения – гораздо более сложная задача, чем они себе представляли. Это привело к тому, что было разработано структурное – модульное программирование. С развитием структурного программирования следующим достижением были процедуры и функции. Если задача выполняется несколько раз, то ее можно объявить, как функцию или процедуру и в выполнении программы просто вызывать ее. Общий код программы в данном случае становится меньше. Функции позволяют создавать модульные программы, в основе которых лежит представление программы в виде иерархической структуры блоков. Класс — это структура, которая имеет свои переменные и функции, которые работают с этими переменными. Это было очень большое достижение в области программирования. Программирование можно было разбить на классы и тестировать не всю программу, состоящую из строк кода, а разбить программу на группу классов, и тестировать каждый класс. Это существенно облегчило написание программного продукта.
   Следующий шаг был сделан в 1954-м году, когда на Западе был создан первый язык программирования высокого уровня – Фортран. Языки высокого уровня имитируют естественные языки, используя некоторые слова разговорного языка и общепринятые математические символы. Эти языки более удобны для человека, с помощью них можно писать программы до нескольких тысяч строк длиной. Однако легко понимаемый в коротких программах, этот язык становился нечитаемым и трудно управляемым, когда дело касалось больших программ. Решение этой проблемы пришло после изобретения на Западе языков структурного программирования, таких как Алгол (1958), Паскаль (1970), Си (1972). С этого момента начался языковый бум. Языки программирования стали появляться один за другим. Так появились С+, ADA, FoxPro, Basic, Pascal и др. На сегодняшний день существует тысячи языков программирования. Из них популярность и известность получили только некоторые. Они отличаются простотой, быстротой, гибкостью и другими свойствами, удобными в некоторой определенной области использования.
   Споры программистов перенеслись в другую плоскость – какой язык лучше. Большее предпочтение отдавалось универсальным языкам программирования, способным предоставлять эффективный инструментарий для решения разнообразных вычислительных задач. Все современные реализации широко распространенных языков обладают сходными характеристиками: начиная от скорости написания программ и кончая производительностью полученного кода.
   Теперь приверженцы языка ассемблер утверждали, что их код самый быстрый, а любители языков высокого уровня утверждали, что они напишут программу быстрей, чем самый лучший программист на языке ассемблер. Однако программы на языках высокого уровня занимали больший объем памяти и работали медленнее. В вычислительных задачах победила в основном скорость разработки и «удобство» языка программирования для определенного класса задач.
   Ассемблер не ушел из практики, когда необходимо было создавать эффективные по объему программы реального времени высокой производительности и занимающие минимальный объем памяти (см. главу 4). В 60-е – 70-е годы большинство программных продуктов в оборонной промышленности для мобильных и бортовых ЭВМ создавались на ассемблерах, адаптированных на архитектуру соответствующих машин. Только в 80-е годы в связи с ростом ресурсов специализированных машин начали использоваться алгоритмические языки высокого уровня, несмотря на возможное расширение программ при трансляции, по сравнению с программами, разработанными на ассемблере.
   С середины 50-х годов во всех странах, производивших вычислительную технику, начался бурный процесс «языкотворчества» — создание нескольких сотен проблемно-ориентированных языков [1, 4]. Многим программистам казалось, что небольшие улучшения языков программирования способны радикально повлиять на разработку и качество программ, на использование скудных ресурсов ЭВМ. Однако это требовало создания соответствующих трансляторов и средств отладки, вследствие чего энтузиазм языкотворчества постепенно угас. Сложной задачей для системных программистов того времени было создание трансляторов для конкретных типов машин. Создание каждого транслятора с машинно-независимого языка программирования считалось крупным научным и практическим достижением. Большое число различных типов машин и различных языков требовало трудоемкой работы высококвалифицированных программистов и математиков по разработке трансляторов. Соответственно, возникла необходимость создания небольшого числа стандартизированных языков и программно-преемственных семейств вычислительных машин. Это потребовало глубоких теоретических исследование в теории алгоритмов, схем программ, теории формальных грамматик.
   В СССР в 60-е годы был создан алгоритмический язык РЕФАЛ, в основе которого лежала теоретическая модель процесса, реализуемого нормальными алгоритмами Маркова. Его использование в нашей стране позволило создать ряд оригинальных программных продуктов, не имевших аналогов за рубежом. Однако РЕФАЛ испытал судьбу многих отечественных находок. Сходная судьба была у языков программирования семейства Аналитик, созданных в Институте кибернетики АН УССР для ЭВМ серии «МИР». Эти машины, по существу, были первыми персональными ЭВМ (к сожалению, тогдашняя элементная база не позволила свести их габариты к настольным). Однако, несмотря на передовые принципы, заложенные в структуру и функции языков семейства Аналитик, они также не стали достоянием мирового сообщества программистов, хотя иностранные эксперты достаточно высоко оценивали достижения программирования в СССР [4].
   Исследования в области параллельного программирования в СССР начались в середине 60-х годов, когда в Институте математики СО АН СССР (Новосибирск) и в Московском энергетическом институте возникли первые коллективы, заинтересовавшиеся теорией параллельных процессов в вычислительных системах, состоящих из однородных или неоднородных машин [4]. Первые монографии по теории вычислительных систем и параллельных вычислений вышли в нашей стране с большим опережением аналогичных изданий за рубежом. Отечественные специалисты первыми в мировой науке дали постановку и предложили решения таких задач, как сегментация алгоритмов и программ, планирование выполнения больших программ на вычислительных системах, динамическое диспетчерование потока программ и сегментов программ, асинхронная организация протекания процессов. В это время было предложено несколько оригинальных моделей для параллельных вычислений, заново открытых потом в США и других странах.
   В 1953-х годах Л.В. Канторович разработал технологию крупноблочного программирования, которая давала обозримое описание крупных программ и обеспечивала формализацию, достаточную для исследования синтаксических структур программ и создания программирующих программ [4]. Идеи, высказанные в этих работах, предшествовали развитию программной инженерии. Работа школы протекала весьма активно в 1950 – 60-е годы. Характерной особенностью крупноблочных систем являлось то, что они оперировали не с индивидуальными числами и символами, а с величинами – укрупненными агрегированными информационными объектами. Такие укрупненные структуры данных (матрицы, векторы, последовательности, деревья, схемы и т. д.) выступали как целое в вычислительных планах; стандартные способы обработки отдельных компонентов выполнялись автоматически на нижних уровнях. Это вносило иерархическую структуру в языки программирования, освобождая верхние уровни от ненужной детализации. Существенно, что вычислительный процесс мыслился при этом также «объемным», протекающим одновременно, либо попеременно на каждом из этих уровней. Громоздкие и трудоемкие вычисления часто чрезвычайно упрощались при переходе на другой уровень. Представлялось, что в разумной стратегии переходов с одного уровня на другой кроется значительный резерв для повышения экономики вычислений. На этой же уровневой основе была создана оригинальная теория и методология трансляции, гибко сочетающая компиляцию и интерпретацию.
   Ряд объективных обстоятельств способствовал тому, что до середины 60-х годов программирование в СССР развивалось до некоторой степени автономно от зарубежного [1, 3, 4]. К этим обстоятельствам относились:
   • более позднее начало массового производства электронной вычислительной техники (примерный сдвиг – 5 лет);
   • меньшее количество доступных вычислительных ресурсов, приведшее к не столь широкому размаху работ, как в США или в Англии;
   • практическое отсутствие импорта вычислительных машин и технологий;
   • языковый барьер и сравнительно менее интенсивные личные контакты специалистов (в частности, вследствие секретности);
   • некоторые общие отличия в организации и стиле научных исследований и производства.
   Заметное влияние на общее развитие программирования в мире оказали работы Ю.И. Янова, приведшие к созданию теории схем программ, и некоторые работы по оптимизации трансляции. Существенный вклад в мировую тенденцию внесло широкое распространение Алгола-60 в СССР. Большая часть результатов представляла независимые, индивидуальные, практические разработки, без которых невозможно было полноценное развитие отечественного программирования.
   Одним из факторов, сузившим фронт работ по автоматизации программирования в несекретных отраслях народного хозяйства, в это время было преобладание научных применений универсальных ЭВМ. Большая часть программистов в СССР была математиками с университетским образованием. Почти все успешные «художественные» экспериментальные и вычислительные программы кое-как переделывались в программный продукт, и это «кое-как» иногда мешало эксперименту и не давало должного эффекта при применении продукта. При всех положительных сторонах этого обстоятельства потребовалось длительное время, пока была осознана и реализована необходимость сбалансировать эту сторону вузовского образования с воспитанием способности к инженерному стилю работы, столь необходимому в системном программировании для создания крупных программных продуктов реального времени (см. главу 4).
   В середине 50-х годов появились небольшие по численности группы математиков, привлеченных к разработкам проектов вычислительных машин, проводившихся в небольшом числе проектных организаций и институтов в Москве, Ленинграде, Киеве, Минске, Пензе. Каждая вновь разрабатываемая машина, прежде всего, требовала создания для нее операционной системы и программ вычисления элементарных функций. При этом необходимо было добиваться предельной эффективности таких вычисления на данной конкретной архитектуре и ресурсах ЭВМ. Это требовало от математиков высокого уровня понимания деталей логики работы процессора. Возможно, что именно это явилось отличительной чертой отечественных школ программирования, чертой теснейшей их связи с инженерными разработками, которая определила в дальнейшем, как достоинства, так и недостатки в работе этих школ.
   Теоретические исследования методов программирования для ЭВМ в 1950-е – 60-е годы, активно проводились в Московском, Ленинградском и Киевском университетах, в Институте автоматики и телемеханики АН СССР, в Вычислительном центре АН СССР [1, 4]. В 1950 году в ИТМ и ВТ начал работать первый постоянный семинар по программированию, которым руководил Л.А. Люстерник, в МГУ в 1952-м году была основана кафедра вычислительной математики (ее возглавил С.Л. Соболев). В 1953-м году в Математическом институте АН СССР был создан отдел программирования во главе с А.А. Ляпуновым, а в 1955-м году был основан Вычислительный центр МГУ, специализировавшийся на разработке и применении вычислительных методов для решения научных и прикладных задач.
   В 1952-м – 53-м годах А.А. Ляпуновым был предложен операторный метод для описания программ. Практически впервые был создан способ представления программ на обозримом уровне. Вместо неэффективного для человека написания программ в машинных кодах было предложено формализованное представление программ на языке высокого уровня. Особенно важным было то, что операторный метод позволил подготовить теорию синтаксических структур программ. В 1953-м году А.А. Ляпунов сформулировал постановку задачи автоматизации программирования. Эта оригинальная постановка была успешно использована в первых отечественных трансляторах, называвшихся тогда программирующими программами (ПП). Летом 1954-го года появилась программирующая программа ПП-1, разработанная в отделе прикладной математики Института математики АН СССР, а в 1955-м году – ее улучшенный вариант ПП-2. К середине 50 – х годов у ведущих специалистов в области вычислительной техники сформировалось представление о путях развития отечественной информатики и программирования.
   В середине 1957-го года, Виктор Михайлович Глушков, определил направления стратегических исследований в области информатики [3]. По его мнению, основой прогресса развития вычислительных машин должна была стать теория их работы, разработка методов автоматизации проектирования ЭВМ и автоматизации программирования. Он подчеркивал важную роль исследований в области теории алгоритмов и теории конечных детерминированных и стохастических автоматов, принципиальное значение разработки методов символьных преобразований на ЭВМ. Отмечалась центральная роль, которую играет задача оптимизации размера при трансляции программ (особенно для управляющих машин), а также указывалось на обратное влияние развития вычислительных машин на дальнейшие работы в области вычислительной математики. В конце 1959-го года в Москве, в МГУ состоялось «Всесоюзное совещание по вычислительной математике и вычислительной технике». Это было большое научное собрание с почти 2000 участников и 217 докладами, прочитанными на четырех секциях.
   Постепенно складывалась концепция системного математического (программного) обеспечения ЭВМ – интегрированной и удобной в работе системы различных средств автоматизации программирования (библиотеки, трансляторы, средства отладки), сопряженных с определенной дисциплиной реализации задач на машине [5]. Проблеме математического обеспечения ЭВМ было много препятствий научно-технического и организационного характера, одно из которых – слабая разработанность концепции программного продукта и его производства. Для М-20 в то время таким средством для вычислений была библиотека стандартных подпрограмм. Идея превращения библиотеки в переносимый и общий программный продукт стала для М.Р. Шура-Буры на некоторое время главной задачей, на решении которой со временем сформировались более общие взгляды на системное программное обеспечение. Необходимо было найти некоторый объект конструирования и научной работы, который одновременно решал бы задачу унификации математического обеспечения, мог бы быть эффективным средством автоматизации программирования и выдвигал бы новую научную проблематику. Таким корневым объектом в стране стал Алгол-60.
   В начале 60-х годов был опубликован алгоритмический язык Алгол-60, рекомендованный в качестве международного стандарта для публикаций вычислительных алгоритмов. В нашей стране Алгол-60 был принят в качестве государственного стандарта. Использование других языков для программирования вычислительных задач не рекомендовалось и это касалось даже широко применявшегося за рубежом более простого языка Фортран. После этого в стране началась активная разработка трансляторов с Алгола- 60 для нескольких типов машин. Попытки создать транслятор с полного языка Алгол-60 за рубежом не удались. В ИПМ такой транслятор был создан для машины «Стрела», а затем для машины М-20, что явилось достижением мирового уровня.
   В то же время стала совершенно очевидной общенаучная ценность этого документа, которая требовала его широкого распространения. Ситуация весной 1960-го года оказалась весьма благоприятной для принятия Алгола-60 в качестве единого языка программирования научных и инженерных применений ЭВМ. В июне в Вычислительном центре АН СССР координационное совещание по вопросам реализации Алгола-60. На фоне общей и во многом разнонаправленной активности выделились три проекта реализации языка для М-20, получившие, соответственно, названия TA-1, ТА-2 и Альфа. Начавшись как три независимые и подчас конкурирующие разработки, они в процессе развития приобрели взаимодополняющие свойства, решив удовлетворительно проблему снабжения М-20 трансляторами с Алгола-60.
   В декабре 1960-го года в МГУ состоялась рабочая конференция «Построение программирующих программ на основе языка Алгол-60» [1, 4]. К этому времени у разработчиков уже сложились общие подходы к реализации языка и выбору схем трансляции. В TA-1 благодаря отказу от возможной рекурсивности процедур и ряду других ограничений, была выбрана компактная и быстрая схема трансляции без оптимизации. Главной задачей ТА-2 стала реализация практически полного языка без существенной потери в качестве реализации. В разработке системы Альфа (Андрей Петрович Ершов) было поставлено в качестве главной цели обеспечение высокого качества (по объему рабочих программ) с сохранением приемлемой скорости трансляции. Употребление универсального языка программирования снимало задачу перевода программ с одной машины на другую, дало возможность сокращать дублирование работ по составлению программ для различных типов машин и существенно облегчило обмен информацией между отдельными группами специалистов, работающих в области программирования. В докладе разработчиков системы Альфа был показан классический прецедент просчета в определении плановых экономических показателей и трудоемкости больших программных проектов с универсальным коэффициентом недооценки трудоемкости в 2–3 раза, подтвержденном впоследствии многими проектами. Авторы клали на разработку системы 15 человеко-лет для построения 15000 команд, затратив на самом деле свыше 30 человеко-лет и соорудив систему в 45000 команд (см. главу 5).
   Библиотека программ ИС-2, трансляторы TA-1 и ТА-2 стали первыми образцами программных продуктов, которые поставлялись вместе с оборудованием машин заводом-изготовителем, образуя интегрированную систему поддержки программирования. В трансляторе Альфа были систематически учтены очень ограниченные ресурсы технологической ЭВМ:
   • функция расстановки, для ускорения работы транслятора, в частности, для экономии совпадающих выражений;
   • многовариантная система программирования процедур и циклов, основанная на анализе структуры программы;
   • реализована глобальная экономия памяти;
   • осуществлен ряд оптимизационных преобразований на уровне промежуточного языка, в частности, объединение циклов с одинаковыми заголовками и чистка циклов.
   После первых успехов в области создания трансляторов ТА-1, ТА-2 и Альфа в 1964-м – 65-м годах отечественные исследования в области автоматизации программирования продолжали сохранять высокий темп развития. Появление ЭВМ 2-го поколения (Минск 2, БЭСМ-4, М-220 и др.) в целом определило созревание концепции математического (программного) обеспечения и идентификацию системного программирования. Интенсивная работа над трансляторами с Алгола-60 привела к практическому исчезновению профессии вспомогательного программиста-кодировщика машинных кодов и замене ее на профессионального системного программиста. Все первые трансляторы писались в восьмеричном машинном коде с минимальными средствами автоматизации. Это привело к появлению первых языков системного программирования и к первой системе построения трансляторов, основанной на промежуточном универсальном машинно-ориентированном языке АЛМО. Пионерскими в области программирования были работы А.П. Ершова [1, 4] по компиляции с минимальной памятью и по теории программирования (схемы Янова – Ершова).
   Параллельно работам по Алголу-60 развивались события, приведшие к организации ассоциации пользователей ЭВМ М-20. В середине 1961-го года решением Президиума Академии наук СССР ассоциация получила статут юридического лица и официальное название «Комиссия по эксплуатации вычислительных машин М-20». Деятельность Комиссии была важна не только созданием прецедента, за которым последовало создание аналогичных ассоциаций для БЭСМ-2, для семейства «Урал», а также для серии «Минск», но и ускорением разработки концепции математического (программного) обеспечения.
   В 1964-м году началось проектирование первых программных операционных систем для пакетной обработки с использованием загрузчиков и трансляторов ассемблеров, работающих в автоматическом режиме с помощью языков управления заданиями. Большую роль в формировании современного взгляда на математическое обеспечение и архитектуру ЭВМ сыграл Конгресс ИФИП 1965-го года, когда концепции совместимых семейств машин, разделения времени, мини-ЭВМ стали объектом делового интереса советских специалистов. Начиная с 1964-го года, разработка математического (программного) обеспечения стала элементом государственной технической политики. Государственный комитет по науке и технике (ГКНТ) был назначен координатором работ по математическому обеспечению существующих машин и генеральным заказчиком для промышленности на математическое обеспечение вновь создаваемых ЭВМ. Ассоциации пользователей ЭВМ активно представляли научно-техническое общественное мнение и играли существенную роль в распространении новых программ. Апробация новых систем программирования, а впоследствии и операционных систем проводилась междуведомственной комиссией по математическому обеспечению под председательством академика А.А. Дородницына и целевыми комиссиями, осуществлявшими приемку новых компонентов математического обеспечения.
   Первая докторская диссертация по программированию была защищена в Киеве Е.Л. Ющенко в 1966-м году по материалу разработки серии трансляторов на основе адресного языка. Л.Н. Королев стал в 1965-м году первым профессором – программистом [4]. Первое время все эти диссертации причислялись к существовавшим в то время родственным специальностям: вычислительной математике, счетно-решающим устройствам и т. д. В середине 60-х годов под влиянием серии работ по теоретическому программированию была образована новая специальность «математическая логика и программирование». А.П. Ершов был первым программистом, ставшим членом-корреспондентом АН СССР в 1970-м году, а в 1980-м году – ее действительным членом. Сознавая социальные последствия использования ЭВМ и культурное значение программирования (он называл его «второй грамотностью»), А.П. Ершов активно проповедовал его введение в школьную информатику и в курс «Основы вычислительной техники и обработки информации». Его желание компьютеризировать школу преследовало двойную цель: развить в молодых людях интеллектуальный дар программирования и обогатить их мощью информационной обработки.
   А.П. Ершов активно поддерживал международный научный обмен и сотрудничество. Он постоянно участвовал в различных комитетах и конференциях IFIP, организовывал многочисленные международные конференции в Новосибирске и других регионах Советского Союза. А.П. Ершов инициировал (и часто редактировал) переводы западных книг по информатике. Установление и развитие личных и профессиональных связей между иностранными учеными и их советскими коллегами было целью, которой он посвятил значительную часть своей энергии.
   Взгляды АП. Ершова на программирование, выраженные в серии очерков, начатой в 1972-м году, привлекли широкое внимание во всем мире. Описывая свою профессию поэтически, он утверждал [6]:
   «…Программист должен обладать способностью первоклассного математика к абстракции и логическому мышлению в сочетании с эдиссоновским талантом сооружать все что угодно из нуля и единицы. Он должен сочетать аккуратность бухгалтера с проницательностью разведчика, фантазию автора детективных романов с трезвой практичностью экономиста. А, кроме того, программист должен иметь вкус к коллективной работе, понимать интересы пользователя и многое другое.
   Машина, снабженная программой, ведет себя разумно. В этот кульминационный момент программист, по существу, представляет троицу. Он ощущает себя отцом – как создатель программы, сыном – как брат машины, выполняющей программу, и носителем святого духа – как тот, кто вложил жизнь в сочетание программы и машины».
   Сильным тормозом в развитии и внедрении автоматизации программирования в 50-е годы было отсутствие буквенно-цифровых устройств ввода-вывода, которые стали общедоступными только с машинами 2-го поколения. Это затрудняло внедрение и ослабляло потребность в разработке комфортных средств отладки. Сужалась и даже становилась в значительной степени бесполезной методика символического кодирования и программирования. Более глубоким последствием стал недостаток внимания к текстовому представлению входных программ для первых трансляторов. Другим примером ограничительного влияния оборудования являлось довлевшее над большинством разработчиков трансляторов требование воссоздать средствами входных языков «любую» машинную программу.

1.3. Первые комплексы программ для оборонных систем в 1950-е – 60-е годы

   Большое число крупных оригинальных, специализированных исследований и производственных работ по программированию, которые были связаны с созданием оборонной техники для авиации, космических, ракетных, морских и наземных систем, долгое время оставались секретными. Они охватывали множество сложнейших вычислительных задач, а также специфические задачи управления и обработки информации в динамических оборонных системах реального времени. Этот класс задач был не актуальным и недоступным для индивидуальных программистов в вузах и научных учреждениях, практически не упоминался в открытой печати, однако в 60-е годы и в дальнейшем ими были заняты в стране сотни тысяч специалистов, связанных с созданием сложных программ для ЭВМ.
   Сергей Алексеевич Лебедев являлся инициатором внедрения электронной вы числительной техники в оборонные системы: в радиолокацию, ракетостроение и системы передачи данных. По его инициативе впервые в СССР, а возможно и в мире, проведены работы по фиксированию данных с радиолокационных станций сопровождения целей в цифровом виде и по передаче управляющей информации для наведения самолета или ракеты на цель. Преимущества вычислительной техники в системах военного применения были впервые продемонстрированы под руководством С.А. Лебедева в «Системе А» – экспериментальной системе противоракетной обороны (ПРО). Данный комплекс управлял радиолокационной станцией дальнего обнаружения и сопровождения цели и точного наведения противоракеты на баллистическую ракету противника [8, 9]. Были разработаны принципы построения вычислительных средств противоракетной обороны и создан высокопроизводительный вычислительный комплекс для решения задач высококачественного автоматического управления сложными, разнесенными в пространстве объектами, работающими в реальном масштабе времени. В его состав входили ЭВМ М-40, радиолокаторы обнаружения и сопровождения цели, радиорелейные линии передачи данных в замкнутой системе точного наведения ракеты, система контрольно-измерительной аппаратуры. ЭВМ М-40 начала выполнять сложные боевые задачи в 1957-м году. Впервые были предложены принципы распараллеливания вычислительного процесса за счет аппаратных средств. В марте 1961 года на этом комплексе впервые в мире была ликвидирована боевая часть баллистической ракеты осколочным зарядом противоракеты. За эти работы коллектив ведущих разработчиков комплекса, в том числе С.А. Лебедев и В.С. Бурцев, был удостоен Ленинской премии. ЭВМ М-50, введенная в строй в 1959 году, и явилась модификацией ЭВМ М-40, обеспечивающей выполнение операций с плавающей запятой и рассчитанной на применение в качестве универсальной ЭВМ. На базе М-40 и М-50 был создан двухмашинный комплекс.
   С 1953-го года Михаил Романович Шура-Бура работал в Отделении прикладной математики Математического института им. В.А. Стеклова, созданном М.В. Келдышем в 1953-м году и преобразованном затем в Институт прикладной математики АН СССР (ныне ИПМ РАН им. М.В. Келдыша). В эти годы главной задачей и организационным успехом М.Р. Шуры-Буры как руководителя отдела программирования в ИПМ было формирование отдела [11]. Первым результатом работы отдела в 1953-м – 1955-м годах было применение программ для расчета энергии взрывов при моделировании ядерного оружия на ЭВМ «Стрела». Постановки задач и методы расчетов для этих программ готовили отделы математиков (А.Н. Тихонов, А.А. Самарский, И.М. Гельфанд). Программирование задач такой сложности в машинных кодах на ЭВМ, имевшей оперативную память емкостью всего 1000 ячеек, неработающий накопитель на магнитной ленте и частые сбои в арифметике и управлении, требовало от программистов виртуозного умения и оригинальных находок в организации отладки программ и счета. В 1954 – м году М.Р. Шура-Бура защитил диссертацию на соискание ученой степени доктора физико-математических наук.
   В середине 50-х годов отдел программирования был привлечен М.В. Келдышем к расчетам траекторий искусственных спутников Земли (ИСЗ). Программы, разработанные сотрудниками отдела, возглавляемого Михаилом Романовичем, для ЭВМ «Стрела», а затем М-20, должны были обеспечивать круглосуточный режим обработки измерений траекторий ИСЗ. Они использовались, начиная с 1957-го года при запуске первых и последующих ИСЗ, при полете Ю.А. Гагарина в 1961-м году и затем в течение последующих 10 лет. Значение этих работ трудно переоценить, потому что результаты траекторных расчетов, производимых в разных организациях, иногда не совпадали, что для управления космическими полетами было недопустимо.
   Весьма значительным было влияние ИПМ и лично М.Р. Шуры-Буры на выбор архитектуры отечественных универсальных компьютеров. В 1955-м году на начальной стадии проекта ЭВМ первого поколения М-20 в разработке участвовали три человека: С. А. Лебедев (общие характеристики и структура машины), М.Р. Шура-Бура (система команд), П.П. Головистиков (схемотехника). Основные архитектурные решения М-20, предложил М.Р. Шура-Бура. Эти архитектурные решения М-20 были сохранены в ЭВМ М-220, М222, построенных на основе полупроводниковой элементной базы. Эти машины стали «рабочими лошадками» для выполнения научных и инженерных расчетов во многих исследовательских, проектных и оборонных организациях страны. Это была одна из немногих моделей ЭВМ, при создании которой объединились проектанты, конструкторы и математики, представленные ИТМ и ВТ, конструкторским бюро, создавшим машину «Стрела».
   Эта солидная основа возлагала большую ответственность на разработчиков, поскольку ее архитектуре предстояло воплотиться в нескольких крупных сериях ЭВМ (М-20, БЭСМ-4, М-220). Для машин типа М-20 – БЭСМ-4, которая также относилась к семейству машин С.А. Лебедева, было разработано, по крайней мере, три системы технологических программ в ИПМ АН СССР, в МГУ, в СО АН СССР. Эти системы отличались мнемоникой задания кодов операций, методами кодирования адресных полей машинных команд и методами настройки программ при размещении их в памяти. В это же время велись интенсивные работы по созданию систем библиотечных программ, отличавшихся друг от друга по правилам размещения их в оперативной памяти и по механизмам обращения к ним. В автокодах учитывалась необходимость размещения библиотечных программ в любом месте оперативной памяти, и были разработаны механизмы настройки подпрограмм по адресам размещения. При проектировании архитектуры машин предусматривалась аппаратная поддержка механизмов обращения к подпрограммам (процедурам) и методов передачи параметров.
   В сферу научных исследований и разработок в начале 60 – х годов в Советском Союзе (почти одновременно в несколько ином виде в США) вошел и был апробирован новый широкий класс вычислительных систем и телекоммуникационных сетей реального времени – первый советский прототип современных информационных глобальных сетей и Интернета. В нем основными компонентами и источниками информации являлись траектории воздушных объектов, характеризующиеся их назначением, координатами и обобщенными параметрами движения, определяющие требования к функциям сложных комплексов программ управления в системе противовоздушной обороны (ПВО) [12]. Телекоммуникационные сети ЭВМ обеспечили обмен и обобщение информации от радиолокационных узлов на большой территории страны для непрерывного обнаружения и сопровождения воздушных объектов. К таким системам заказчиком предъявлялись высокие требования к качеству функционирования и гарантированного решения задач.
   Примером оригинальных (в то время секретных) работ в НИИ-5 (МНИИПА) являлось создание программ реального времени и телекоммуникационной сети системы ПВО страны и радиолокационного узла (РЛУ) «Межа» (главный конструктор Владимир Алексеевич Шабалин, заместитель – Анатолий Николаевич Коротоношко). Программный комплекс обработки радиолокационной информации в 1962-м – 68-м годах на ЭВМ 5Э89 был создан под руководством Владимира Васильевича Липаева (докторская диссертация – 1967-й год по специальности радиолокация). При этом был разработан в 1962-м году принципиально новый тип операционной системы реального времени на ЭВМ для автоматической синхронизации и управления динамическим решением разнородных задач о движущихся воздушных объектах при случайных потоках информации из внешней среды и случайной длительности обработки каждого сообщения. Операционная система обеспечивала функционирование комплекса программ телекоммуникационные сети для транспортировки и обработки информации на ЭВМ между несколькими соседними РЛУ о траекториях движения динамических объектов и для обобщения характеристик их траекторий.
   В эти годы генерирование динамических тестов от внешних объектов на специализированных мобильных ЭВМ было невозможно вследствие ограниченности их вычислительных ресурсов. В 1965-м году для имитации тестов от движущихся объектов внешней среды в реальном времени были разработаны программы формирования магнитофильмов на универсальной ЭВМ М-20. На этой машине предварительно формировались и записывались на специализированных магнитофонах наборы динамических тестов о разнообразных ситуациях воздушной обстановки и движения объектов с регистрацией значений реального времени сообщений и их координат с точностью до секунды. Имитации внешней среды и динамических тестов в реальном времени, впоследствии стало широко применяться при разработке комплексов программ оборонных систем для испытаний и гарантирования их качества.
   Возрастание сложности и ответственности оборонных зада ч, которые решаются крупными системами, а также увеличение возможного ущерба от недостаточного качества комплексов программ, значительно повысило актуальность освоения методов стандартизированного описания требований, а также оценивания характеристик качества на различных этапах жизненного цикла сложных комплексов программ. Широкое многообразие классов и видов программ, обусловленное различными функциями оборонных систем, предопределяло формальные трудности, связанные с методами и процедурами доказательства соответствия программного продукта условиям контрактов, требованиям заказчиков и потребителей. По мере расширения сферы применения и увеличения сложности выделились области, в которых ошибки или недостаточное качество программ или данных могли нанести ущерб, значительно превышающий положительный эффект от их использования.
   Для создания безопасных систем и программных продуктов, прежде всего, необходимо было формализовать их назначение, функции и основные характеристики. На этой основе должны разрабатываться требования к безопасности и другим характеристикам качества, к обработанной информации для потребителей, адекватной назначению и функциям систем. Требования к функциям систем и программным продуктам, а также к безопасности их функционирования должны были соответствовать доступным ресурсам для их реализации с учетом допустимого ущерба – рисков при неполном выполнении требований. Основными источниками отказовых ситуаций были некорректные исходные требования, сбои и отказы в аппаратуре, дефекты или ошибки в программах и данных функциональных задач, проявляющиеся при их исполнении в соответствии с назначением. Стратегической задачей в жизненном цикле оборонных систем стало обеспечение требуемого качества программных продуктов при реальных ограничениях на использование вычислительных и иных ресурсов, выделяемых для их разработки и применения.

1.4. Организация подготовки первых программистов в 1950-е – 60-е годы

   В Московском, Ленинградском и Киевском университетах в 1950-е годы началась подготовка специалистов по вычислительной математике, в технических высших учебных заведениях появились курсы по вычислительной технике, и стали открываться кафедры вычислительных машин [1, 4, 11]. Министерство высшего образования и Высшая аттестационная комиссия ввели формальный список таких специальностей. Эти списки в системе образования и научной аттестации играли в СССР важную роль, т. к. служили средством идентификации и формального признания квалификации специалистов. В частности, каждая образовательная специальность получала право иметь самостоятельный учебный план от первого до выпускного года обучения. Учебный план в своей основной части являлся обязательным для каждого вуза и утверждался министерством. Имелось, однако, некоторое количество курсов и семинаров по выбору, которые использовались для более конкретной специализации студентов в рамках данной специальности.
   В 1952-м году в нескольких университетах была открыта в дополнение к существовавшей специальности «математика» новая специальность «вычислительная математика», предназначенная для подготовки специалистов, использующих вычислительную технику. Первый учебный курс программирования в СССР был прочитан А.А.Ляпуновым в 1952-м – 53-м учебном году. Структура курса складывалась на глазах у студентов. В перерыве между первым и вторым семестрами у лектора начали складываться основные подходы к «операторному методу». Вся вторая половина курса – это была по существу совместная работа профессора и студентов по созданию и уточнению символики операторов, используемых при составлении схем программ. Курс читался и воспринимался с большим энтузиазмом, и неслучайно почти половина слушателей, математиков-вычислителей, стали после выпуска профессиональными программистами. В 1955-м году в Московском университете при кафедре вычислительной математики работал семинар по смежным вопросам кибернетики и физиологии, который с 1956-го года принял название «семинар по кибернетике».
   В 1955-м году чтение курса программирования в МГУ продолжил М.Р. Шура-Бура [1, 4]. Первой книгой об ЭВМ, рассчитанной на массового читателя, была книга А.И. Китова «Электронные цифровые машины», вышедшая в середине 1956-го года. Хорошим качеством книги была убедительная и увлекающая свежего читателя демонстрация новизны, вносимой ЭВМ в практику человеческой деятельности. Ее развитием стал учебник А.И. Китова и Н.А. Криницкого «Электронные цифровые машины и программирование» [5]. Это была первая книга, официально рекомендованная министерством высшего образования в качестве учебного пособия, весьма солидного объема (572 стр.), и изданная большим тиражом (25 тыс. экземпляров). Первым учебником, специально посвященным программированию, была книга киевских авторов Б.В. Гнеденко, А.С. Королюка и Е.Л. Ющенко «Элементы программирования». Они использовали для изложения условную ЭВМ и дидактику курса А.А. Ляпунова. Отдельная глава была посвящена символике адресного программирования. Первой попыткой создать солидный университетский курс программирования, базировавшийся на Алголе-60, была книга Е.А. Жоголева и Н.П.Трифонова «Курс программирования», основанная на опыте чтения лекций по программированию в МГУ.
   Потребности в специалистах по программированию и в усилении подготовки по технологии системного программирования, как для общего математического обеспечения, так и для прикладных программ, привели к организации в 1969-м году новой специальности «прикладная математика» (для университетов и политехнических институтов), а также специальности «автоматизированные системы управления» (АСУ) (для отраслевых институтов). В 1975-м году подготовка по этим специальностям осуществлялась на 54 (прикладная математика) и 43 (АСУ) факультетах с общей численностью выпуска порядка 5000 человек в год.

Глава 2. История отечественной вычислительной техники в 1950-е – 70-е годы

2.1. История семейства стационарных универсальных вычислительных машин «Урал» в 1960-е – 70-е годы

   В середине 60-х годов и в последующие годы, заводами страны производился серийно ряд оригинальных типов универсальных ЭВМ— БЭСМ-4; Урал-11 – 14; М-220; М-222; Минск-22; Минск-32; Раздан-2; Наири; Мир-1— 3 и другие – (см. рис. 1). Наиболее полно перечень свыше тридцати типов и десяти семейств ЭВМ, разработанных в СССР, представлен в Виртуальном компьютерном музее [10]. Некоторые ЭВМ имели экспериментальный характер или выпускались столь малыми сериями, что практически не отражались на вычислительном потенциале страны и не позволяли широко распространять и применять разрабатываемые на них программы. Поэтому далее в монографии этапы история программной инженерии отражены на ряде примеров технологических программных средств и операционных систем, оказавших наибольшее влияние на вычислительный потенциал страны, так как было нецелесообразно излагать историю программной инженерии для всей совокупности созданных вычислительных машин.
   Для выделенных и рассматриваемых машин были созданы различные по функциям и качеству операционные системы и технологические компоненты программной инженерии. Квалификация их разработчиков значительно различалась, среди их продуктов можно найти оригинальные технические решения, однако большинство обеспечивало основные типовые функции автоматизации программирования, для более или менее комфортного применения соответствующих ЭВМ индивидуальными пользователями. В конце 60-х годов стало ясно, что необходимо сокращать разнотипность машин и сосредоточить их производство и разработку технологического программного обеспечения на нескольких типах наиболее перспективных универсальных ЭВМ для массового применения в научных учреждениях и промышленных предприятиях страны. Для таких ЭВМ следовало активизировать и сконцентрировать усилия специалистов по их оснащению эффективными средствами программной инженерии с целью расширения сфер применения и повышения производительности разработчиков прикладных программных продуктов.
   Пензенская научная школа в области вычислительной техники, созданная Баширом Искандеровичем Рамеевым получила широкую известность и признание благодаря его таланту и колоссальному труду, вложенному в разработку и выпуск целого ряда вычислительных машин [11]. Первый, ламповый «Урал -1», был выпущен в 1957 году. Он стал «рабочей лошадью» во многих вычислительных центрах страны. Для серийного производства машины «Урал-1» был выбран завод в Пензе. Вместе с группой молодых специалистов, работавших с ним в Москве в СКБ-245, Б.И. Рамеев в 1955 – м году переехал в этот город. Коллектив разработчиков, который составил Пензенскую школу, начал складываться в 1952 – 54 годах еще в Москве в СКБ-245. Часть сотрудников училась в МИФИ, а после окончания института были направлены в СКБ-245.
   В Пензе Б.И. Рамеев становится главным инженером и заместителем директора по научной работе НИИ математических машин (потом НИИ управляющих машин) и главным конструктором вычислительных машин «Урал». Машина «Урал-1» стала родоначальницей целого семейства. Простота машины, удачная конструкция, невысокая стоимость обусловили ее широкое применение. После «Урал-1» на той же элементной базе (на электронных лампах) были созданы еще две машины: в 1959 году – «Урал-2», а в 1961 – м году – «Урал-4». По сравнению с первым «Уралом» их быстродействие увеличилось в 50 раз, оперативная память была реализована на ферритовых сердечниках и значительно увеличен объем внешней памяти.
   В 1960-м году были начаты работы по созданию семейства полупроводниковых «Уралов». Основные черты нового поколения машин были сформулированы еще в 1959-м году. В соответствии с ними определили состав семейства машин, их структуру, архитектуру, интерфейсы, установили принципы унификации, утвердили технические задания на устройства, ограничения на используемые комплектующие изделия и некоторые другие документы. В процессе проектирования обсуждались с разработчиками основные решения и ход работы. В ноябре 1962-го года была закончена разработка унифицированного комплекса компонентов «Урал-10», рассчитанного на автоматизированное производство. Хотя компоненты разрабатывались для использования в серии ЭВМ «Урал-11» – «Урал-16», они нашли широкое применение и в других средствах вычислительной техники и автоматике. Для этих целей было выпущено несколько миллионов штук компонентов.
   В семейство полупроводниковых «Уралов» входили три модели: «Урал-11», «Урал-14» и «Урал-16». Первые две модели стали выпускаться серийно с 1964 года, а последняя – с 1969 года. Выпуск моделей этого семейства ознаменовал новую веху в творческом наследии главного конструктора Б.И. Рамеева. Это первое в нашей стране семейство машин с унифицированной системой организации связи с периферийными устройствами (унифицированный интерфейс), унифицированной оперативной и внешней памятью. В моделях этого семейства нашли свое воплощение многие идеи, которые затем широко использовались в машинах третьего поколения (развитая система прерываний, эффективная система защиты памяти, развитое программное обеспечение).
   Это семейство являлось выдающимся примером создания массовых, программно совместимых универсальных ЭВМ разной мощности в 70-е голы, на единой конструктивной, технологической и схемной базе. Основные особенности поколения машин, воплощенные Б.И. Рамеевым в серии «Урал», сводились к следующему:
   • машины представляли собой конструктивно, схемно- и программно совместимый ряд ЭВМ различной производительности, с гибкой блочной структурой;
   • с широкой номенклатурой устройств, со стандартизованным способом подключения, позволяющим подобрать комплект машины, наиболее подходящий для данного конкретного применения, и поддержать в процессе эксплуатации параметры машины на уровне изменяющихся потребностей заказчика и новых разработок устройств;
   • конструктивные и схемные возможности позволяли комплектовать системы обработки информации, состоящие из нескольких одинаковых или разных машин, обеспечивая плавное изменение количественных характеристик и существенно расширяя ряд в сторону увеличения производительности, круга решаемых задач и областей применения;
   • наличие датчика времени, аппаратуры сопряжения с каналами связи и пультов операторов для связи с машиной давали возможность строить различные системы обработки данных коллективного пользования, работающие в режиме разделения времени;
   • возможности резервирования отдельных устройств и машин обеспечивали создание систем повышенной надежности для обработки информации в заданное время.
   В семействе ЭВМ были предусмотрены:
   система схемной защиты информации, независимость программ от места в памяти, система относительных адресов, развитая система прерываний и приостановок и соответствующая система команд, позволяющая организовать сложную систему одновременно работающих устройств и одновременное решение многих задач;
   • – возможность резервирования отдельных устройств машин, позволяющая создавать системы повышенной надежности: системы схемной защиты данных, независимость программ от их места в памяти, система относительных адресов, развитая система прерываний и соответствующая система команд;
   • возможность работать в режимах: с плавающей и фиксированной запятой, в двоичной и десятичной системах счисления, выполнение операций со словами фиксированной и переменной длины, что позволяло эффективно решать, как планово-экономические, информационные, так и научно-технические задачи;
   • система аппаратного контроля устройств хранения, адресации, передачи, ввода и обработки информации;
   • большая емкость оперативной памяти с непосредственной выборкой слов переменной длины, эффективные аппаратные средства контроля и защиты программ друг от друга, ступенчатая адресация, развитая система прерываний и приостановок;
   • возможность подключения памяти большой емкости с произвольной выборкой на магнитных барабанах и дисках, наличие датчика времени, аппаратуры сопряжения с каналами связи и пультов операторов для связи с машиной, что давало возможность строить различные системы обработки информации коллективного пользования, работающие в режиме разделения времени.
   Основные черты этого поколения машин были изложены еще в 1963-м году в проекте на семейство ЭВМ. Он появился на полтора года раньше публикаций об американском семействе машин IBM-360. Таким образом, идея создания семейства программно и конструктивно совместимых ЭВМ была опубликована Б.И. Рамеевым независимо от американских ученых и реализована практически одновременно. В отличие от первых моделей семейства IBM-360, семейство «Урал» обеспечивало возможность создания систем обработки информации, состоящих из нескольких одинаковых или разных машин, было рассчитано на работу в сетях и, наконец, было открытым для дальнейшего наращивания технических средств для конкретных систем. Семейство этих ЭВМ производилось серийно с 1964-го года и более десятка лет широко применялось на промышленных предприятиях в стране.

2.2. История стационарных универсальных, высокопроизводительных ЭВМ в 1960-е – 70-е годы

   Наибольшее влияние на программирование в 70-е годы оказало появление машины БЭСМ-6 [2]. Ее автором был академик Сергей Алексеевич Лебедев – глава выдающейся отечественной научной школы в области вычислительной техники и программирования. В архитектуре этой машины было сделано много для аппаратной поддержки операционных систем: аппаратная поддержка виртуальной памяти; защита памяти; развитая структура двухуровневой системы прерываний; защищенный супервизорный режим и т. п. Все эти характеристики являлись неотъемлемым признаком современных процессоров, но во времена создания БЭСМ-6 это было необычным и новым. БЭСМ-6, разработанная в ИТМ и ВТ совместно с Московским заводом счетно-аналитических машин (САМ), начала выпускаться с 1968 года, а в 70-х годах была среди универсальных ЭВМ самой высокопроизводительной в мире.
   Основная цель [2, 7], которую преследовали авторы проекта БЭСМ-6 – создать быстродействующую серийную машину, сравнительно дешевую, удовлетворяющую наиболее важным современным требованиям с точки зрения автоматизации программирования и развития операционных систем, оснащенную имевшимися в то время в отечественном серийном производстве внешними запоминающими устройствами и устройствами ввода-вывода. Машина БЭСМ-6 предназначалась для решения крупных научно-технических задач, что, естественно, отразилось как на ее архитектуре, так и на выборе системы элементов и конструкции. Она не являлась копией какой-либо отечественной или зарубежной установки ни по системе команд, ни по внутренней структурной организации. При ее создании и проектировании был изучен и проанализирован опыт создания ЭВМ высокой производительности, накопленный к тому времени. В БЭСМ-6 были реализованы новые архитектурные и схемотехнические решения, многие из которых отразились в появившихся потом машинах третьего поколения.
   Машины БЭСМ-6 составили стратегическую основу вычислительных средств большинства крупных вычислительных центров и оборонных предприятий страны. Сфера использования машины превзошла прогнозы ее разработчиков. Первоначально предполагалось, что небольшая серия БЭСМ-6 будет использована для решения крупных научных задач в нескольких научных институтах Советского Союза и ядерных центрах. Реально эта машина нашла значительно более широкое применение. На основе БЭСМ-6 были созданы центры коллективного пользования, центры управления в реальном масштабе времени, координационно-вычислительные центры, системы телеобработки и т. д. Машина БЭСМ-6 широко использовались в системах автоматизации проектирования, для моделирования сложнейших физических процессов и процессов управления, как инструментальная машина для разработки крупных программных продуктов оборонных систем и различных новых ЭВМ.
   Важной особенностью машины явились аппаратные и программные средства для обеспечения мультипрограммного режима. К ним относятся виртуальная адресация памяти со страничной организацией, система прерывания и соответствующие программы операционной системы, наличие нескольких режимов выполнения команд в процессоре. Высокая скорость преобразования виртуальных адресов в физические обеспечивалась размещением таблицы их соответствия в регистровой памяти. Имелись аппаратные механизмы защиты памяти для команд и операндов. Все это обеспечивало возможность динамического распределения памяти в процессе вычислений средствами операционной системы.
   По уровню производительности и степени согласования аппаратных средств с архитектурой, а также архитектуры – с алгоритмами научно-технических задач, БЭСМ-6 может быть отнесена к классу суперЭВМ. БЭСМ-6 за счет многочисленных нововведений архитектурного и структурного плана при основной тактовой частоте 10 МГц выполняла в среднем один миллион операций в секунду над 48-разрядными операндами. В начале 60-х годов отечественной промышленностью были созданы высокочастотные транзисторы и диоды, на основе которых была разработана элементная база машины (в машине было использовано около 60 тыс. транзисторов и 180 тыс. диодов).
   Назначение машины, ее архитектурные и структурные особенности, отвечающие современным идеям, потребовали создания соответствующей операционной системы и системы программирования, удовлетворяющих требованиям пользователей. БЭСМ-6 стала первой отечественной ЭВМ, которая была принята государственной комиссией и поставлялась как система аппаратных средств совместно с ее системным программным обеспечением (см. главу 3). Работы по исследованию и разработке операционных систем, стратегий распределения ресурсов и планирования вычислений в нашей стране начались широким фронтом с появлением БЭСМ-6 [7, 11].
   В 1968-м году на Московском заводе счетно-аналитических машин (САМ) началось производство ЭВМ БЭСМ-6. Полностью новый компьютер на основе транзисторов и интегральных схем был разработан под руководством С.А. Лебедева, В.А. Мельникова и Л.Н. Королева. При его разработке была поставлена серьезная задача – достичь производительности порядка 1000000 операций в секунду (один мегафлоп). БЭСМ-6 сильно опередила свое время, став началом второго поколения ЭВМ. Она вобрала в себя много оригинальных идей. Систем подобного класса в мире не было. Одно из основных отличий и главных новшеств – «лебедевская водопроводная структура» процессора, позволяющая совмещать обработку различных команд на разных стадиях их выполнения.
   Уже позже западные коллеги придумали для этого метода термин «конвейер» (все процессоры на сегодняшний день используют конвейерную архитектуру). Отныне к разным блокам памяти можно было обращаться одновременно, появился прообраз кэш-памяти – сверхбыстрое устройство хранения часто используемых данных и команд. Все эти улучшения обеспечили качественный скачок производительности. Коллеги и современники называли С.А Лебедева настоящим гением— при всей сложности собранной системы, он сумел отсечь все ненужное, оставив самые необходимые блоки. В период с 1968-го по 1987-й год было выпущено порядка 400 машин БЭСМ-6, которые использовали в самых разных, преимущественно оборонных отраслях. Важной особенностью БЭСМ-6 считается программное обеспечение – впервые с момента появления отрасли, ЭВМ начали поставлять с необходимым софтом прямо с завода. Для БЭСМ-6 была разработана полноценная операционная система, над ней трудились лучшие советские умы из Института прикладной математики АН СССР, Вычислительного центра Академии наук и Московского государственного университета (см. главу 3).
   С.А. Лебедев одним из первых понял значение системного программирования, значение совместной работы программистов-математиков и инженеров при создании вычислительных систем, включающих как неотъемлемую часть технологическое программное обеспечение, состав и качество которого определяет удобство использования и эффективность работы систем в целом. По инициативе С.А. Лебедева в ИТМ и ВТ в 60-е годы была создана лаборатория математического обеспечения, выполнявшая разработку системного программного обеспечения для всех вычислительных систем: ЭВМ БЭСМ-6, многомашинного информационно-вычислительного комплекса АС-6, ЭВМ серии «Эльбрус», ЭВМ специального назначения.
   Математики-программисты принимали полноправное участие в разработке архитектур создаваемых машин, математическом моделировании их структурной организации, создании системы автоматизации проектирования ЭВМ. Все схемы БЭСМ-6 по инициативе С.А. Лебедева были записаны формулами булевой алгебры, что открыло широкие возможности для автоматизации проектирования и подготовки монтажной и производственной документации. Она выдавалась на завод в виде таблиц, полученных на «инструментальной» ЭВМ БЭСМ-2. В разработке БЭСМ-6 были впервые применены методы проектирования и описания, которые в дальнейшем стали широко использоваться при создании новейших суперЭВМ. В годы становления вычислительной техники далеко не у всех было понимание важности системного, технологического программного обеспечения и системного (инженерного) программирования. Программирование систем жесткого реального времени (например, в системах ПВО) являлось одной из самых сложных задач программирования, с наиболее высокой ценой каждой допущенной ошибки, которые, тем не менее, проявлялись даже при натурных испытаниях. Надежность в значительной степени обеспечивается большим запасом мощности основных элементных блоков (диоды и транзисторы были нагружены на 25–40 % от допустимого номинала). Время наработки на отказ достигало нескольких сотен часов.
   Влияние машины БЭСМ-6 на развитие отечественной вычислительной техники определялось не только длительностью эксплуатации, сколько тем, что заложенные при создании машины идеи оказались весьма плодотворными. Несколько поколений инженеров и программистов, работавших на БЭСМ-6, были воспитаны на этих идеях. Разработка БЭСМ-6, составившей целую эпоху в отечественном вычислительном машиностроении, явилась примером творческого подхода к созданию ЭВМ, учитывающего все возможности, предоставляемые технической базой, математическим моделированием структурных решений, а также возможности производства для достижения наилучших характеристик машины.
   Система АС-6 (главные конструкторы – В.А. Мельников, А.А. Соколов) была предназначена для решения больших научных и экономических задач, задач обработки информации и управления в реальном времени [2, 11]. Машина разработана коллективом ИТМ и ВТ АН СССР совместно с заводом САМ. Разработка АС-6 была завершена в 1975 году, а в 1977 году Московский завод САМ начал изготовление системы малой серией.

2.3. История стационарных, специализированных ЭВМ реального времени в 1970-е – 80-е годы

   На 1970-е – 80-е годы пришлось активное развитие отечественных, специализированных ЭВМ и сложных комплексов программ для стационарных систем противоракетной обороны. При этом основное внимание было сосредоточено на разработке аппаратуры ЭВМ и на достижении высоких характеристик по их производительности в реальном времени. При доступной элементной базе это достигалось в значительной степени путем специализации архитектуры и структуры команд ЭВМ, в соответствии с конкретными функциональными задачами и алгоритмами работы оборонных систем. Высокие требования руководства страны к срокам и темпам разработки систем, приводили к сосредоточению всех усилий специалистов и промышленности на создании аппаратуры ЭВМ. До завершения ее монтажа и испытаний, программирование и отладка комплексов программ зачастую оказывалась невозможной, в частности, вследствие уникальности систем команд этих машин. Первичная разработка и отладка программ обычно начиналась на «сырых» машинах в объектном коде, практически без применения технологического инструментария «на одном энтузиазме». Впоследствии машины оснащались минимумом технологических средств на уровне автокодов, которые применялись при развитии и совершенствовании «унаследованных» комплексов программ. В результате, существовавшие в стране на других оборонных предприятиях, методы и инструментальные средства программной инженерии в рассматриваемой сфере в это время практически не использовались.
   В 1964 году под руководством Сергея Алексеевича Лебедева была разработана и прошла межведомственные испытания ЭВМ 5Э92б, (первая группа специализированных машин) предназначенная для использования в системе контроля космического пространства и обработки телеметрии спутников [2, 9, 11]. ЭВМ 5Э92б – модификация М-50, применялась в вычислительных и управляющих информационных комплексах управления космическими объектами, центрах контроля космического пространства. Межведомственные испытания комплекса из восьми машин прошли в 1967 году. Программное обеспечение включало развитую систему тестовых и диагностических программ, существенно использующую аппаратный контроль и позволяющую определить неисправный блок.
   Первая очередь системы включала одномашинный вычислительный комплекс 5Э92б, системы передачи данных и одного рабочего места оператора на командном пункте. В 1969 году были проведены государственные испытания, и работы по первой очереди завершились. На этом этапе вычислительный комплекс позволял ежесуточно обрабатывать около 4000 радиолокационных измерений и около 200 оптических наблюдений и иметь главный каталог емкостью до 500 формуляров по космическим объектам. Запаздывание в обработке информации было сокращено с нескольких суток до нескольких часов.
   Машина 5Э92б была модернизирована в части введения арифметики с плавающей запятой и мультипрограммного режима, и получила название ЭВМ 5Э51. Ее серийный выпуск начался в 1967 году. Благодаря автономной работе основных устройств и, в первую очередь, процессора ввода-вывода на базе общего ОЗУ, эти машины успешно использовались при создании многомашинных комплексов с единой внешней памятью. ЭВМ была надежной, достаточно производительной и удобной в эксплуатации. В общей сложности Загорский электромеханический завод выпустил большую серию из почти трехсот ЭВМ 5Э92б и 5Э51. Но, несмотря на это, машин не хватало, и, как правило, все ЭВМ забирало министерство обороны. Функциональные программы системы создавались в основном в машинных кодах, а позднее на автокоде.
   Вторая очередь системы предусматривала замену 5Э92б на модернизированный четырехмашинный комплекс на базе ЭВМ 5Э51. Командный пункт оборудовался коллективными средствами отображения космической обстановки и рабочими местами операторов. В 1972 году был испытан трехмашинный вычислительный комплекс 5Э51, а в 1973 году были успешно проведены испытания четырехмашинного комплекса на базе этой же ЭВМ и новой программно-алгоритмической системы, в которой обработка координатной информации была практически полностью автоматизирована. Для контроля космического пространства с командным пунктом взаимодействовали несколько измерительных пунктов (ИП) на территории СССР и на кораблях в море. На ИП предварительно, на ЭВМ М-220 обрабатывалась информация о координатах, параметрах и состоянии космических объектов, которая селектировалась и сжималась для последующей передачи на командный пункт. На этом завершились работы по созданию второй очереди. Общая производительность вычислительного комплекса командного пункта составила около двух миллионов операций в секунду. Обладая высокой надежностью, он проработал до начала 90-х годов.
   В 1957-м году началась разработка одной из первых в Советском Союзе транзисторных машин – для обработки данных радиолокационных станций (РЛС) под руководством Михаила Александровича Карцева (вторая группа специализированных машин). В ноябре 1962-го года вышло постановление правительства о запуске М-4 в серийное производство [11]. Это была первая опытная машина, сделанная на транзисторах. Еще в 1966-м году М.А. Карцев выдвинул идею создания многомашинного вычислительного комплекса, построенного из вычислительных машин, специально разработанных для совместной работы в таком комплексе. Проведенные исследования показали, что производительность комплекса может достигнуть миллиарда операций в секунду. На то время ни одна из машин в мире не имела такой производительности! Это воодушевляло М.А. Карцева, увлекало коллектив разработчиков. Уже в 1967-м году был разработан эскизный проект комплекса (ВК М-9). При защите в министерстве он получил положительную оценку. Вскоре был организован Научно-исследовательский институт вычислительных комплексов (НИИ ВК), а самого М.А. Карцева назначили директором.
   В марте 1963-го года распоряжением Военно-промышленной комиссии НИИ ВК была поручена разработка ЭВМ М4-2М. Задача системы – обеспечивать военно-политическое руководство страны достоверной информацией о возможной угрозе ракетного нападения и обстановке в космосе, т. е. она имеет чисто оборонительный характер. Для обеспечения возможности работы на трех уровнях были созданы три модификации М4-2М – 5Э71 для радиолокационных станций, 5Э72 – для командных пунктов (КП) радиолокационных узлов, 5Э73 – для будущего КП комплекса ПРО. В октябре 1964 года начались приемо-сдаточные испытания, в ноябре машина была принята заказчиком и отправлена на головной объект. К концу 1964-го года еще шесть машин 5Э71 были отгружены на объекты заказчика. В 1965-м – 66-м годах были проведены стыковки машин с РЛС и отработка на них программного обеспечения, которое создавалось следующим образом [9, 11].
   Работы шли в три смены, особенно у разработчиков программ, которые отлаживались на штатных ЭВМ в составе РЛС и командного пункта ПРО. Машинное время расписывалось до минуты. Программирование рабочих алгоритмов было очень трудоемким процессом. Средств автоматизации программирования в то время практически не было, да и применить их было нельзя. Это было неизбежно из-за крайне ограниченных ресурсов памяти и производительности ЭВМ. Чтобы «втиснуть» функциональные программы системы в отведенные ей память и время работы, приходилось перепрограммировать по несколько раз. Современные программисты вряд ли могут представить, как можно было сжать до четырех тысяч машинных команд всю рабочую программу радиолокационного узла ПРО. Он с двумя секторными РЛС должен был обеспечивать одновременное обнаружение траекторий целей, уточнение траекторий для шести сопровождаемых целей, выдачу в нужной форме информации на средства отображения и на командный пункт.
   В 1963-м году в тематическом отделе была создана лаборатория по разработке программного обеспечения для будущих радиолокационных станций и командных пунктов узлов ПРО. В лаборатории было определено два направления по созданию программно-алгоритмического обеспечения. Разработка алгоритмов для командных пунктов узлов была поручена одной группе специалистов, а разработка алгоритмов и программ для радиолокационных узлов другой. Главная трудность на первом этапе заключалась в том, чтобы представить себе поставленную задачу, понять, что нужно делать и как ее решать. Ни в зарубежной, ни в отечественной закрытой литературе найти прототипы не удалось (последствия барьеров секретности). Прежде всего, были определены алгоритмы, связанные с траекторной обработкой информации о космических объектах. С большим трудом удавался выбор методов первичной обработки радиолокационной информации от момента выхода ее с аппаратуры РЛС до момента формирования математических опорных точек траекторий целей. (Однако, в то же время подобные задачи успешно решались в НИИ-5 при создании радиолокационных узлов «Межа» и командных пунктов системы ПВО страны, см. главу 3. Эти проекты, к сожалению, вследствие глубокой секретности, развивались параллельно и совершенно независимо, без обмена информацией.
   В конце 1965-го года на узле были смонтированы две из трех предусмотренных по штату ЭВМ 5Э71, функционировало несколько линеек приемно-индикационной аппаратуры станции, настраивались передатчики. Можно было начинать отладку боевой программы на реальных вычислительных средствах и проводить пробную стыковку с аппаратурой [9]. ЭВМ 5Э71 имела высокую надежность, была простой и удобной в эксплуатации, но для программистов была пока еще фактически грудой железа. Никаких технологических программных средств к ней не прилагалось. Не было даже операционной системы реального времени и программной среды, в которой она работает. Все это предстояло создавать на месте. Год непрерывной круглосуточной работы программистов и алгоритмистов принес свои плоды. К концу 1966 года боевая программа уже вполне достойно функционировала в составе системы. Формальным и успешным подтверждением этому были завершившиеся конструкторские испытания станции. Существенных претензий к боевой программе ни со стороны главного конструктора, ни со стороны заказчиков объекта предъявлено не было. (РЛУ «Межа» на ЭВМ 5Э89 в системе ПВО успешно завершил государственные испытания в 1967 году).
   В 1969-м году главный конструктор М.А. Карцев начал разработку ЭВМ М-10, которая в 1973-м году начала эксплуатироваться [3, 9]. Создание ЭВМ М-10 долго держалось в глубоком секрете, потому что машина разрабатывалась для Системы предупреждения о ракетном нападении (СПРН), а также для общего наблюдения за космическим пространством. На околоземных орбитах тогда находится около 17 тысяч объектов различного происхождения, включая действующие и отслужившие свой срок спутники, куски ракетоносителей и пр. Первый эшелон СПРН – космический: по факелам запускаемых ракет, на спутниках засекают их старт. Костяк системы – ее второй, наземный эшелон, включающий мощные радиолокационные станции, расположенные по окраинам страны (до развала СССР их было девять – под Ригой, Мурманском, Балхашем, Иркутском, и т. д.), а также сопряженные с ними вычислительные комплексы на базе ЭВМ М-10, которые имели следующие основные характеристики [3]:
   • среднее быстродействие – 5 млн. операций в секунду, быстродействие на малом формате <16 разрядов – около 10 млн. операций в секунду;
   • общий объем внутренней памяти – 5 млн. байт;
   • первый уровень – оперативная память – 0,5 млн. байт; постоянная память 0,5 – млн. байт.
   • второй уровень памяти – 4 млн. байт;
   • показатели надежности: коэффициент готовности – не менее 0,975, время (среднее) безотказной работы – не менее 90 часов;
   • обеспечивалась одновременная работа 8 пользователей на восьми математических пультах.
   К началу 1980-х годов ЭВМ М-10 обладала: наивысшими производительностью (по некоторым оценкам – 20–30 млн. операций в сек.), емкостью внутренней памяти и пропускной способностью мультиплексного канала, достигнутыми в СССР. Впервые в мире в ней был реализован ряд новых прогрессивных решений, в том числе: предусмотрена возможность синхронного комплексирования до семи ЭВМ при прямом (минуя мультиплексный канал) обмене информацией между программами отдельных машин. При динамическом разделении оборудования; реализована автоматическая перестройка поля процессоров; в состав ЭВМ введен второй уровень внутренней памяти емкостью более 4 млн. байт с произвольным доступом; обеспечен внешний обмен с обоими уровнями внутренней памяти.
   В 1978-м году главный конструктор М-10 – М.А. Карцев, предложил приступить к работам по созданию новой, многопроцессорной векторной вычислительной машины М-13, используя опыт, полученный при разработке, изготовлении и эксплуатации машин М-10 и М-10М, а также новейшие достижения в технологии и в электронной технике [3, 11]. В 1979-м году коллектив НИИ ВК начал разработку конструкторской документации. Были определены и заводы-изготовители, на которых предполагалось вести производство машины М-13. В течение 1980-го – 81-го годов конструкторская документация комплектно, по устройствам была передана на заводы.
   ЭВМ М-13 стала машиной четвертого поколения, в качестве элементной базы в ней были использованы большие интегральные схемы. В архитектуре этой многопроцессорной векторной ЭВМ, предназначенной, в первую очередь, для обработки в реальном масштабе времени больших потоков информации, были предусмотрены четыре основных части: центральная процессорная часть, аппаратные средства поддержки операционной системы, абонентское сопряжение, специализированная процессорная часть. Специализированная процессорная часть машины была предназначена для обработки больших массивов относительно малоразрядной информации (быстрое преобразование Фурье, вычисление корреляционных функций, сравнение с порогом, проверка гипотез и др.) и имела в качестве базовых операции произведение двух комплексных чисел (двухточечное преобразование Фурье). Специальный (комплексный) арифметический процессор выполняет эту базовую операцию за один машинный такт. Эквивалентное быстродействие линии комплексных процессоров на порядок превышало быстродействие линии арифметических процессоров на сопоставимых форматах данных. Эквивалентное быстродействие специализированной процессорной части машины М-13 в максимальной комплектации при решении указанных выше задач могло достигать 2,4109 операций в секунду.
   Абонентское обеспечение машины М-13 содержало операционную систему, систему программирования и отладки, файловую систему, систему документирования, библиотеку типовых программ и обеспечивало [3, 11]:
   • реальный масштаб времени (РМВ), режим разделения времени (РВ), пакетную обработку;
   • 4 задания РМВ, 16 заданий РВ;
   • многосеансовое выполнение до 256 заданий;
   • устранение последствий сбоев и резервирование.
   Система автоматизации программирования и отладки включала:
   • ассемблеры, Т-язык;
   • алгоритмический язык высокого уровня, ориентированный на векторные вычисления;
   • интерактивный режим отладки заданий РВ и РМВ в понятиях используемого языка;
   • файловую систему;
   • систему документирования;
   • библиотеку типовых программ;
   • систему технического обслуживания.
   Машина М-13 имела модульное построение и допускала переменную комплектацию, способную оптимально обеспечить пользователю необходимые технические характеристики. Центральная процессорная часть имела три конфигурации и могла иметь производительность в зависимости от исполнения 12* 106; 24*106 и 48* 106 операций в секунду. При этом также соответственно изменялся и объем внутренней памяти, пропускная способность центрального коммутатора и пропускная способность мультиплексного канала. Объем внутренней памяти мог составлять 8,5; 17,0 или 34,0 Мбайт, пропускная способность центрального коммутатора – 800; 1600 или 3200 Мбайт/сек., пропускная способность мультиплексного канала – 40; 70 или 100 Мбайт/сек. Эквивалентное быстродействие специализированной процессорной части машины М-13 в максимальной комплектации, при решении указанных выше задач может достигать 2,4*109 операций в секунду.
   В многопроцессорной системе 4-го поколения М-13 впервые реализована аппаратура пооперационных циклов (обеспечивающая независимость программы от числа процессоров в системе), аппаратура сегментностраничной организации памяти (перекрывающая возможности файловой системы), программноуправляемый периферийный процессор для операций типа преобразования Фурье, Уолша, Адамара, Френеля, вычисления корреляционных функций, пространственной фильтрации и т. п. Среднее быстродействие центральной части – до 50 млн. операций в секунду (или до 200 млн. коротких операций в секунду), внутренняя память – до 34 Мбайт, скорость внешнего обмена – до 100 Мбайт в секунду, эквивалентное быстродействие периферийного процессора на своем классе задач – до 2 миллиардов операций в секунду.
   М.А. Карцев – автор фундаментальных теоретических работ по вычислительной технике (5 монографий, 16 изобретений). Книги «Арифметические устройства электронных цифровых машин» (русское издание – 1958 г., позднее переиздавалась за рубежом), «Арифметика цифровых машин» (1969 г.) заложили основы теории арифметических устройств; их выводы вошли в учебники «Архитектура цифровых вычислительных машин» и «Вычислительные системы и синхронная арифметика», где практически впервые сделана попытка поставить на научную основу проектирование общей структуры ЭВМ и аппаратуры для выполнения параллельных вычислений.
   Специализированные ЭВМ реального времени (третья группа ЭВМ) МВК Эльбрус-1 (1979-й год) и МВК Эльбрус-2 (1984-й год) (С.А. Лебедев,
   В.С. Бурцев), относились по существу к следующему этапу (1980-е – 90-е годы) развития специализированной отечественной вычислительной техники [2, 11]. Однако их целесообразно кратко представить в данном разделе, вследствие основной области применения. Эти МВК двойного применения (гражданского и военного), предназначались для использования в высокопроизводительных информационно-вычислительных и управляющих системах, в том числе, в системах непрерывного действия, работающих в реальном масштабе времени, а также в научных и промышленных вычислительных центрах коллективного пользования в пакетном режиме и в режиме реального времени.
   Программное обеспечение являлось общим для МВК Эльбрус-1 и Эльбрус-2. Его отличительная особенность состояла в использовании языка высокого уровня ЭЛЬ-76, являющегося автокодом системы для написания системных программ, в частности, операционной системы, трансляторов и целого ряда управляющих программ, работающих в реальном масштабе времени. Это позволило значительно сократить время создания программ.
   

комментариев нет  

Отпишись
Ваш лимит — 2000 букв

Включите отображение картинок в браузере  →