JetBrains MPS

MPS
Логотип программы MPS
Разработчик JetBrains
Написана на Java
Операционная система кроссплатформенный
Языки интерфейса Английский
Последняя версия 2021.3.1 (2 мая 2022)
Репозиторий github.com/JetBrains/MPS
Лицензия Open Source
Сайт jetbrains.com/ru-ru/mps/
Логотип Викисклада Медиафайлы на Викискладе

MPS (Meta Programming System) — система метапрограммирования, разработанная JetBrains. Она реализует парадигму языково-ориентированного программирования[1], является средой разработки языков и в то же время IDE для разрабатываемых языков.

Разработка языков

[править | править код]

MPS позволяет разрабатывать новые языки программирования и языковые расширения существующих языков.

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

В MPS грамматическая двойственность решена работой непосредственно с абстрактным синтаксическим деревом, которое редактируется проекционным редактором в текстовой манере[2][3].

Встроенные языки

[править | править код]

Base Language — внутренняя реализация Java, взятой за базовый язык, на основе которого реализовано множество расширений, включенных в MPS:

  • collections — язык запросов к коллекциям
  • dates — DSL для работы с датами
  • closures — добавляет поддержку замыканий
  • regular expressions — язык описания регулярных выражений

Языки описания языков:

  • structure language — язык описания языковых концептов
  • editor language — язык описания редактирования языковых концептов
  • constraints language — язык описания связей
  • typesystem language — язык описания системы типов
  • generator language — язык описания генерации языка в другой целевой язык

Применение

[править | править код]

В октябре 2009 JetBrains был выпущен багтрекер YouTrack[4] — первый коммерческий продукт, созданный при помощи MPS.

В апреле 2010 выпущена бета-версия Realaxy ActionScript Editor[5] — первая IDE, основанная на MPS.

Примечания

[править | править код]
  1. Сергей Дмитриев. Языково-ориентированное программирование Архивная копия от 23 марта 2010 на Wayback Machine
  2. англ. Martin Fowler A Language Workbench in Action — MPS Архивная копия от 26 января 2010 на Wayback Machine  (англ.)
  3. Dr. Dobbs Jetbrains Releases MPS Language Workbench Архивная копия от 31 мая 2010 на Wayback Machine  (англ.)
  4. JetBrains Releases YouTrack 1.0 Архивная копия от 4 марта 2016 на Wayback Machine  (англ.)
  5. Realaxy ActionScript Editor Beta. Архивировано из оригинала 26 апреля 2012 года.  (англ.)