Ada Ru: Знаю Вас как активного участника рассылки Ada_Ru, но боюсь ошибиться в официальных титулах. Можете представиться?
• старший научный сотрудник НИВЦ МГУ
• консультант компании AdaCore EU
Кроме того, я недавно был официально зарегистрирован в качестве эксперта по языку Ада в рабочей группе ISO, отвечающем за стандарт языка Ада (JTC1/SC22/WG9)
Довелось также принять участие в разработке ГОСТа на язык Ада. Мы получали проекты ГОСТа на рецензию. Как и все отечественные ГОСТы на языки программирования, ГОСТ Ады являлся на 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).
Сейчас, после десяти лет непосредственного участия в работе по созданию и сопровождению системы программирования GNAT, я понимаю, что силы, вложенные в то время в разработку трансляторов Ады-83 для использовавшихся тогда архитектур, были явно недостаточны, но даже с теми ресурсами наши разработчики достигли результатов, вплотную приближавшихся к требованиям индустрии.
Анализ причин успеха Ады в конце 80-х — начале 90-х голов прошлого века, последовавшего затем провала в конце 90-х и медленного, но стабильного роста Адского сектора программной индустрии в настоящее время вполне может оказаться темой серьезного исследования на стыке информатики, экономики, психологии и, возможно, еще каких-то наук. Нас, как Ада-энтузиастов, в первую очередь интересуют именно причины того, что язык, при всех своих несомненных преимуществах, оказался не столь популярен и распространен, как мог бы и должен бы быть.
Я бы отметил две причины этого.
Первая причина — стратегическая ошибка в проектировании первой версии языка. Ада была задумана как *единый* язык встроенных систем, и Пентагон, как «заказчик» и инвестор проекта по созданию языка, еще в ходе разработки языка недвусмысленно дал понять, что как только язык будет создан, тут же будет введено строгое правило: «все новые проекты должны выполняться только на Аде». В результате первая версии языка содержала крайне примитивные средства интерфейса с другими языками. В самом деле, зачем заботиться о многоязыковом программировании, если все новые программы будут написаны только на Аде? В конце 70-х годов прошлого века такое проектное решение казалось вполне разумным, однако стремительный рост программной индустрии, и, соответственно, рост требований и ожиданий заказчиков ПО привел к тому, что выполнение требования Пентагона «все новые проекты — только на Аде» все чаще и чаще оказывалось на практике или неразумно дорогим, или просто невозможным. В ряде случаев оказывалось, что выполнение этого требования означало переписывание с нуля готовых решений, уже реализованных на других языках. Что же касается невоенной индустрии, в которой использование Ады не являлось обязательным, то в ней многоязыковое программирование в конце 80-х уже было общей практикой, и Ада, которая не позволяла этого эффективно делать, стала сдавать свои позиции. Вскоре и Пентагон был вынужден ослабить требование выполнения новых проектов только на Аде. В стандарте Ады 1995 года проблема многоязыкового программирования получила полное и эффективное решение, но, к сожалению, время оказалось упущено.
Вторая причина — мощная финансовая и организационная поддержка Пентагона сыграла с Адой злую шутку. Высокая стоимость военных заказов и законодательно (!) оформленное требование Пентагона выполнять все новые заказы только на Аде привело к тому, что разработчики Ада-технологий были в первую очередь озабочены тем, чтобы их трансляторы успешно отрабатывали на комплекте эталонных тестов ACVC, проверяющем соответствие транслятора стандарту, а вопросы ресурсоемкости трансляторов и качества объектного кода отходили на второй-третий план. Ада-технологии реализовывались и эксплуатировались на самых мощных на то время вычислительных системах, и реализаторы могли себе позволить не сильно заботиться об эффективности.
Утверждение первого стандарта языка совпало во времени с революционными изменениями в аппаратной базе ЭВМ — началом широкого распространения так называемых «персональных компьютеров». По своим ресурсам первые «персоналки» уступали иным современным мобильным телефонам, однако очень быстро на них появились реализации сначала примитивных версий Бейсика, а потом Паскаля и Си. Находясь в условиях жесткой конкурентной борьбы и правильно оценив рынок персональных компьютеров как наиболее перспективный в ближайшие десятилетия, разработчики компиляторов были вынуждены революционным образом усовершенствовать применяемые технологии. Но это касалось «простых» языков (Бейсик, Паскаль, Си), Ада же в это время спокойно почивала на лаврах на могучих мейнфреймах, горя не зная за широкой финансовой спиной Пентагона.
И в какой-то момент оказалось, что каждый серьезный программист имел на своем столе вполне работоспособный компьютер, находившийся в полном его распоряжении, и на этом компьютере были разные полезные компиляторы, но не было компилятора Ады!
Сейчас и эта проблема успешно решена — компилятор GNAT по требованиям к ресурсам, производительности и качеству генерируемого кода сопоставим с индустриальными реализациями других индустриальных языков, но и здесь время оказалось упущено, к сожалению.
В прошлом Ада была основой годового курса по языкам программирования для студентов 3-го курса факультета ВМиК МГУ. К сожалению, в ходе пересмотра учебной программы курс был сокращен с года до семестра, потерял поддержку семинарскими занятиями, а в программе курса Ада была существенно потеснена С++.
Насколько я знаю, сейчас Ада достаточно активно используется в учебном процессе Харьковского университета. Я бы посоветовал расспросить об этом Виктора Олеговича Мищенко.