Архивы: по дате | по разделам | по авторам

Место под солнцем

Архив
автор : АНТОН ПЕРЕБЕРИН    02.02.1999

Не так давно компания "МедиаЛингва" объявила о создании компилятора переднего плана языка C++ и обучающей среды программирования С11. Одной из основных черт проекта является его ориентация на русскоязычную аудиторию, что, в частности, подразумевает полную локализацию самого языка.

Не так давно компания "МедиаЛингва" объявила о создании компилятора переднего плана языка C++ и обучающей среды программирования С11. Одной из основных черт проекта является его ориентация на русскоязычную аудиторию, что, в частности, подразумевает полную локализацию самого языка.
Работу по проекту ведет дочерняя компания, "МедиаЛингва: Компиляторы", образовавшаяся в результате слияния двух групп разработчиков - специалистов НИВЦ МГУ и специалистов отдела компиляторов фирмы "Фитон".
Чтобы узнать, как нынче живется отечественным производителям программного обеспечения, а также получить сведения о новом проекте, что называется, из первых рук, наш корреспондент Антон Переберин задал несколько вопросов генеральному директору компании "МедиаЛингва" Игорю АШМАНОВУ, генеральному и техническому директорам компании "МедиаЛингва: Компиляторы" Артему ТАМАЗОВУ и Евгению ЗУЕВУ.


   - Рынок программного обеспечения в настоящее время насыщен продукцией крупных фирм с мировым именем. В состоянии ли отечественные производители конкурировать с этими фирмами на российском и, тем более, внешнем рынке?
   И.А.: Если говорить о "МедиаЛингве", то это фирма специфическая. Наша тема - это в основном лингвистика и искусственный интеллект. Тема горячая, но рынок не насыщен. Фирм, занимающихся подобными вещами, не так много ни у нас, ни за рубежом. Другое дело, что наши продукты языково-специфические, поэтому, пока мы не сделаем что-нибудь, скажем, англо-испанское или англо-германское, мы на зарубежный рынок выйти не сможем. То есть, у нас там есть дилеры, но они имеют дело только с теми, кто работает с русским языком. Наши словари имеют пока русскую пару, хотя в перспективе никто не мешает в ту же оболочку вставить другой компонент и получить "нерусско-нерусский" словарь. Похожая ситуация с "переводчиками". А пока у нас есть местный рынок, который, правда, сейчас сильно сократился, и, кроме того, зарубежные дилеры и издатели, которых не так много. Ну, например, у нас неплохой рынок в Германии, потому что там два миллиона русских. Вообще, как только выходишь куда-то, где пиратство ниже, где люди привыкли покупать, а зарплаты нормальные, там даже очень незначительный процент рынка - это серьезные деньги, которые такую компанию, как мы, могут прокормить.
   А.Т.: Вообще, чтобы выйти на рынок, надо предложить то, чего ни у кого нет. Или надо сформировать потребность. Сформировать потребность бывает легче, чем уловить ее. Например, может оказаться перспективным формирование потребности в переносимом программном обеспечении. Или, наоборот, потребности в максимальном использовании возможностей конкретной платформы или операционной системы.
   Что же касается выхода на мировой рынок, то это тема для отдельного разговора. Коротко я скажу так. Везде, где дело касается какой-то реальной работы на зарубежного заказчика, мы, да и практически все российские разработчики, наталкиваемся на стену лоббирования. Лоббирование есть, хотя в Европе оно слабее, чем в "колыбели демократии" - США.

   - Теперь я хотел бы поговорить о вашем новом проекте. Почему вдруг "МедиаЛингва" взялась за разработку компилятора? Насколько я понимаю, это новое направление в деятельности компании.
   Е.З.: Действительно, чисто внешне наша работа по созданию компилятора весьма опосредованно примыкает к тем проектам, которые выполняет "МедиаЛингва". Но на самом деле одной из главных идей при образовании нашей компании была идея связать естественные языки и формальные языки программирования.
   А.Т.: Именно такая цель стоит перед нами, но - в перспективе. Причем пути ее решения пока неясны. Исторически сложилось так, что мы много занимались проблемами, связанными с компиляцией, у нас был опыт создания компилятора языка C++, в какой-то момент президент "МедиаЛингвы" установил с нами контакт, и мы организовали эту компанию. Решили начать с конкретного проекта - создания системы обучения языку C++.
   И.А.: Мы рассчитывали, во-первых, на то, что сам по себе компилятор будет хорош. Он сейчас значительно лучше поддерживает стандарт, чем ряд известных промышленных компиляторов. Его делают профессионалы высокого класса, которые не только хорошо понимают, что такое язык C++, но и что такое преподавание языка C++. Во-вторых, мы понимаем, что программисты - это сейчас некий капитал в России. Система образования у нас такая, что все, связанное с математикой или физикой, преподается у нас гораздо лучше, чем за рубежом. А изучение языков программирования затруднено языковым барьером. Человек должен изучать и языки программирования, и английский, которому в школе его научили очень плохо или который он совсем не знает. Мы хотим этот разрыв сократить, чтобы приходилось прыгать сразу не через две ступеньки, а только через одну. Существует большое количество студентов и даже школьников, которые желали бы выучить C++ хотя бы потому, что сейчас это индустриальный стандарт. Но им приходится учиться, осваивая тот безумный сленг, который используют между собой программисты, не знающие английского языка, но вынужденные читать английские слова в руководстве. Мы считаем, что было бы хорошо, если бы существовал полностью русифицированный инструмент для изучения. Также ясно, что Министерство образования и прочие подобные организации должны это поддержать; они часто говорят, что обучение программированию на русском языке для них важно. И мы рассчитываем, что, во-первых, будет спрос, а во-вторых, возможно, мы это сделаем стандартом обучения.

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

   - А отечественные инвесторы имеются?
   И.А.: До кризиса мы разговаривали с несколькими крупными компаниями об инвестициях в "МедиаЛингву"; все переговоры, естественно, в августе прекратились.

   - Чем "МедиаЛингва" собирается заниматься в дальнейшем?
   И.А.: Во-первых, естественно, продолжать разработки в области лингвистики искусственного интеллекта, поисковых систем. У нас намечается несколько новых проектов, но распространяться об этом мне пока не хотелось бы. И, скорее всего, мы будем двигаться на западный рынок, создавать языково-неспецифические приложения и новые компоненты для языково-специфических приложений. Что касается дальнейшей работы компании "МедиаЛингва: Компиляторы", то, я думаю, ее представители лучше расскажут об этом сами.
   "C++ с человеческим лицом"

   - Вернемся к разговору о компиляторе языка C++ и обучающей системе С11.
   Е.З.: Идея заключалась в том, чтобы создать систему программирования на основе языка C++, которая позволяла бы людям, имеющим некоторый опыт программирования, но не сталкивавшимся с C++, освоить базовые принципы программирования на этом языке. В эту систему входит целый комплекс поддержек, ориентированных именно на обучение. Это полная локализация языка и компилятора, это повышенные диагностические возможности, это развитая оперативная помощь (более развитая, чем в обычных системах), и, наконец, это хороший учебный материал. Система должна быть оснащена развитыми отладчиками, средствами выполнения программ, специально ориентированными на улучшение диагностики. Все это вместе, как мы надеемся, позволит сделать систему очень удобной для обучения.

   - Нужна ли полная локализация языка программирования? Необходимость русскоязычной учебной и справочной документации сомнений не вызывает. Комментарии по-русски - тоже нужны, тем более что это реально допускается большинством существующих на сегодняшний день компиляторов. Возможность использовать русские имена идентификаторов также, вероятно, полезна, особенно в учебных системах. Но действительно ли необходимо вводить русские эквиваленты служебных слов? И не сложнее ли окажется потом, при переходе к стандартному C++, программиста переучивать?
   Е.З.: Проблема локализации обсуждается у нас каждый день, постоянно приходят письма и т. д. Действительно, это самый первый вопрос, который в данном случае возникает. (Хотя при этом упускаются более важные вопросы. Локализация - это лишь один из аспектов.) И самый сложный момент - использование русских служебных слов. Вообще говоря, это несущественное, но - отступление от стандарта. Однако мы считаем, что такое осознанное отступление оправданно в контексте всех наших усилий по разработке именно обучающей системы. Кроме того, если это и отступление от стандарта, то не концептуальное, не принципиальное. Мы не добавляем новых свойств, не меняем семантику языка. Мы только заменяем одну систему обозначений другой.
   А.Т.: Не заменяем, а дополняем.
   Е.З.: Действительно, дополняем. Потому что у пользователя остается выбор, он может пользоваться оригинальными служебными словами, даже не зная эквивалентов на русском языке. Вот наши аргументы в пользу такого решения.
   И.А.: Я хотел бы сказать по поводу переучивания. Главное, чему учат, скажем, мехмат или ВМК МГУ, - принимать условия игры и быстро начинать по ним играть. Поэтому, в частности, выучивание нескольких десятков новых слов не должно вызывать трудностей после того, как предмет освоен в целом. И потом: а нужно ли переучивать? Уже давно замечено, что многие народы становятся более внимательными не к тому, что их объединяет с другими народами, а к тому, что их выделяет. Это естественный процесс. Почему люди не могут в принципе программировать на своем родном языке? Если, конечно, готовить русского программиста, чтобы продать его потом на Запад, тогда, возможно, задача должна как-то иначе ставиться. Но этим пусть другие занимаются. Люди должны работать на родном языке. Американцы ведь программируют на родном языке!

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

   - А в мире были прецеденты локализации языков программирования?
   И.А.: Мне, по крайней мере, не известны. Громких сообщений не было. Хотя, если залезть в Интернет, то там можно найти все, что угодно.
   Е.З.: Если говорить о России, то идея локализации имеет свою историю. Первые российские (тогда советские) компиляторы с таких, например, языков, как Algol-60, очень часто были полностью русифицированными, вплоть до служебных слов. Тогда это совершенно не воспринималось как крамола, это казалось вполне очевидным. Те, кто работал на суперкомпьютере "Эльбрус" (а это тысячи человек!), знают, что его базовый язык "Эль-76" (язык высокого уровня, сопоставимый с Algol-68), был полностью русским. Мне посчастливилось программировать на нем около десяти лет, и я хорошо помню, насколько удобно и естественно было писать "если", а не "if" и использовать русские имена идентификаторов и процедур. Кстати, на "Эльбрусе" был (в числе многих) реализован компилятор PL/I, который поддерживал русскоязычные эквиваленты служебных слов. И это тоже казалось очевидным:
   Что же касается больших "мировых" языков, то, кажется, в Algol-68 были заложены возможности его "интернационализации", и в одном из описаний этого языка приводился список русскоязычных эквивалентов служебных слов, предложенных А. П. Ершовым.
   А.Т.: На самом деле имеется несколько более интересных моментов в техническом плане. Локализация языка - это понятно практически всем. Какие-то тонкости реализации среды разработки будут ясны только тогда, когда выйдет продукт. Мы стремимся к максимальной простоте и высокой функциональности.
   Е.З.: В нашу систему заложено несколько технологических решений, нетрадиционных для систем программирования. И заложены они для достижения все той же цели - создания комфортной среды для новичка в программировании на C++. Первое решение - виртуальная машина. Это наиболее явное нововведение.
   А.Т.: Но это нововведение только для систем программирования и только на языке C++.
   Е.З.: Конечно: Так вот, пользователь виртуальную машину может и не видеть и о ней не думать. Однако наличие этого компонента вносит серьезные отличия в систему. Наш компилятор генерирует не объектный код, а некоторое промежуточное представление. Это представление специально спроектировано так, чтобы содержать всю информацию об исходном тексте программы в удобном для доступа и анализа виде. Когда такое представление получено, включается виртуальная машина, грубо говоря, интерпретатор, и выполняет программу. Зачем это нужно? Во-первых, виртуальная машина потенциально дает значительно лучший диагностический сервис. Иными словами, она позволяет диагностировать ряд ошибок, которые иными путями с трудом диагностируются, а то и вовсе могут остаться незамеченными. Например, контроль корректности адресной арифметики, что позволяет легко "отловить" такие ошибки, как выход за границы массива или неправильную работу с указателями. Во-вторых, наличие виртуальной машины позволит скрыть от пользователя интерфейс реальной операционной системы, который может оказаться весьма сложным, особенно для начинающего программиста.
   А.Т.: Технологические решения, которые мы закладываем в систему, призваны облегчить жизнь начинающим разработчикам, но не только. Если говорить о виртуальной машине, то мы делаем ее переносимой. Так, кроме системы С11, мы собираемся реализовать ее для Linux. Таким образом, программа, разработанная на C++ с использованием C11 потенциально переносима на любую платформу, причем без перекомпиляции.

   - Включая графический интерфейс?
   A.T.: Да. Виртуальная машина будет иметь свой графический интерфейс.
   Е.З.: И мы хотели бы, чтобы прикладная программа, использующая графический интерфейс, входящий в окружение виртуальной машины, была бы вместе с виртуальной машиной переносима.
   A.T.: Виртуальная машина будет иметь собственный интерфейс прикладного программирования, в котором есть много разделов, в частности, интерфейс пользователя. Причем объектно-ориентированный, в отличие, например, от Windows API. Что касается уже упомянутых повышенных диагностических способностей виртуальной машины, то с точки зрения профессионального программиста это значит, что C++ в нашей реализации становится надежным и безопасным; возможно, даже более безопасным, чем Java. Конечно, за счет интерпретации скорость выполнения программы будет несколько ниже, но это уже совсем другой разговор.
   Е.З.: Вы начали разговор с вопроса о конкуренции. Как видите, мы не собираемся конкурировать с мировыми производителями. Мы живем на разных полянках. Например, Microsoft Visual C++ предназначен для промышленных разработок. И он обладает широким спектром свойств, необходимых для достижения этой цели. У нас ниша другая. Мы ориентируемся на тех, кто хочет начать программировать на C++. Обилие свойств, инструментов, настроек профессиональной системы может просто напугать новичка. Мы надеемся, что пользователю будет приятнее начать работу именно с нашей системой.

   - А собираетесь ли вы создавать настоящий генератор кода?
   Е.З.: Да. Хотя сейчас это задача не стоит в числе приоритетных. Однако мы, конечно же, хотим сделать полновесную систему, снабженную оптимизирующими генераторами. И, между прочим, не для одной платформы. Мы рассчитываем по крайне мере на две: Windows/x86 и SunOS/SPARC. А вообще мы планируем сделать профессиональною систему, в которой кроме компилятора и генератора будет еще много компонентов, в том числе система поддержки проектов, система ведения версий и т. д.

   - В какой стадии сейчас находится проект?
   А.Т.: Недавно мы соорудили и испытали макет системы, куда входят альфа-версия компилятора переднего плана, а также предварительные версии среды разработки и альфа-версия виртуальной машины. Все это вместе работает, программы компилируются, на виртуальной машине выполняются. То есть очень большой объем внутренней реализации выполнен. Но альфа-версия всей системы появится чуть позже. Запланированный срок выхода С11 - лето 1999 года.

   - И ее можно будет просто купить в магазине?
   А.Т.: Да, она задумана как "коробочный" продукт.
   Е.З.: Тут надо заметить, что технологии, которые разработаны в рамках проекта, могут быть воплощены в "коробочный" продукт, а могут быть использованы и в других разработках. Например, мы можем предложить независимым разработчикам реализовать генератор кода для нашего компилятора переднего плана на произвольной платформе. Мы предоставляем документацию на промежуточное представление, программный интерфейс и т. д. Возможны еще несколько направлений. Например, та же виртуальная машина. Можно, скажем, реализовать ее в виде дополнительного модуля к Web-браузеру и использовать аналогично виртуальной машине Java.
   А.Т.: Есть еще одна идея, над которой нам еще предстоит работать. На основе виртуальной машины можно строить достаточно оптимальные генераторы кода. Отслеживая выполнение программы на виртуальной машине, можно параллельно генерировать очень хорошо оптимизированный код.
   Е.З.: Если говорить о перспективных работах, связанных с "полновесной" системой, то у нас есть некоторые надежды, может быть, конечно, утопические, на сотрудничество с ВПК. Ведь известно, что, как правило, в ВПК не пользуются оборудованием и программным обеспечением зарубежного производства. А мы пока являемся единственными производителями компилятора C++ в России.

   - В заключение я хотел бы поблагодарить вас за интересную беседу и пожелать вам творческих и коммерческих успехов.


© ООО "Компьютерра-Онлайн", 1997-2022
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.