Ада в России: Обзор

С.И. Рыбин, 1994г.

Представлена история развития и текущее состояние языка Ада в России. Некоторые положения выделены особо. Московский Государственный Университет предлагается, как базовая организация для интернационального сотрудничества с русским Ада-сообществом.

1. Необходимые политические отступление

К концу 1991 почти половина Советских республик участвовала в проектах и исследованиях связанных с языком Ада и Россия принимала участие почти во всех из них. После "преобразования" СССР в СНГ в декабре 1991г. Ада проекты во всех "независимых государствах" за исключением России были прекращены. Для упрощения изложение будет использоваться единый термин "русская Ада-ситуация", который следует понимать, как ситуация в СССР до 1991г. и в СНГ и России, после. Это не совсем корректно, но позволяет избежать политических аспектов.

2. Общая Ситуация

В начале 80-х Ада привлекла всеобщее внимание среди русских специалистов и ученых в области компьютерных наук. В 1980г. в Москве была образованна русская группа SIGAda, которая активно действовала до конца 80-х годов. Эта группа не имела серьёзных контактов со всемирным Ада сообществом и не была зарегистрирована в ACM. В государственных структурах русская SIGAda имела некоторый официальный статус, хотя никакой серьезной поддержки со стороны государства оказано не было. Это была неформальная группа из более чем сотни специалистов из разных городов СССР работавших в индустрии, исследовательских институтах и образовании. В МГУ проводились ежемесячные собрания, а общие конференции русской SIGAda устраивались минимум раз в год. Последующие политические и экономические изменения стали серьезным испытанием для русской SIGAda. Теперь уже нет регулярных собраний и конференций, но ядро нашей SIGAda осталось, так же, как и оптимизм относительного его будущего.

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

Ситуация начала меняться в начале 90-х. Российское Министерство Обороны (МО) и некоторые государственные организации утвердили программу, целью которой было принять Аду как основной язык в армии, гражданской авиации и некоторых других областях. Теперь эта программа разделена на три независимых, возглавляемых МО, министерством гражданской авиации и министерством науки. Однако, сейчас наблюдается недостаточная координация между этими программами.

Главным элементом программы МО является перенос системы Паллада с русского аналога IBM-370 на русский аналог VM/SP для PC 386 под UNIX (как целевой, так и инструментальной платформы), затем провести проверку полученной системы на тестах ACVC. Среди русских Ада-проектов этот - наиболее продвинутый.

Система Паллада была разработана Санкт-Петербургском Государственном Университете. Идея этой реализации созрела в начале 80-х годов в команде высоко квалифицированных специалистов разработавших ранее широкоизвестную (в России) реализацию языка Алгол 68. Алгол 68 и был использован при написании первой версии системы Паллада. Затем был применен метод раскрутки и теперь все компоненты компилятора Паллада и его окружения написаны на языке Ада, они разрабатываются и компилируются используя саму систему Паллада. Размер кода Паллады составляет более 100 000 строк.

Последняя версия Паллады для русского аналога VM/CP представляет собой интегрированную среду разработки, включающую компилятор, Ада-ориентированный текстовый редактор, динамический отладчик исходного кода, систему библиотек проектов, систему контроля версий и командный интерпретатор. Система способна генерировать объектный код для VM/CP и некоторых специализированных русских встраиваемых архитектур для коммуникации.

Кроме использования системы для собственной разработки, версия VM/SP Паллады использовалась в исследовательских проектах систем телеметрии и в образовании в университетах Москвы, Санкт-Петербурга, Харькова и др городов.

UNIX версия Паллады находится в состоянии прототипа, но уже сейчас пригодна для раскрутки PC/UNIX окружения.

Система Паллада более детально рассмотрена в [Pallada].

Первоочередная цель проекта министерства науки - восстановить русскую группу SIGAda и направить работу этой группы в более практическое русло. Главной целью группы будет преодолеть барьеры распространения языка Ада (Ада 9X в скором будущем) в России. Используя терминологию Ada9X, "Russian Ada83 Transition Plan" - это краеугольный камень этой программы.

В эту программу также входят планы подготовке еще одной реализации системы тестирования ACVC. Эта реализация была разработана в Московском Инженерно-Физическом Институте. Она использует PC/DOS как инструментальную и одну из целевых платформ. С самого начала был сделан особый упор на наипростейшие целевые платформы, хотя существует версия для PC XT поддерживающая все возможности языка.

Третья русская Ада-программа, возглавляемая Министерством Гражданской Авиации, ставит своей целью разработку и внедрение в реальный технологический процесс технологию реализации и поддержки встраиваемых авиационных систем. В соответствии с требованиями FAA эта технология должна быть основана на языке Ада. Для этого должно быть разработано специализированное программное окружение включая Ада компилятор. VAX/VMS предполагается как инструментальная платформа (VAX и его русские аналоги - самые распространенные платформы разработки авиа систем). Целевая платформа еще окончательно не определена.

Следующей ступенью программы является реализация Ада 9X.

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

3. Ситуация в подробностях

3.1 Русское Ада-сообщество

Русское Ада-сообщество сравнительно небольшое, насчитывает приблизительно две сотни членов. С другой стороны это объединение высоко квалифицированных специалистов, работающих в структурах МО, образовании, лидирующих исследовательских институтах и промышленности. Русское Ада-сообщество будет играть существенную роль в успехе "Russian Ada83 Transition Plan".

Наше Ада-сообщество в основном состоит из разработчиков инструментальных средств, менеджеров и экспертов языка. Ада-программисты составляют малую часть сообщества. Наиболее распространенные программные и аппаратные платформы сейчас, это MS DOS и PC-совместимые компьютеры. Многие русские программисты должны использовать С, С++, Turbo Pascal или языки баз данных (FoxPro, Paradox и т.д.) чтобы зарабатывать на жизнь. Однако, концепции и принципы языка Ада и Ада технологий разработки ПО популярны среди русских программистов. Я знаю многих высоко квалифицированных программистов, кто готов использовать язык Ада в своих проектах. Я думаю будет не трудно организовать Ада-команду в МГУ, т.к. мы имеем прекрасный опыт использования Ады в исследовательских проектах.

3.2 Реализации

Более дюжины реализаций языка Ада в России состоялись. Они основывались на различных инструментальных платформах (IBM PC, русском аналоге IBM-370, PDP-11, DEC Professional, собственных Советских разработках БЭСМ-6 и Эльбрус). Большинство этих систем были ориентированы на кросс-платформенную разработку для специальных русских встраиваемых архитектур. Половина русских реализация Ады вылились в рабочие прототипы, которые были использованы в одном или нескольких реальных проектах. Наилучшие результаты были достигнуты в проекте Паллада, упоминавшемся выше, и проекте Московского Инженерно-Физического Института. До 1993 года, единственным импортным компилятором Ада, получившим распространение в России была одна из ранних версий NYU ADA/ED для IBM-370. Теперь вычислительные центры располагают MS DOS версией NYU ADA/ED. Доступны некоторые нелегальные копии PC Ада компиляторов, но не один из них не используется в коммерческой или финансируемой государством программе.

3.3 Тестирование компиляторов

Еще ни один русский Ада компилятор не прошел сертификацию на ACVC. Но все развиваемые или законченные Ада реализации имеют в планах подготовку к такой сертификации.

Недавно в 1993 наш Вычислительный Центр получил авторизованную копию тестов ACVC 1.11 от German AVF. До этого тесты ACVC не были доступны для русских разработчиков. Ранее наши разработчики использовали наборы тестов сделанные в МГУ и НИИ. Эти работы описаны ниже.

3.4 Использование языка Ада

На основе русских реализаций были выполнены некоторые исследования и коммерческие проекты. Из наиболее серьезных проектов следует отметить встраиваемые авиационные системы.

Сейчас развивается совместный русско-английский проект по подготовке лайнера ИЛ-96М к FAA сертификации и его последующему выходу на внешние рынки. В проекте использован ACVC сертифицированный компилятор, но он не предназначен для распространения вне границ проекта. Русская команда участвующая в этом проекте состоит из примерно 40 программистов, занимающихся разработкой и модификацией нескольких программных систем, состоящих из более тысячи модулей.

3.5 Книги, учебники, информация

Около дюжины книг по языку Ада были переведены на русский язык. Среди них И. Пайл, Е. Василеску, Р. Бар и Н. Джехани. Две книги были написаны русскими авторами. В течении нескольких лет московские библиотеки получали журналы по Аде, такие как "Ada Letters", "Ada User", "Ada Strategies", "Journal of Pascal" и "Ada and Modula-2". Однако с 1992 библиотекам не хватает фондов для этих журналов.

Мы также получали некоторую информацию в виде подарков от иностранных специалистов приезжавших в Россию. В 1993 наш Вычислительный Центр получил большую коллекцию включая CD-ROM с более чем 500Мб информации от самого начала проекта Ада 83 до руководства по Ada9X.

У русское Ада-сообщества две проблемы: проблема получения свежей информации о языке Ада и Ада 9X и проблема распространения информации между членами сообщества. Сейчас распространения информации в России - не простая задача.

3.6 Образование

Я преподаю основанный на Аде 3-х семестровый курс по концепциям и принципам языков программирования в МГУ. Базирующиеся на Аде курсы есть и в других наших институтах и университетах. Общее количество студентов изучающих Аду увеличивается от 500 до 2000 из года в год. Эти курсы не являются курсами по языку Ада, но они развиваются в этом направлении.

3.7 Стандартизация

Для языка Ада существует русский (бывший советский) стандарт. Он является переводом ANSI/MIL/STD-1815a и включает поправки для русского алфавита. Перевод самого стандарта был плохой идеей. Русские разработчики компиляторов и другие специалисты по Аде всегда пользуются оригинальным английским текстом спецификации языка.

3.8 Ada 9X

К сожалению проект Ada9X не так популярен у нас как Ada83 в свое время. Главной причиной этого является отсутствие общедоступной информации о нем. Но интерес в МО и государственных структурах есть. Этот интерес выражается в различных формах во всех русских Ада программах. Наша команда получила небольшой грант на работу связанную с Ada 9X. Я участвовал в e-mail обсуждении некоторых документов по Ada 9X и буду продолжать этим заниматься.

4 Ада в МГУ

В 1980 в НИВЦ и факультете ВМиК МГУ была организована специальная исследовательская группа в области стандартизации языков программирования и тестирования компиляторов. Группа достигла следующих результатов

  • Общая концепция стандартизации языков программирования. Эта концепция основывается на на систематическом анализе отечественного и мирового опыта стандартизации в программировании, программной инженерии и информационных технологий, документов ISO. Мы подготовили многие документы в официальном представительстве Союза в ISO TC22.
  • Методология черного ящика в тестировании компиляторов. Главные особенности нашей методологии:
    • ориентация на формальный критерии полноты и методичные техники их достижения основанные на формальных моделях языков, стандартов, тестовых наборов и компиляторов
    • полу-формальных методов и моделей вместо неформальных и полностью формальных. Мы использовали формализмы, как средства разработки тестов, сами формализмы не были целю нашей работы.
  • Частично формализованная теория определения диагностических эффектов реализации програмного языка.
  • Наборы тестирования для стандартов Фортрана, Паскаля, Ады и Бейсика. Эти наборы получили хорошие отзывы от русских разработчиков компиляторов.

К сожалению почти все наши работы были опубликованы только в России. Результаты всех перечисленных теоритических исследования были применены к языку Ада.

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

Исключительное применение нашей общей методологии тестирования нашло в тестировании Ада компиляторов. Это кратко описано в статье [Kaufman,Rybin]. Эта статья является переводом с русской версии, сделанным без нашего участия, в ней могут быть ошибки. Важнейшим компонентом этого применения является частично формализованная техника создания модели "идеальной диагностики" для контекстно-зависимых ошибок, разработка фрагментов такой модели для диагностики Ады.

Мы разработали два комплекта тестов для диагностики Ада компиляторов. Первый основывался на системном сканировании текстов спецификации в целях поиска правил применяемых при компиляции. Набор состоит из более 1000 относительно простых тестов, каждый из которых проверяет единственное такое правило. Был также разработан набор сопутствующих утилит.

Второй набор был основан на диагностической модели для Ады. В него входит около 20 тестов, каждый из которых проверяет нетривиальный аспект семантики языка Ада.

Мы участвовали в основном в русских проектах по реализации языка Ада. Это предполагает наше участие в той или иной роли во всех современных Ада программах.

Сегодня все активность связанная с Адой в МГУ сосредоточена в ВЦ. Может оказаться удобным использовать наш ВЦ, как базовую организацию для взаимодействия и кооперации с русским Ада-сообществом и участия в возможных совместных проектах. Мы имеем налаженные контакты с другими членами сообщества и можем организовать объединенную команду с участием ведущих специалистов Российской Академии Наук и других организация под конкретные проекты. Наш ВЦ имеет большой опыт взаимодействия с иностранными партнерами, например сотрудничество с Apple разработки ПО для Macintosh.

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

Заключение

Сейчас преждевременно оглашать ситуацию с Адой в России. У нас есть сообщество Ада-говорящих людей и несколько команд работающих над Ада проектами. Мы можем организовать команды для разного рода проектов связанных с Адой. Для этого у нас есть некоторый опыт и собственные результаты. Есть государственные программы в этой области. Однако финансовая ситуация в государственных научных и исследовательских программах очень сложная и наши команды всегда рискуют быть остановленными. Мы готовы участвовать в других программах и проектах в этой области.

Ада-сообщество сохраняет оптимизм, однако он не так силен, как был несколько лет назад.

Ссылки

[Pallada] Popov A., Gindysh I., Rapp V., Ziabkin V. Pallada System // Ada Letters, vol.12, No.2 (May-June 1992), p.117-124.

[RM83] The programming language Ada reference manual. ANSI/MIL-STD1815A.

[Kaufman,Rybin] Kaufman V.Sh., Rybin S.I. Methods for Standardizing Translator Diagnostics // Programming and Computer Software, vol.16, No.4 (July-August 1990), p.146-152.

[KPR] Kaufman V.Sh., Pavlov M.V., Rybin S.I.Testing of Ada Diagnostics // Ada Letters, vol.13, No.4, p.71-76.