Система метапрограммирования 2.0


Была выпущена бета-версия 2.0 системы метапрограммирования с открытым исходным кодом JetBrain, и пришло время признать ее потенциал.

JetBrains медленно, но верно становится больше, чем просто поставщиком инструментов программирования и виджетов. Его недавний набег на новый язык JVM в виде Kotlin слишком молод, чтобы увидеть, как он будет работать в грубом и готовом мире языков новорожденных, но его система метапрограммирования достаточно стара и успешна, чтобы только что быть выпущенной в версии 2.0 — и она с открытым исходным кодом.

Первый вопрос заключается в том, что такое система метапрограммирования, MPS?

Бойкий ответ заключается в том, что это система программирования, ориентированная на язык. Более полезно, что он позволяет вам работать на специфичном для домена языке DSL, который вы можете изобрести по ходу работы. Суть этой идеи заключается в расширяемости языка. Вы не программируете, собирая множество маленьких команд; вы программируете, изобретая новые команды. Если вы задумаетесь на мгновение, вы должны понять, что это долгосрочная цель всех подходов к модульному программированию сверху вниз.

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

Конечно, все это просто дизайн наравне с UML, скажем, но дополнительным фактором является возможность использовать генераторы для преобразования DSL в код на выбранном вами языке. В настоящее время вы можете создавать Java, XML, HTML, JavaScript и многое другое, но MPS особенно силен на Java. 

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

Новая версия 2 не имеет обратной совместимости с версией 1.5, но она поставляется с инструментом обновления.  Новых функций слишком много, чтобы перечислять их, но основным улучшением является IDE для вашего DSL — по сути, настроенная версия MPS, которая работает только с вашим DSL. Вы также можете настроить процесс создания в соответствии с вашим языком.  Система типов также была улучшена, чтобы сделать ее более простой в использовании и более мощной. Другие новые функции, которые следует отметить, включают возможность объединения моделей, аннотаций, вы можете вставить код Java, и он будет автоматически преобразован в базовый язык и многое другое — смотрите веб-сайт MPS для получения более подробной информации.

Если вы хотите начать работу с MPS, взгляните на учебник и постарайтесь помнить о том, что вы делаете, и о его более широком потенциале, а не о простой решаемой проблеме, которая на самом деле не нуждается в таком подходе. Однако это говорит о том, что я могу думать о реальных приложениях, которые очень похожи на учебник, и да, это просто!

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

Вы можете скачать MPS с веб-сайта и, как правило, присоединиться к сообществу MPS. Это проект с открытым исходным кодом, который стоит изучить.


Добавить комментарий