Подтвердить что ты не робот

Каковы основные отличия между MPS Jetbrains и Eclipse Xtext?

Я использовал Eclipse Xtext в нескольких проектах. Мне нравилась легкость определения грамматики по модели Ecore (meta) и позволяющая создавать все для вас, включая потрясающий редактор плагинов Eclipse, но мне было очень неудобно с базовым EMF со всеми проводными в статических полях.

В последнее время я встретил Jetbrains MPS (Meta Programming System). Это основано на совершенно иной философии. Хотя Xtext предназначен для создания текстовых DSL, генерирующих парсер для вас (и создания экземпляров этих EObjects), на языке MPS, который редактирует непосредственно базовую структуру модели. Пока я это понимаю.

Есть ли у кого-нибудь опыт работы с этими инструментами DSL, чтобы указать основные различия в плане работы с ними, предполагаемые варианты использования и аудиторию, сложность, кривую обучения (если честно, чтобы начать использовать Xtext, нужно много знать о EMF), генерация кода и т.д.

4b9b3361

Ответ 1

Xtext - это традиционный парсерный подход, который работает с обычными текстовыми файлами. Они могут быть отправлены по почте, сохранены и сопоставлены с любой системой управления версиями и даже изменены вне редактора, используя ваш любимый инструмент командной строки. Он тесно интегрируется в Eclipse EMF и отлично работает с целым набором инструментов, которые вы можете найти в экосистеме Eclipse. Недавно он эволюционировал (и делает это все еще) в какой-то "инструментарий разработки языка программирования", где он позволяет вам поддерживать все виды дополнительного инструментария.

MPS с другой стороны работает с проекционным редактором, который просто "выглядит" как текст во время работы в среде. Основной формат хранилища зависит от конкретного инструмента (читается: неприменимо без специальных программ) и не анализирует текстовые файлы. Это дает некоторые большие преимущества, такие как встраивание произвольных langauges (например, Regex внутри SQL внутри Java). Инструментальная цепочка позволяет генерировать в форме модели моделирование преобразований, которые, как правило, выглядят необычными в начале, но также и мощными.

Оба инструмента каким-то образом блокируют вас в их мире (MPS/Eclipse). Несмотря на то, что вы можете запускать обе в режиме безглавых, нельзя легко запустить редактор Xtext внутри другой среды. То же самое верно для MPS. Я бы сказал, что Xtext "более открыт", поскольку он работает с обычными текстовыми файлами с одной стороны и хорошо работает с установленными инструментами (EMF и Eclipse в целом) с другой стороны.

Отвечает ли это на ваш вопрос? Я постараюсь дать вам более точные ответы, если у вас есть более подробные вопросы.

Ответ 2

Основная идея MPS - использовать проекционный редактор вместо текстового. Это языковая совместимость. Например, вы можете расширить Java с помощью кортежей, а другой человек может расширить Java с помощью вызовов асинхронного метода. В текстовых инструментах (например, XText) невозможно гарантировать, что два расширения работают хорошо вместе, поскольку результирующая грамматика может быть неоднозначной. MPS делает это возможным. Вы просто добавляете язык в свой проект, например, добавляете библиотеки.

Ответ 3

По-моему, Jetbrain MPS легче узнать поначалу. Вам не нужно работать с файлами конфигурации, такими как Workflow-Files в xtext.

Основное отличие состоит в том, что в MPS вы редактируете модель напрямую, и эта модель показана вам в представлении синтаксиса/редактора. В xtext вы редактируете синтаксис, и модель генерируется/анализируется.

На мой взгляд, MPS более мощный. Вы можете объединить языки намного проще и расширить их. Большим преимуществом проекционных редакторов является то, что вы можете скрыть информацию или показать дополнительную информацию, полученную из модели. Вы также можете использовать различные представления, такие как таблицы или графики (в MPS 2.1).

Управление версиями может выполняться с помощью MPS. Theres - инструмент merge/diff, который работает на древовидной модели.