Галерея славы

Как я общался с А.П. Ершовым в формальной и неформальной обстановке

Уважаемые коллеги!

С удовольствием приму участие в семинаре по истории информатики в Сибири. Посылаю Вам два текста, надеюсь, что оба будут интересны. У этих текстов есть своя история. Когда А.П. Ершов умер, было решено подготовить специальный выпуск журнала «Программирование» № 1 1989 г. Всем, кто знал Андрея Петровича, было предложено написать для журнала один научно-технический текст и одно эссе, носящее более личный характер.

Я послал в «Программирование» как раз эти два текста. Ни один из них не был опубликован. Первый — это отзыв А.П. Ершова по технологии программирования, разрабатываемой в Ленинграде. Даже сегодня я поражаюсь, насколько глубоко он видел проблему, ни одно из его суждений не устарело, а для нас его отзыв сыграл огромную роль. Тем не менее, рецензент из журнала «Программирование» написал в своем отзыве, что работа нетипична для А.П. Ершова, что, мол, вряд ли академик стал бы заниматься столь приземленными вопросами.

Я, во-первых, узнал, кто этот рецензент, а затем показал ему отзыв, подписанный А.П. Ершовым. Мне было заявлено, что, наверняка, этот отзыв я написал сам, а А.П. Ершов только подмахнул. Все сотрудники Ершова знают, что он не признавал «рыб» и всё писал сам, причем все рукописи аккуратно датировались и собирались. Отзыв на нашу работу я выпросил у секретаря А.П. Ершова и бережно храню до сих пор. Пока мы препирались, журнал уже вышел.

Про мое эссе мне было сказано, что негоже писать про академика, как он общается с молодежью «под индейку», а я до сих пор считаю, что именно эти вечера, возможность неформального общения были очень интересны А.П.Ершову, а у всех членов рабочей группы Алгола-68 воспоминания о них бережно хранятся до сих пор.

На самом деле, если отбросить в сторону всякую лирику, считайте, что я предоставил неопубликованную ранее статью А.П.Ершова, которая актуальна и на сегодняшний день.

С уважением, А.Н.Терехов

Заключение

О работах ленинградского научно-производственного объединения «Красная заря» Минпромсвязи СССР по организации и технологии промышленного производства программного продукта.

22 февраля 1986 г.

Введение

В начале XI-й пятилетки ЛНПО «Красная заря» начало работу по созданию отраслевой технологии промышленного производства программного продукта. Для формулирования основных принципов выполнения этой работы в ноябре 1982 г. было проведено техническое совещание специалистов отраслевой, академической и вузовской науки, представленных сотрудниками «Красной зари», вычислительного центра СО АН СССР и Ленинградского университета.

В протоколе технического совещания эти отправные принципы были выражены в следующих положениях:

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

Цель настоящего заключения, подготовленного по просьбе руководства ЛНПО, — по истечении четырех лет, на стыке пятилеток оценить проделанную работу в свете задач, стоящих перед отраслью, и общих тенденций развития промышленности программных средств. Заключение составлено на основе экспертизы технических документов, бесед со специалистами и сопоставления с рядом зарубежных материалов.

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

Организация работ

Прежде всего, следует отметить своевременность внимания руководства отрасли к проблемам технологии программирования. Я наблюдаю за работами корпорации АТТ по компьютеризации связи и технологии программирования более 15 лет и обнаруживаю, что в течение всего этого времени научно-конструкторские подразделения АТТ ведут соответствующие исследования и разработки в полном объеме и на всех уровнях — от фундаментальных работ по теории программирования до переподготовки высшего руководства корпорации.

Острая актуальность проблемы нашла свое очевидное подтверждение и во внутренней обстановке в отрасли, когда ряд важнейших проектов оказался под угрозой срыва или общей неудачи из-за неразвитости технологии современного создания надежного программного продукта и архаичности ряда технических решений, как по архитектуре используемых ЭВМ, так и по применяемым методам (если их можно охарактеризовать таким высоким словом) разработки программ.

Принципиально важным моментом стало создание в отрасли специализированной организации (НИИ «Звезда»), ориентированной на разработку программного продукта и, в особенности, на создание, освоение и развитие технологии промышленного производства программного продукта. Я сравниваю создание НИИ «Звезда» с организацией 13 лет назад новосибирского филиала ИТМиВТ, сыгравшего в прошедшей пятилетке решающую роль в программном обеспечении МВК «Эльбрус». Практика показывает, что всюду, где технологии программирования низводятся до уровня вспомогательного подразделения, обслуживающего разовый тематический проект, программное обеспечение утрачивает свою главную функцию — быть своеобразным клеящим веществом, объединяющим компоненты системы и гарантирующим как её устойчивость, так и развиваемость. В качестве примера программистской организации, удачно сочетающей и тематическую и технологическую работы, мог бы назвать Отделение федеральных разработок корпорации ИБМ, где технологи программирования, составляя меньшинство, тем не менее формируют организационный каркас Отделения, пронизывающий каждый конкретный тематический проект и позволяющий разумно сочетать единство воли руководителя проекта со строгой технологической дисциплиной.

Очень ценной и полезной для дела является органическая связь НИИ «Звезда» с Ленинградским университетом. Здесь важно влияние в обе стороны: реализация высокой наукоемкости производства программ, обеспечение заблаговременной и сквозной подготовки специалистов, наличие восприимчивой и быстрой на отдачу базы для проведения поисковых разработок, которые было бы трудно или рискованно разворачивать в производственной обстановке отраслевого предприятия.

Выбор базовой технологии

Я считаю абсолютно правильным и перспективным решением основывать технологию программирования на мощных кросс-системах, использующих инструментальный язык программирования высокого уровня — конкретно, Алгол-68. Эта правильность подтверждается следующими более конкретными причинами:

  • наличие развитой системы программирования с Алгола-68;
  • прямое взаимодействие с коллективом разработчиков системы программирования, дающее возможность постоянного развития системы;
  • возможность использования Алгола-68 как языка для алгоритмической спецификации программ;
  • существенное ускорение обратной связи при проектировании программ благодаря применению метода исполняемых прототипов;
  • использование общих преимуществ языка высокого уровня в сочетании с возможностью глубокой детализации программ;
  • близость Алгола-68 алгоритмическому языку, принятому в курсе основ информатики и вычислительной техники, которому с этого года обучаются все школьники.

Следует отметить, что внутренняя логика развития технологии программирования на базе Алгола-68 привела специалистов отрасли к проблеме определить свое отношение к исторически обусловленным технологическим вариантом в лице R-технологии и системы разработки программного обеспечения РУЗА , использованным в ранее начатых разработках. Не желая сказать ничего плохого об этих технологиях в естественных пределах их применимости, подтверждаю правильность переключения с этих технологий на Алгол-68 по следующим причинам.

R-технология не является замкнутой в том смысле, что она не базируется на фиксированный язык и систему программирования, являясь для нее своеобразным препроцессором.

В конкретных условиях сочетания с системой программирования на Алголе-68
R-технология предлагает лишь специфический стиль оформления алголовских программ, преимущества которого для Алгола-68 в условиях развитых текстовых экранных редакторов не убедительны.

Что касается системы РУЗА, то она уступает технологии Алгола-68 по своим внутренним свойствам как система ассемблерного типа.

Организационная дисциплина разработки программного обеспечения

Следует подчеркнуть, что работа по созданию технологии промышленного производства программного продукта велась в «Красной заре» с двух встречных направлений: снизу — в виде конкретных кросс-систем на базе Алгола-68 и сопутствующих подсистем и сверху — в виде так называемого гибкого автоматизированного производства программного обеспечения систем связи, представляющего собой совокупность нормативных документов и организационных процедур в сочетании с рядом средств документационной поддержки проектов.

Последняя работа представляет собой своего рода программу-максимум, охватывающую все стадии и всех участников разработки программного продукта, и разрабатывалась пока, главным образом, на организационно-проектном уровне . Ее основные показатели адекватно отражены в актах о приемке работы на стадии НИР и по завершении создания опытного участка. Я подтверждаю перспективность и тщательность этой разработки и её соответствие мировым тенденциям. Не исключено, однако, что потребуется дальнейшая работа по стыковке ГАП ПО систем связи с конкретными тематическими проектами и, в связи с этим, по упрощению и повышению практичности форм взаимодействия в проекте и отдельных технологических процедур.

Апробация разработанной технологии

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

  • сложившиеся проекты с выбранной технологией,
  • начавшиеся проекты с невыбранной технологией,
  • будущие проекты.

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

Такие оперативные работы должны быть, однако, дополнены заблаговременным и безавральным выполнением нового крупного тематического проекта, который носил бы характер производственной демонстрации новой технологии разработки программного продукта во всей её полноте.

Выводы и рекомендации

  1. В целом отрасль является пионером в деле перехода на новую технологию производства системного программного продукта на основе языка высокого уровня в условиях широкого разнообразия объектных ЭВМ. События развиваются в правильном направлении и есть шансы в XII-й пятилетке не только завершить разработку технологии, но и воспользоваться ею для радикального улучшения положения дел с программным обеспечением ведущих отраслевых проектов.
  2. На Алгол-68 можно спокойно ориентироваться по крайней мере до конца 80-ых годов. АДА, являясь более современным языком, еще не имеет доступной и развитой среды. Язык Чилл по своим возможностям близок к Алголу-68 и пока еще является предметом комитетской работы, рассматривающей проблемы его стандартизации и реализации, однако нет достоверной информации о больших капитальных вложениях в разработку технологии на его основе.
  3. Целесообразно закрепить первый успех применения компонент МВП-технологии и осуществить её доработку, апробацию и полномасштабное применение в подходящих по срокам тематических проектах.
  4. Возникает естественный вопрос: должна ли отрасль стремиться к единой технологии разработки программного продукта, синхронно применяемой во всех тематических проектах? Хотелось бы предостеречь от волюнтаристского подхода к решению этой проблемы, подтверждая, однако, критическую важность выбора правильной технологии программирования при разработке современных глобальных компьютерных систем, каковыми являются системы связи. Из этого вытекают такие следствия:

— Системы связи в современном обществе начинают смыкаться с системами обработки информации и в связи с этим приобретают универсальный характер, непосредственно отражающий многообразие и сложность мира. Программное обеспечении при этом становится не только скрытым механизмом, находящимся внутри системы, но и непосредственным носителем функциональный свойств средств связи во всем их разнообразии. Это значит, что с учетом перспективы отрасль должна поддерживать с помощью опережающих исследований и разработок весь спектр работ по программному обеспечению, включая и всё предвидимое разнообразие промышленных технологий.

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

— Конкретно, МВП-технология еще должна проявить себя на деле в условиях полномасштабного применения. Однако, уже сейчас видно ее важное преимущество по сравнению с ассемблерными системами или даже технологиями на базе языка Си и обстановок типа Юникс. Это преимущество состоит в том, что языковые свойства Алгола-68 и близких ему языков позволяют перенести центр тяжести работы на «функционалистов», т.е. не столько на профессиональных системных программистов, слабо ориентирующихся в тематике, сколько на квалифицированных тематиков, обладающих необходимым минимум знаний по алгоритмизации и программированию. Предлагаемый НИИ «Звезда» метод организации «динамических коллективов» позволяет гармонично объединить специалистов разных квалификаций в интересах проекта.

* * *

Воспоминания

С начала семидесятых годов активно работала Рабочая группа по языку Алгол 68, которую возглавлял
А.П. Ершов, а я был у него заместителем. Первоначальной задачей группы являлась подготовка качественного перевода на русский язык Сообщения об Алголе 68, однако постепенно центр тяжести был перенесен на вопросы языкотворчества, реализации, технологии внедрения и применения новых алгоритмических языков. Сложился дружный интересный, на мой взгляд, коллектив единомышленников, регулярно встречавшихся друг с другом. В немалой степени этому способствовала традиционная индейка, мастерски приготовляемая В. Бролем[1].

А.П.Ершов был непременным и самым активным участником всех наших мероприятий, поражало его фантастическое умение схватывать «на лету» новые идеи, выделять из них существенные элементы, ненавязчиво, но достаточно твердо руководить даже самыми жаркими дискуссиями. Наверное, с А.П.Ершовым — великим ученым знакомы очень многие, но «алголикам» посчастливилось узнать его и в неформальной обстановке: вечера английских анекдотов, песни Боба Дилана в исполнении Андрея Петровича, споры о границах применимости доказательного программирования, обсуждение осуществимости его тезиса «перегнать, не догоняя», профессиональные программистские шутки и «подколки».

Меня он определил как «выдвиженца», поскольку мне пришлось руководить коллективом сверстников лет с 25. Это произошло постепенно, но постоянно возникали какие-то проблемы. Андрей Петрович вел со мной длительные беседы, рассказывал о своем опыте, ставил конкретные задачи организационного плана. Труднодостижимая, но манящая цель как флаг коллектива, публикационная политика, целенаправленная подготовка специалистов, начиная со школы, пристальное внимание к разработке инструментария — этими и многими другими советами А.П.Ершова я пользуюсь до сих пор.

Приведу пример, как А.П.Ершов учил меня избегать шумных скандалов в лаборатории:

— Вы когда-нибудь видели, Андрей, чтобы я с кем-нибудь ругался в голос?

— Нет, не помню.

— Потому что если есть хотя бы 1—2% вероятности, что я не прав, тогда я говорю, что к обсуждению этого вопроса я не готов, иду домой, думаю всю ночь, и либо признаю ошибку, либо спокойно излагаю неопровержимые аргументы.

Конкретно эта идея пару раз спасла нашу лабораторию от развала в чрезвычайно острых ситуациях.

В 1982 году по инициативе Ленинградского обкома КПСС несколько крупных предприятий региона в содружестве с Ленинградским университетом решили развернуть широкомасштабные работы по технологии программирования для встроенных систем. Для обеспечения поддержки и финансирования проекта необходимо было заручиться поддержкой какого-либо авторитета в этой области, поэтому небольшая делегация была командирована в Новосибирск к А.П. Ершову, причем предварительно «прошел» (как тогда выражались) звонок из ЦК КПСС. Зная А.П.Ершова лично, я сильно сомневался в успехе нашей поездки. Само понятие «технология программирования» к тому времени сильно отдавало лозунговостью, а конкретные задачи и установки, переданные в Ленинградский университет, вообще были приняты «в штыки» большинством специалистов (особенно, молодых).

Однако А.П.Ершов отреагировал иначе. Отметив некоторую «шизофреничность» текстов постановок задач, но признав их важность и актуальность, он заявил, что именно системные программисты должны взять на себя труд грамотно сформулировать требования, подходы к решению, границы применимости технологии. С гневом отвергнув подготовленную заранее «рыбу», А.П.Ершов собственноручно написал развернутый отзыв, оригинал которого я храню до сих пор. Его поддержка оказалась решающей.

Примечания

[1.] Валерий Витальевич Броль, инженер ВНПО «Каскад».

Об авторе: Санкт-Петербургский государственный университет, Санкт-Петербург, Россия Andrey.Terekhov@at-software.com
Статья опубликована в материалах семинара «История информатики в Сибири», прошедшего в рамках VII международной конференции памяти академика А.П.Ершова «Перспективы систем информатики», Новосибирск, 15-19 июня 2009 г.
Статья помещена в музей 17.12.2009 года.