Рыбин Сергей Игоревич

Интервью для сайта Ada_Ru

Ada Ru: Знаю Вас как активного участника рассылки Ada_Ru, но боюсь ошибиться в официальных титулах. Можете представиться?

Сергей Игоревич: Официальных титулов не так много:

  • старший научный сотрудник НИВЦ МГУ
  • консультант компании AdaCore EU

Кроме того, я недавно был официально зарегистрирован в качестве эксперта по языку Ада в рабочей группе ISO, отвечающем за стандарт языка Ада (JTC1/SC22/WG9)

Ada Ru: Когда Вам в первый раз пришлось практически столкнуться с языком Ада?

С.И.: Впервые услышал про Аду я еще студентом, а непосредственно работать с языком стал сразу же после окончания МГУ, в 1983 году. Тогда при кафедре алгоритмических языков факультета ВМиК МГУ была организована группа стандартизации языков программирования, и я в ней стал "отвечать" за Аду. С Адой также была связана тема моей диссертации.

Ada Ru: В каких проектах, связанных с языком Ада, с тех пор довелось принимать участие?

С.И.: В советские времена наша группа стандартизации языков программирования занималась в том числе и разработкой комплектов тестов для контроля согласованности трансляторов со стандартами. Поскольку в то время тесты ACVC для Ады были недоступны, а в Советском Союзе велись разработки Ада-трансляторов практически для всех использовавшихся в то время архитектур ЭВМ, наша группа получила заказ на разработку комплекта тестов для Ады. Мы занимались в основном диагностическими тестами. Наш комплект использовался в большинстве советских проектов по созданию Ада-трансляторов. Кроме того, удалось протестировать два американских компилятора, которые тайными тропами добрались в те времена до Москвы - самый первый Ада-транслятор, созданный в Нью-Йоркском университете, и достаточно известный в то время транслятор VAX Ada. В обоих трансляторах наш коплект обнаружил несоответствие стандарту!

Довелось также принять участие в разработке ГОСТа на язык Ада. Мы получали проекты ГОСТа на рецензию. Как и все отечественные ГОСТы на языки программирования, ГОСТ Ады являлся на 99.9% переводом соответствующего англоязычного стандарта. В результате работы с проектами ГОСТа Ады я окончательно убедился, что в случае больших и сложных технических документов, таких как языковые стандарты, документация к системам программирования, описания интерфейсов и библиотек, и т.п., перевод их на русский (да и любой другой) язык оказывается бесполезной тратой ресурсов, а результат перевода приносит больше вреда, чем пользы, поскольку в процессе перевода в документ неизбежно добавляются новые ошибки. Стандарт Ады переводили более чем квалифицированные люди, которые сами разрабатывали Ада-транслятор. Они прекрасно знали и Аду, и английский язык, однако и в третьей прошедшей через меня версии проекта ГОСТа я насчитал более сотни ошибок, внесенных в описание языка именно в процессе перевода. Для профессионала в нашей области намного проще, дешевле и во всех смыслах эффективнее освоить (крайне примитивный!) технический английский, чем пользоваться переводной документацией.

Кроме того, в конце 80-х мне довелось участвовать в разработке базового курса по языкам программирования, который в значительной степени был основан на Аде. Автором курса является профессор В.Ш.Кауфман. Написанная им в то время книга "Языки программирования - концепции и принципы" не утратила своей актуальности и сейчас.

К сожалению, наши "реформы" конца 80-х - начала 90-х годов погубили в том числе и практически все отечественные Ада-проекты, равно как и исследования в области информационных стандартов. Однако, буквально в последний год существования нашей группы стандартизации языков программирования, нам удалось установить контакт с AJPO и заручиться их обещанием присылать нам материалы проекта по пересмотру стандарта Ады (позже получившего название "Проект Ada 9X"), который тогда только-только начинался. Материалы стали поступать, и небольшой командой в два-три человека, что осталось от нашей группы, мы стали посылать комментарии по поводу присланных материалов. К моему удивлению, наши комментарии не остались незамеченными, и по поводу некоторых из них завязалась дискуссия с людьми, непостредсдвенно занятыми выработкой предложений по пересмотру стандарта. Все эти дискуссии протоколировались, и к материалам дискуссий имел доступ достаточно широкий круг экспертов, занятых в проекте Ada 9X. И вдруг, в 1994 году, я получил письмо от одного из таких экспертов, профессора Альфреда Штрохмейера из Швейцарского политехнического университета в Лозанне (EPFL), в котором содержалось предложение организовать сотрудничество между EPFL и МГУ. Я немедленно согласился, а в ответ Альфред в качестве предмета сотрудничества предложил реализовать интерфейс ASIS для компилятора GNAT. Первая строка кода реализации ASIS была написана в начале января 1995 года, и с тех пор основным моим занятием является сопровождение реализации ASIS для GNAT и разработка на основе интерфейса ASIS различных инструментов анализа Ада-кода. С 1996 года эта работа поддерживается компанией AdaCore.

Надо сказать, что в начале проекта по реализации ASIS для GNAT компилятор GNAT был уже компилятором Ады 95, тогда как спецификация ASIS соответствовала первому стандарту Ады редакции 1983 года. То есть, нам приходилось по ходу проекта пересматривать и расширять определение ASIS для нового стандарта Ады. В результате я оказался вовлечен в соответствующую деятельность ASIS Working Group, которая своим результатом имела утверждение в 1998 году стандарта на интерфейс ASIS (ISO/IEC 15291).

Ada Ru: Как я понимаю в свое время Ада в СССР выглядела довольно перспективно. Было выпущено десятки книг по этой тематике. Можете поделиться вашим видением, что было достигнуто у нас в этой области к моменту распада Советского Союза?

С.И.: Достижения в этой области у нас были, и, на мой взгляд, довольно неплохие. В рамках работы по созданию комплекта тестов для Ада-трансляторов мне довелось достаточно близко познакомиться с отечественными реализациями Ады на ЕС ЭВМ, Эльбрусе, СМ ЭВМ. В течение довольно длительного времени мы использовали систему Паллада (разработка ленинградского университета) не только как инструмент отладки и проверки результативности нашего компдекта тестов, но и как инструментальную систему для небольших студентческих проектов. В конце 80-х были попытки организовать достаточно серьезные проекты по внедрению Ады в разработку встроенного ПО, в том числе и военного, но увы - не успели...

Сейчас, после десяти лет непосредственного участия в работе по созданию и сопровождению системы программирования GNAT, я понимаю, что силы, вложенные в то время в разработку трансляторов Ады-83 для использовавшихся тогда архитектур, были явно недостаточны, но даже с теми ресурсами наши разработчики достигли результатов, вполтную приближавшихся к требованиям индустрии.

Ada Ru: Очевидно, Ада в широких кругах, в частности в Open Source, менее популярна чем такие языки, как С, С++, Java. В чем Вы видете причины этого?

С.И.: Я бы не стал выделять Open Source, прежде всего потому, что ситуация в Open Source community есть отражение общей ситуации в программной индустрии.

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

Я бы отметил две причины этого.

Первая причина - стратегическая ошибка в проектировании первой версии языка. Ада была задумана как *единый* язык встроенных систем, и Пентагон, как "заказчик" и инвестор проекта по созданию языка, еще в ходе разработки языка недвусмысленно дал понять, что как только язык будет создан, тут же будет введено строгое правило: "все новые проекты должны выполняться только на Аде". В результате первая версии языка содержала крайне примитивные средства интерфейса с другими языками. В самом деле, зачем заботиться о многоязыковом программировании, если все новые программы будут написаны только на Аде? В конце 70-х годов прошлого века такое проектное решение казалось вполне разумным, однако стремительный рост программной индустрии, и, соответственно, рост требований и ожиданий заказчиков ПО привел к тому, что выполнение требования Пентагона "все новые проекты - только на Аде" все чаще и чаще оказывалось на практике или неразумно дорогим, или просто невозможным. В ряде случаев оказывалось, что выполнение этого требования означало переписывание с нуля готовых решений, уже реализованных на других языках. Что же касается невоенной индустрии, в которой использование Ады не являлось обязательным, то в ней многоязыковое программирование в конце 80-х уже было общей практикой, и Ада, которая не позволяла этого эффективно делать, стала сдавать свои позиции. Вскоре и Пентагон был вынужден ослабить требование выполнения новых проектов только на Аде. В стандарте Ады 1995 года проблема многоязыкового программирования получила полное и эффективное решение, но, к сожалению, время оказалось упущено.

Вторая причина - мощная финансовая и организационная поддержка Пентагона сыграла с Адой злую шутку. Высокая стоимость военных заказов и законодательно (!) оформленное требование Пентагона выполнять все новые заказы только на Аде привело к тому, что разработчики Ада-технологий былии в первую очередь озабочены тем, чтобы их трансляторы успешно отрабатывали на комплекте эталонных тестов ACVC, проверяющем соответствие транслятора стандарту, а вопросы ресурсоемкости трансляторов и качества объектного кода отходили на второй-третий план. Ада-технологии реализовывались и эксплуатировались на самых мощных на то время вычислительных системах, и реализаторы могли себе позволить не сильно заботиться об эффективности.

Утверждение первого стандарта языка совпало во времени с революционными изменениями в аппаратной базе ЭВМ - началом широкого распространения так называемых "персональных компьютеров". По своим ресурам первые "персоналки" уступали иным современным мобильным телефонам, однако очень быстро на них появились реализации сначала примитивных версий Бейсика, а потом Паскаля и Си. Находясь в условиях жесткой конкурентной борьбы и правильно оценив рынок персональных компьютеров как наиболее перспективный в ближайшие десятилетия, разработчики компиляторов были вынуждены революционным образом усовершенствовать применяемые технологии. Но это касалось "простых" языков (Бейсик, Паскаль, Си), Ада же в это время спокойно почивала на лаврах на могучих мейнфреймах, горя не зная за широкой финансовой спиной Пентагона.

И в какой-то момент оказалось, что каждый серьезный программист имел на своем столе вполне работоспособный компьютер, находившийся в полном его распоряжении, и на этом копьютере были разные полезные компиляторы, но не было компилятора Ады!

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

Ada Ru: Знаю в МГУ Ада использовалась в образовательных целях. Можно об этом подробнее?

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

В прошлом Ада была основой годового курса по языкам программирования для студентов 3-го курса факультета ВМиК МГУ. К сожалению, в ходе пересмотра учебной программы курс был сокращен с года до семестра, потерял поддержку семинарскими занятиями, а в программе курса Ада была существенно потеснена С++.

Насколько я знаю, сейчас Ада достаточно активно используется в учебном процессе Харьковского университета. Я бы посоветовал расспросить об этом Виктора Олеговича Мищенко.

Ada Ru: Каков Ваш личный вклад в разработку стандартов Ада 95/Ада 2005?

С.И.: Что касается последнего стандарта, то я практически не участвовал в работе по его подготовке (по сравнению с предыдущей ревизией, изменения в языке были незначительны, причем они затрагивали те области, с которыми я практически

не сталкиваюсь в повседневной работе). В рамках пректа Ada 9X, используя оставшиеся еще с советских времен формальные контакты с AJPO, я якобы от имени страны готовил и посылал авторам проекта технические комментарии на рассылавшиеся документы проекта. Я не очень понимал тогда, каков был мой формальный статус, однако наша работа была отмечена авторами проекта, а сам я получил персональную благодарность от менеджера проекта Ada 9X Кристины Андерсон.

Если же говорить о реальном личном вкладе, то он определеннно присутствует в деятельности по стандартизации интерфейса ASIS. Это была регулярная техническая работа по подготовке спецификации, которая и была потом утверждена как стандарт ISO. Недавно я подготовил и отправил в JTC1/SC22/WG9 предложения по пересмотру стандарта ASIS для нового стандарта Ады.

Ada Ru: Что представляет работа WG9? Участие в конференциях, работа через почтовые списки рассылки, голосования?

С.И.: Как правило, WG9 как структура ISO непосредственно в конференциях не участвует, однако, поскольку большинство членов WG9 обычно принимают участие в международных Ада-конференциях (Ada-Europe в начале лета и SIGAda в конце осени - начале зимы), то члены рабочей группы собираются вместе как минимум дважды в год. В остальное время работа ведется через электронную почту и соответствующие интернет-ресурсы. Рассылаются подлежащие обсуждению вопросы, проекты документов, собираются и систематизируются комментарии и предложения (как правило, всегда есть член рабочей группы,ответственный за систематизацию и размешение материалов в сети). В результате на собрании рабочей группы обсуждается лишь небольшое число предварительно тщательно подготовленных вопросов.

Ada Ru: Какие перспективы языка Ада с Вашей точки зрения (в мире, России и странах СНГ)

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

Что касается пост-советского пространства... Здесь у меня, к сожалению, оптимизма куда меньше. Программная индустрия в основном обслуживает индустрию "материальную", которая в результате развала СССР оказалась отброшена далеко назад, и сейчас в лучшем случае лишь восстановилась до состояния, в котором была к моменту развала. Если Россия будет лишь качать нефть за границу - перспектив у Ады здесь нет никаких, и не только у Ады...

К сожалению, развитие информационных технологий определяется не только и не столько техническими соображениями (то есть далеко не всегда наиболее используемой оказывается наиболее совершенная технология), но и сиюминутными стечениями обстоятельств. Так, сейчас на пост-советском пространстве в области программной индустрии и образования сложился очевидный порочный круг: в индустрии практически не знают про Аду, соответсвенно, со стороны индустрии нет запроста к образованию по подготовке Ада-специалистов, и из вузов в индустрию приходят новые люди, которые практически ничего не знают про Аду. Наша с вами задача - попытаться разорвать этот круг!


Сергей Рыбин для Ada_Ru. Октябрь 2006