У меня нет личного опыта работы с MPS, но об этом упоминалось в недавнем выпуске Herding Code с Маркусом Фёльтером . Вот мое понимание. MPS - это редактор проекций, который означает, что вместо анализа и редактирования текста вы редактируете напрямую структуру данных языка подчеркивания. Как упоминает Маркус, MPS позволяет вам определять свой собственный язык, но вы также можете вводить новые языковые концепции в существующие языки. Например, вы можете добавить новое ключевое слово в Java за считанные минуты. MPS стирает границы между внутренними и внешними DSL, и благодаря этому вы получаете статическую типизацию и поддержку инструментов, которых вы не получили бы при разработке DSL с помощью динамического языка, такого как Ruby.
вы можете добавить новое ключевое слово в Java за считанные минуты. MPS стирает границы между внутренними и внешними DSL, и благодаря этому вы получаете статическую типизацию и поддержку инструментов, которых вы не получили бы при разработке DSL с помощью динамического языка, такого как Ruby. вы можете добавить новое ключевое слово в Java за считанные минуты. MPS стирает границы между внутренними и внешними DSL, и благодаря этому вы получаете статическую типизацию и поддержку инструментов, которых вы не получили бы при разработке DSL с помощью динамического языка, такого как Ruby.MPS - интересный зверь и имеет очень большой потенциал. Идея просто фантастическая:
При этом, к сожалению, по крайней мере для фактических доступных версий MPS, Jetbrains не смогла предоставить вышеуказанное (по крайней мере, для меня), потому что: - он очень-очень сложный и сложный в использовании - как бы не сделали его авторы простого в использовании IntelliJ. - существует слишком много понятий и «способов», которым пользователь должен научиться, прежде чем он сможет сделать что-то полезное, и все же у человека возникает ощущение, что он попадает в темноту. - IDE не будет генерировать для вас IDE, но что-то внутри MPS тоже, только «редактор на основе ячеек» (в этой версии).
Я пробовал MPS несколько раз (потому что концепция такая замечательная и многообещающая), но, к сожалению, на данный момент я не смог сделать с ней что-то полезное. Возможно, я был слишком глуп для MPS, но в то время, когда я только разбирался в MPS, я смог предоставить полностью готовый к использованию DSL на основе Groovy.
Я все еще слежу за развитием MPS и надеюсь, что однажды я выполню то, что было изначально обещано, поскольку это такая фантастическая идея.