Как я общался с А.П. Ершовым в формальной и неформальной обстановке.
Как я общался с А.П.Ершовым в формальной и неформальной обстановке.
С начала семидесятых годов активно работала Рабочая группа по языку Алгол 68, которую возглавлял А.П. Ершов, а я был у него заместителем. Первоначальной задачей группы являлась подготовка качественного перевода на русский язык Сообщения об Алголе 68, однако постепенно центр тяжести был перенесен на вопросы языкотворчества, реализации, технологии внедрения и применения новых алгоритмических языков. Сложился дружный интересный, на мой взгляд, коллектив единомышленников, регулярно встречавшихся друг с другом. В немалой степени этому способствовала традиционная индейка, мастерски приготовляемая В.Бролем.
А.П.Ершов был непременным и самым активным участником всех наших мероприятий, поражало его фантастическое умение схватывать «на лету» новые идеи, выделять из них существенные элементы, ненавязчиво, но достаточно твердо руководить даже самыми жаркими дискуссиями. Наверное, с А.П.Ершовым -великим ученым знакомы очень многие, но «алголикам» посчастливилось узнать его и в неформальной обстановке: вечера английских анекдотов, песни Боба Дилана в исполнении Андрея Петровича, споры о границах применимости доказательного программирования, обсуждение осуществимости его тезиса «перегнать, не догоняя», профессиональные программистские шутки и «подколки».
Меня он определил как «выдвиженца», поскольку мне пришлось руководить коллективом сверстников лет с 25. Это произошло постепенно, но постоянно возникали какие-то проблемы. Андрей Петрович вел со мной длительные беседы, рассказывал о своем опыте, ставил конкретные задачи организационного плана. Трудно достижимая, но манящая цель как флаг коллектива, публикационная политика, целенаправленная подготовка специалистов, начиная со школы, пристальное внимание к разработке инструментария –этими и многими другими советами А.П.Ершова я пользуюсь до сих пор.
Приведу пример, как А.П.Ершов учил меня избегать шумных скандалов в лаборатории:
— Вы когда-нибудь видели, Андрей, чтобы я с кем-нибудь ругался в голос?
— Нет, не помню.
— Потому что если есть хотя бы 1-2% вероятности, что я не прав, тогда я говорю,что к обсуждению этого вопроса я не готов, иду домой, думаю всю ночь и либо признаю ошибку, либо спокойно излагаю неопровержимые аргументы.
Конкретно эта идея пару раз спасла нашу лабораторию от развала в чрезвычайно острых ситуациях.
В 1982 году по инициативе Ленинградского обкома КПСС несколько крупных предприятий региона в содружестве с Ленинградским университетом решили развернуть широкомасштабные работы по технологии программирования для встроенных систем. Для обеспечения поддержки и финансирования проекта необходимо было заручиться поддержкой какого-либо авторитета в этой области, поэтому небольшая делегация была командирована в Новосибирск к А.П.Ершову, причем предварительно «прошел» (как тогда выражались) звонок из ЦК КПСС. Зная А.П.Ершова лично, я сильно сомневался в успехе нашей поездки. Само понятие «технология программирования» к тому времени сильно отдавало лозунговостью, а конкретные задачи и установки, переданные в Ленинградский университет, вообще были приняты «в штыки» большинством специалистов (особенно, молодых).
Однако, А.П.Ершов отреагировал иначе. Отметив некоторую «шизофреничность» текстов постановок задач, но признав их важность и актуальность,он заявил, что именно системные программисты должны взять на себя труд грамотно сформулировать требования, подходы к решению, границы применимости технологии. С гневом отвергнув подготовленную заранее «рыбу», А.П.Ершов собственноручно написал развернутый отзыв, оригинал которого я храню до сих пор. Его поддержка оказалась решающей.
1989 г. А.Н.Терехов
Руководитель лаб.системного программирования НИИММ ЛГУ
ЗАКЛЮЧЕНИЕ
О работах ленинградского научно-производственного объединения «Красная заря» Минпромсвязи СССР по организации и технологии промышленного производства программного продукта.
ВВЕДЕНИЕ
В начале XI-й пятилетки ЛНПО «Красная заря» начало работу по созданию отраслевой технологии промышленного производства программного продукта. Для формулирования основных принципов выполнения этой работы в ноябре 1982 г. было проведено техническое совещание специалистов отраслевой, академической и вузовской науки, представленных сотрудниками «Красной зари», вычислительного центра СО АН СССР и Ленинградского университета.
В протоколе технического совещания эти отправные принципы были выражены в следующих положениях:
– использования базового языка программирования высокого уровня;
– разработка сквозной технологии промышленного производства, охватывающей весь его жизненный цикл;
– создание унифицированной вычислительной среды для производства программного продукта и функционирования управляющих вычислительных комплексов, входящих в системы связи и управления;
– формирование системы подготовки и переподготовки кадров для производства программного продукта.
Цель настоящего заключения, подготовленного по просьбе руководства ЛНПО, – по истечении четырех лет, на стыке пятилеток оценить проделанную работу в свете задач, стоящих перед отраслью, и общих тенденций развития промышленности программных средств. Заключение составлено на основе экспертизы технических документов, бесед со специалистами и сопоставления с рядом зарубежных материалов.
Проведенная экспертиза позволяет в целом дать высокую оценку проделанной работе, хотя и вскрыла ряд проблем, решение которых требует сохранения приоритетного внимания со стороны руководства к задаче внедрения, поддержки и развития отраслевой технологии промышленного производства программного продукта.
ОРГАНИЗАЦИЯ РАБОТ
Прежде всего следует отметить своевременность внимания руководства отрасли к проблемам технологии программирования. Я наблюдаю за работами корпорации АТТ по компьютеризации связи и технологии программирования более 15 лет и обнаруживаю, что в течение всего этого времени научно-конструкторские подразделения АТТ ведут соответствующие исследования и разработки в полном объеме и на всех уровнях –от фундаментальных работ по теории программирования до переподготовки высшего руководства корпорации.
Острая актуальность проблемы нашла свое очевидное подтверждение и во внутренней обстановке в отрасли, когда ряд важнейших проектов оказался под угрозой срыва или общей неудачи из-за неразвитости технологии современного создания надежного программного продукта и архаичности ряда технических решений, как по архитектуре используемых ЭВМ, так и по применяемым методам (если их можно охарактеризовать таким высоким словом) разработки программ.
Принципиально важным моментом стало создание в отрасли специализированной организации (НИИ «Звезда»), ориентированной на разработку программного продукта и, в особенности, на создание, освоение и развитие технологии промышленного производства программного продукта. Я сравниваю создание НИИ «Звезда» с организацией 13 лет назад новосибирского филиала ИТМиВТ, сыгравшего в прошедшей пятилетке решающую роль в программном обеспечении МВК «Эльбрус». Практика показывает, что всюду, где технологии программирования низводятся до уровня вспомогательного подразделения, обслуживающего разовый тематический проект, программное обеспечение утрачивает свою главную функцию –быть своеобразным клеящим веществом, объединяющим компоненты системы и гарантирующим как её устойчивость, так и развиваемость. В качестве примера программистской организации, удачно сочетающей и тематическую и технологическую работы, мог бы назвать Отделение федеральных разработок корпорации ИБМ, где технологи программирования, составляя меньшинство, тем не менее формируют организационный каркас Отделения, пронизывающий каждый конкретный тематический проект и позволяющий разумно сочетать единство воли руководителя проекта со строгой технологической дисциплиной.
Очень ценной и полезной для дела является органическая связь НИИ «Звезда» с Ленинградским университетом. Здесь важно влияние в обе стороны: реализация высокой наукоемкости производства программ, обеспечение заблаговременной и сквозной подготовки специалистов, наличие восприимчивой и быстрой на отдачу базы для проведения поисковых разработок, которые было бы трудно или рискованно разворачивать в производственной обстановке отраслевого предприятия.
ВЫБОР БАЗОВОЙ ТЕХНОЛОГИИ
Я считаю абсолютно правильным и перспективным решением основывать технологию программирования на мощных кросс-системах, использующих инструментальный язык программирования высокого уровня –конкретно, Алгол-68. Эта правильность подтверждается следующими более конкретными причинами:
– наличие развитой системы программирования с Алгола-68;
– прямое взаимодействие с коллективом разработчиков системы программирования, дающее возможность постоянного развития системы;
– возможность использования Алгола-68 как языка для алгоритмической спецификации программ;
– существенное ускорение обратной связи при проектировании программ благодаря применению метода исполняемых прототипов прототипов;
– использование общих преимуществ языка высокого уровня в сочетании с возможностью глубокой детализации программ;
– близость Алгола-68 алгоритмическому языку, принятому в курсе основ информатики и вычислительной техники, которому с этого года обучаются все школьники.
Следует отметить, что внутренняя логика развития технологии программирования на базе Алгола-68 привела специалистов отрасли к проблеме определить свое отношение к исторически обусловленным технологическим вариантом в лице R-технологии и системы разработки программного обеспечения РУЗА , использованным в ранее начатых разработках. Не желая сказать ничего плохого об этих технологиях в естественных пределах их применимости, подтверждаю правильность переключения с этих технологий на Алгол-68 по следующим причинам.
R-технология не является замкнутой в том смысле, что она не базируется на фиксированный язык и систему программирования, являясь для нее своеобразным препроцессором.
В конкретных условиях сочетания с системой программирования на Алголе-68 R-технология предлагает лишь специфический стиль оформления алголовских программ, преимущества которого для Алгола-68 в условиях развитых текстовых экранных редакторов неубедительны.
Что касается системы РУЗА, то она уступает технологии Алгола-68 по своим внутренним свойствам как система ассемблерного типа.
ОРГАНИЗАЦИОННАЯ ДИСЦИПЛИНА РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Следует подчеркнуть, что работа по созданию технологии промышленного производства программного продукта велась в «Красной заре» с двух встречных направлений: снизу –в виде конкретных кросс-систем на базе Алгола-68 и сопутствующих подсистем и сверху –в виде так называемого гибкого автоматизированного производства программного обеспечения систем связи, представляющего собой совокупность нормативных документов и организационных процедур в сочетании с рядом средств документационной поддержки проектов.
Последняя работа представляет собой своего рода программу-максимум, охватывающую все стадии и всех участников разработки программного продукта, и разрабатывалась пока, главным образом, на организационно-проектном уровне.Ее основные показатели адекватно отражены в актах о приемке работы на стадии НИР и по завершении создания опытного участка. Я подтверждаю перспективность и тщательность этой разработки и её соответствие мировым тенденциям. Не исключено, однако, что потребуется дальнейшая работа по стыковке ГАП ПО систем связи с конкретными тематическими проектами и, в связи с этим, по упрощению и повышению практичности форм взаимодействия в проекте и отдельных технологических процедур.
АПРОБАЦИЯ РАЗРАБОТАННОЙ ТЕХНОЛОГИИ
Внедрение новой технологии разработки программного продукта с очевидностью затруднено тем, что эта работа должна проводиться «на ходу» в условиях критических ситуаций по срокам и общему состоянию тематических проектов. Здесь необходим гибкий подход и я подтверждаю правильность организационного решения, разделявшего работы по программному обеспечению на три категории, в зависимости от степени продвинутости тематических проектов:
– сложившиеся проекты с выбранной технологией,
– начавшиеся проекты с невыбранной технологией,
– будущие проекты.
Этот прагматический подход позволил осуществить безотлагательную проработку технологических решений в ряде конкретных примеров, не дожидаясь полной завершенности всей технологической цепочки разработки программного продукта. При этом я считаю весьма положительным тот опыт, который был получен при использовании языка высокого уровня в тематических проектах К и Р.
Такие оперативные работы должны быть, однако, дополнены заблаговременным и без авральным выполнением нового крупного тематического проекта, который носил бы характер производственной демонстрации новой технологии разработки программного продукта во всей её полноте.
ВЫВОДЫ И РЕКОМЕНДАЦИИ
I. В целом отрасль является пионером в деле перехода на новую технологию производства системного программного продукта на основе языка высокого уровня в условиях широкого разнообразия объектных ЭВМ. События развиваются в правильном направлении и есть шансы в XII-й пятилетке не только завершить разработку технологии, но и воспользоваться ею для радикального улучшения положения дел с программным обеспечением ведущих отраслевых проектов.
II. На Алгол-68 можно спокойно ориентироваться по крайней мере до конца 80-ых годов. АДА, являясь более современным языком, еще не имеет доступной и развитой среды. Язык Чилл по своим возможностям близок к Алголу-68и пока еще является предметом комитетской работы, рассматривающей проблемы его стандартизации и реализации, однако нет достоверной информации о больших капитальных вложениях в разработку технологии на его основе.
III. Целесообразно закрепить первый успех применения компонент МВП-технологии и осуществить её доработку, апробацию и полномасштабное применение в подходящих по срокам тематических проектах.
IV. Возникает естественный вопрос: должна ли отрасль стремиться к единой технологии разработки программного продукта, синхронно применяемой во всех тематических проектах? Хотелось бы предостеречь от волюнтаристского подхода к решению этой проблемы, подтверждая, однако, критическую важность выбора правильной технологии программирования при разработке современных глобальных компьютерных систем, каковыми являются системы связи. Из этого вытекают такие следствия:
– Системы связи в современном обществе начинают смыкаться с системами обработки информации и в связи с этим приобретают универсальный характер, непосредственно отражающий многообразие и сложность мира. Программное обеспечении при этом становится не только скрытым механизмом, находящимся внутри системы, но и непосредственным носителем функциональный свойств средств связи во всем их разнообразии. Это значит, что с учетом перспективы отрасль должна поддерживать с помощью опережающих исследований и разработок весь спектр работ по программному обеспечению, включая и всё предвидимое разнообразие промышленных технологий.
– Со временем обоснованный выбор доступной технологии программного обеспечения станет важным, но рядовым вопросом спецификации тематического проекта, доступным пониманию и кругозору каждого главного конструктора. Сейчас, однако, этот вопрос часто следует решать внешним образом, делая его предметом индивидуального обсуждения между руководством проекта, руководством отрасли и технологами программного обеспечения. Возможно, это является дополнительной нагрузкой на Главное техническое управление, однако, следует все же рекомендовать руководству отрасли занимать в вопросах технологии программного обеспечения активную и контролирующую позицию.
– Конкретно, МВП-технология еще должна проявить себя на деле в условиях полномасштабного применения. Однако, уже сейчас видно ее важное преимущество по сравнению с ассемблерными системами или даже технологиями на базе языка Си и обстановок типа Юникс. Это преимущество состоит в том, что языковые свойства Алгола-68 и близких ему языков позволяют перенести центр тяжести работы на «функционалистов», т.е. не столько на профессиональных системных программистов, слабо ориентирующихся в тематике, сколько на квалифицированных тематиков, обладающих необходимым минимум знаний по алгоритмизации и программированию. Предлагаемый НИИ «Звезда» метод организации «динамических коллективов» позволяет гармонично объединить специалистов разных квалификаций в интересах проекта.22 февраля 1986 г.
Академик А.П.Ершов