Персональные инструменты
 

Application Developer Days 2: Отчет Кудрявцева В.Б/Language Oriented Programming в действии

Материал из CustisWiki

Перейти к: навигация, поиск

Докладчик из самой, вероятно, известной российской (условно) фирмы-производителя ПО рассказывал про среду разработки DSL, которая называется MPS (Meta Programming System).

Про DSL вообще

Я пришел не с начала, может быть поэтому мне показалось, что автор так и не смог объяснить, как же оно работает. Мое понимание основано скорее на чтении сайта JetBrains. Поэтому — только несколько отрывочных тезисов.

  • Написание програм на DSL — это очень эффективно
  • Разработка собственных DSL — очень дорого само по себе, кроме того порождает несколько проблем, которые только увеличивают затраты:
    • Отсутствие поддержки со стороны IDE
    • Разные расширения, основанные на макроподстановке, могут конфликтовать друг с другом

Пример с интерполяцией (подстановкой) строк:

Расширения 1:

int SomeCount = 1;
var message = "Count is [SomeCount]";

Расширение 2:

int SomeCount = 1;
var message = "Count is %[SomeCount]"
  • Традиционный способ борьбы с этой проблемой — это работа через AST (Abstract Syntax Tree)
    • Ранее использовали графические языки
    • MPS — текстово-ориентированная среда для работы с AST

Про практическую работу в MPS

Как работают в MPS?

  • Определяют элементы языка (AST)
  • Определяют систему типов
  • Определяют конкретный синтаксис языка
  • (Опционально) Определяют трансляцию в другой язык (Java)

Основной целевой язык для MPS — конечно Java, хотя сейчас также поддерживаются CSS, XML, JavaScript. Флагманский продукт на MPS — приятный баг-трекер YouTrack

Докладчик сказал, что привыкание к программированию в MPS занимает около 3 недель.

Из всех наших проектов единственным явным кандидатом на применение является GL-XML