Метапрограммирование: JetBrains MPS

Метапрограммирование: JetBrains MPS

17.05.2023

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

К ним относятся и все подходы с генерацией когда (например, T4 в .NET), и макросы, и предметно-ориентированные языки программирования (Domain Specific Languages, DSL).

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

Мы в XXI веке ожидаем, что аналитики и пользователи не должны быть программистами, поэтому исходный язык должен быть очень простым, может быть даже визуальным.

Визуальная среда метапрограммирования кажется магией, но на деле она существует много лет, и называется JetBrains MPS, где MPS — это Meta-Programming System.

Программисты недолюбливают визуальные редакторы, но только до тех пор, пока им не нужно писать визуальный редактор. Это на самом деле непросто. Так что бизнес-аналитики и редакторы сценариев продолжают описывать бизнес-процессы на языках XML и JSON.

Клуб программистов решил, что аналитикам нужна немедленная и решительная помощь!

Фёдор Ярёменко в серии воркшопов рассказал, как применять MPS на практике. На первом воркшопе он разработал визуальный редактор формул, очень похожий на тот, которым вы пользуетесь в Word или Google Docs. На выходе формулы превращаются в код на MathML.

Затем Фёдор написал визуальный редактор спецификаций, который транслирует их в схему XSD. С помощью такой схемы можно проверить корректность документа XML: все нужные теги на месте, в нужном порядке и правильно вложенные. Сама схема — тоже XML.

В наше время всё, что связано с XML, кажется устаревшим, но по какой-то причине JSON-валидаторы не так распространены, как XSD.

Короче, существуют сферы, где связка XML+XSD широко применяется. Впрочем, JetBrains MPS в случае необходимости, прекрасно генерирует и JSON.

Цикл воркшопов прошёл с 1 марта по 17 мая.

Все четыре серии доступны в плейлисте на YouTube