Rus Eng
О компании  
Новости компании
Лицензии и сертификаты
Вакансии
Контакты
Публикации
White Paper
Продукты
Технологии
Разработчикам ПО
Производителям микроконтроллеров
Партнеры / Клиенты
Перспективные проекты
| | | |
Главная страница    О компании    Публикации    White Paper
White Paper

Языки программирования, компиляторы, языковые процессоры:
подход компании Интерстрон

7. Перспективные исследования и разработки компании

Стратегия перспективных исследований, ведущихся в компании, отражает наше понимание актуальных перспектив развития системного ПО и прежде всего, средств и систем разработки программ. Обобщенно спектр наший усилий можно представить в виде следующей диаграммы (см. рис 5), оси которой начинаются с различных граней, обозначающих уже созданные фирмой продукты и технологии.


Рис. 5 Направления перспективных исследований компании

Кратко рассмотрим наиболее существенные направления исследований, которые в настоящее время ведутся в компании.

7.1. Разработка проблемно-ориентированных языковых процессоров

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

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

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

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

Этот подход иллюстрируется на рис. 6 на примере Визуализатора - конечного продукта, разработанного компанией.


Рис. 6 Структура типового прикладного процессора

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

Еще один прикладной процессор, разрабатываемый компанией в настоящее время,- это средство задания и исполнения сценариев на языке Си++. Кратко идея проекта может быть описана следующим образом.

Си++ - чисто компиляционный язык, что хотя и обеспечивает решение задач разработки высокоэффективных программных систем различного назначения, однако неизбежно ограничивает сферу использования языка традиционными задачами. В то же время сфера применения программных систем сейчас существенно расширилась - прежде всего за счет введения в широкий обиход различного рода сетевых коммуникаций и соответствующих программируемых устройств. Речь идет прежде всего о двух взаимосвязанных областях: Интернет и мобильные коммуникации. Для программирования в этих областях используются, как правило, решения, основанные на языке Java, а также на языках описания сценариев типа JavaScript/Jscript/VBScript.

Задача проекта заключается в том, чтобы на основе имеющихся у компании технологий расширить область использования языка Си++, создав систему разработки и исполнения сценариев ("Scripting C++").

Основной предлагаемого проекта служит виртуальная машина Си++, разработанная в компании для контролируемого (управляемого) исполнения Си++-программ в интерпретационном режиме с целью отладки, а также в учебных целях. Виртуальная машина работает непосредственно с семантическим представлением, генерируемым компилятором переднего плана, и тем самым может рассматриваться как один из клиентов СП. Таким образом, компилятор в связке с виртуальной машиной образует полноценную систему описания и исполнения сценариев с языком Си++ в качестве входного языка.

Помимо традиционных сценарных задач, эта система может с успехом применяться для создания программных оболочек для специализированных библиотечных пакетов; при этом интерпретационная схема распространяется только на чисто управляющие элементы сценария: собственно библиотечные вызовы будут исполняться как обычные фрагменты откомпилированного кода.

7.2. Создание полных компиляторов Си++

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

Наиболее важная сторона работы любого традиционного компилятора - генерация кода, пригодного для исполнения на некотором целевом процессоре. Чтобы на основе компилятора переднего плана создать такой "полный" компилятор, необходимо укомплектовать его генератором объектного кода - программой-клиентом, которая принимает на входе СП и генерирует код для некоторого целевого процессора.

В архитектуре компиляции, созданной компанией такой генератор объектного кода принципиально ничем не отличается от других программ-клиентов СП (например, визуализатора). Однако, ввиду особой важности проблемы генерации кода (как наиболее типичной задачи компиляции) мы, наряду с общей конфигурацией "компилятор переднего плана - СП - программы-клиенты" предусмотрели возможность создания традиционных полных компиляторов для конкретных процессорных архитектур. Как и любой другой продукт, созданный по технологии компании (см. рис. 6), полный компилятор представляет собой "черный ящик", заключающий в себе компилятор переднего плана, API доступа к СП и генератор объектного кода.

К настоящему времени компанией по заказам различных фирм-производителей процессоров на основе описанной технологии разработано несколько полных компиляторов, порождающих объектный код для конкретных процессоров. Кроме того, Интерстрон разрабатывает собственные генераторы кода для некоторых широко распространенных архитектур, в частности, для iAPX86, в интересах перспективного проекта по созданию интегрированной среды разработки общего применения (см. разд. 8.4. ниже).

7.3. Поддержка новых языков программирования

Язык Си++ в настоящее время представляет собой, возможно, наиболее распространенный ЯП, используемый для разработки промышленных программ. Поэтому ставка на этот язык, сделанная в свое время компанией, была, безусловно, правильной и себя оправдала. Тем не менее, реальная картина современного мира ИТ включает десятки других активно используемых ЯП. Многие из этих языков сами по себе ничуть не хуже Си++ (в смысле своей перспективности и привлекательности для разработчиков) и по некоторым своим содержательным характеристикам ему не уступают. По этой причине среди стратегических направлений деятельности компании "освоение" других языков является важным приоритетом.

Ниже приводится краткий анализ трех наиболее перспективных с нашей точки зрения языков программирования, реализация которых если и не является первоочередной задачей компании, но которые, безусловно, представляются для нас объектами повышенного интереса.

Java

Этот язык получил широкое и заслуженное распространение во многих сферах разработки ПО. Основанный на некоторых ключевых концепциях Си++, язык Java избавился от многих ненадежных и потенциально опасных свойств языка-предшественника (в частности, от адресной арфиметики), включив в свой состав такие принципиально важные черты, как автоматическая сборка мусора и поддержка параллельного исполнения.

Семантика Java-программ предусматривает их выполнение на виртуальной машине, дизайн которой способствует эффективному контролю за выполнением программ и тем самым повышению их надежности. Такая идеология имеет явное сходство с идеей виртуальной машины Си++, положенной в основу продуктов нашей компании. Это обстоятельство, в числе других, делает связанные с Java проекты весьма интересным для Интерстрона.

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

С#

Этот сравнительно молодой язык переживает в настоящее время период бурного интереса и внимания. Будучи семантически и функционально весьма близким к языку Java, этот язык (вместе со своим окружением) сумел избежать некоторых существенных недостатков своего аналога и предшественника. Кроме того, имеются по крайней мере два принципиальных обстоятельства, которые обеспечивают языку C# хорошее будущее. Это, во-первых, поддержка со стороны наиболее мощного в мире производителя программного обеспечения - компании Микрософт (в недрах которой язык был спроектирован и впервые реализован) и, во-вторых, проведенная недавно комитетом ISO стандартизация языка. Первое обстоятельство многократно усиливается тем фактом, что очередная и все последующие версии платформы Windows будут включать платформу .NET - по существу, среду выполнения C#-программ - как свой неотъемлемый компонент. Второе обстоятельство традиционно и обоснованно считается весьма важным фактором широкого распространения языка, обеспечивая для его индустриальных пользователей необходимую степень уверенности в стабильности создаваемых программ и их переносимости (мобильности).

Наконец, следует отметить, что платформа .NET, которую можно считать системой поддержки времени выполнения C#-программ, в настоящее время реализована для UNIX-совместимых систем (проект Mono), что автоматически расширяет сферу использования языка C# и, тем самым, обеспечивает перспективность и востребованность различных инструментальных средств, ориентированных на этот язык.

Ада

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

Вопреки многим спекуляциям и мифам, этот язык активно и широко используется многими компаниями-разработчиками ПО, в том числе, крупнейшими корпорациями (в числе которых Boeing, Volvo и другие промышленные гиганты) как язык реализации встроенных систем. На этом языке создается системное ПО управления самолетами, ракетами и космическими кораблями, поездами, автомобилями, электростанциями, оборонными системами.

Язык Ада содержит полный спектр современных средств разработки программ. Будучи основанным на языке Паскаль, он унаследовал и усилил такие его свойства, как малое число и ортогональность базовых понятий, ясность и высокую читабельность программ. Язык поддерживает традиционный стиль структурного программирования, а также модульную, объектно-ориентированную, обобщенную (generic) и параллельную парадигмы. Действующий стандарт языка Ада датируется 1995 годом; к настоящему времени практически завершена процедура пересмотра стандарта, и уже в текущем (2005) году будет официально выпущен новый международный стандарт языка. Этот факт, вне всякого сомнения, служит признаком востребованности и перспективности языка.

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

Специализированные ЯП

Завершая краткий обзор перспективных для компании ЯП, следует отметить, что наряду с известными общецелевыми языками, мы не исключаем также возможности реализации языков специального назначения и ограниченной сферы применения, в том числе, проектирования и реализации языков по специальным заказам. Потенциал компании, наличие высококвалифицированных и опытных специалистов позволит спроектировать и реализовать такой специализированный язык (включая соответствующую библиотеку и среду поддержки времени выпонения) в приемлемые сроки и с высоким качеством.

7.4. Создание единой среды разработки

Технологии и инструменты, разработанные компанией, могут быть с успехом применены не только для создания отдельных инструментов (компиляторов, проблемных процессоров и т.п.), но и послужить основой для качественно иного продукта - полнофункциональной общецелевой интегрированной системы разработки программ, которая бы поддерживала полный жизенный цикл ПО - от спецификации программных систем, их разработки, тестирования и отладки, до сопровождения и развития.

Помимо компилятора, в состав такой интегрированной среды разработки войдут также разработанные компанией прикладные процессоры (в частности, генератор кода для iAPX86 и визуализатор). Тем самым, пользователь может получить в свое распоряжение либо набор различных прикладных процессоров (как конечных независимых продуктов), либо воспользоваться их функциональностью, интегрированной в среду разработки.

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

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



< пред.                                                                 след. >


ЗАО "Интерстрон" 1998-08.06.2015, ООО "Интерстрон" 09.06.2015 по н.в. Все права защищены.
Москва, Дмитровское шоссе, 1/1
e-mail: interstron-info@mail.ru
web: www.interstron.ru
Тел.: +7 (495) 769-55-68