Как стать автором
Обновить

Революция сейчас. jetBRAINS выпустила Meta Programming System

Время на прочтение2 мин
Количество просмотров828
MPS вышел, господа! И странно, что по этому поводу в интернетах как-то все еще тихо. Ведь мы имеем дело с самой настоящей революцией в мире программостроения. Видимо, как в случае с переходом к OOP, переход к LOP будет медленным и болезненным.

Что за революция и что за LOP, спросите вы? Про Language Oriented Programming очень хорошо написано на английском здесь, про сам MPS здесь. А если коротко, то идея сама по себе проста — все давно знакомы с концепцией DSL (Domain-Specific Languages), ставим ее на новый уровень и получаем инструмент для создания новых, расширения существующих и с удобным кастомным IDE для разработки на этих языках.

Работая сразу с Абстрактным Синтаксическим Деревом (в которые любой текст программы все равно перегоняется при компиляции), а не с текстом, MPS позволяет создавать нетекстовые редакторы или использовать разного рода интересные контролы при редактировании текстовых программ. А главное, как часто вам хотелось бы расширить ваш любимый язык новыми конструкциями для ускорения разработки? Пришлось бы расширять грамматику языка, а что если бы кто-то другой придумал еще одно расширения и оба они бы ломали грамматику? MPS позволяет делать это изящно, но конечно сложновато, и нужно какое-то время чтобы научиться и понять что же ты толком делаешь. А взять, например, множество фреймворков и библиотек, которые по сути и являются этими DSL в узких областях. Почему бы их не переделать в расширение языка?

В общем, всем читать и качать MPS.

Каким боком тут я и почему я рад этому событию? Потому что замечательный человек, который показал мне какое-то время назад MPS, это Евгений Потапенко. И он уже долгое время пишет интересный редактор ActionScript 3 на этой системе, и раз за разом удивляет интересными скринкастами (описания спер у Ивана Дембицкого, надеюсь он не очень зол на меня за это):

Шаблоны для геттеров/сеттеров и филдов
www.potapenko.com/tmp/screencasts/templates.flv

Как делаются override method с автоматическим добавлением ключевого слова override и навигация
www.potapenko.com/tmp/screencasts/override.flv

Помощник по именованию методов/переменны/полей
www.potapenko.com/tmp/screencasts/naming.flv

Основная фича редактора — расширение языка — тут добавил ENUMS в AS
www.potapenko.com/tmp/screencasts/enums.flv

Ну редактор и что? А то, что детально изучив MPS, я прямо сейчас вижу, как в ActionScript легко добавляется AOP, как Spring-like IoC фреймворк с конфигурацией через XML файлы переделывается в простой DSL. Даже мои хелпер классы для создания видеоплееров и простых сайтов-визиток умещаются в DSL.

The future is now, господа!

Update! Из комментариев прилетела ссылка на русский текст (перевод предыдущей ссылки на английском, как я понимаю) про LOP.
http://www.rsdn.ru/article/philosophy/LOP.xml
Теги:
Хабы:
+22
Комментарии57

Публикации

Изменить настройки темы

Истории

Ближайшие события

PG Bootcamp 2024
Дата16 апреля
Время09:30 – 21:00
Место
МинскОнлайн
EvaConf 2024
Дата16 апреля
Время11:00 – 16:00
Место
МоскваОнлайн
Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн