Введение
Истории развития отечественной вычислительной техники в Советском Союзе в начале 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 лет работавшего в оборонной промышленности над крупными проектами комплексов программ.