Обновить

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

Чулан
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
Теги:Language Oriented ProgrammingLOPMPSJetBrainsActionScript
Хабы: Чулан
Рейтинг +22
Количество просмотров 344 Добавить в закладки 13
Комментарии
Комментарии 57

Похожие публикации

Software Developer (WebTeam BackEnd & Infrastructure)
от 180 000 ₽JetBrainsСанкт-Петербург
Разработчик back end (Java)
от 100 000 до 200 000 ₽EconophysicaМожно удаленно
Backend/Full Stack Python developer (Junior/Middle/Senior)
от 60 000 до 300 000 ₽Cointelegraph ConsultingСанкт-ПетербургМожно удаленно
Java Developer
от 160 000 до 190 000 ₽SCHNEIDER GROUPСанкт-Петербург
Senior Golang Engineer [IT Operations team]
от 5 000 до 6 500 $Coins.phМожно удаленно

Лучшие публикации за сутки