Йа -- язычнег, дайте мне капище.
Языкоориентированное программирование (http://ailev.livejournal.com/545386.html, и более подробно http://ailev.livejournal.com/548142.html -- это я писал в январе 2008г.), продолжает формироваться:
1. Intentional Software (http://intentsoft.com/, Charles Simonyi) сделало презентацию на DSL DevCon -- http://blog.intentsoft.com/intentional_software/2009/05/dsl-devcon.html (там ссылки на видео, слайды, посты в блогах, а также куда обращаться, ежели очень хочется попробовать самому).
2. JetBrains выпускает в мае (сейчас -- готова вторая бета) Meta Programming System (http://www.jetbrains.com/mps/index.html), да еще и под под Apache лицензией даже после выхода версии 1.0 (подробности и ссылки на статьи -- http://blogs.jetbrains.com/mps/, главный разработчик -- krlz). Респект питерским разработчикам!
3. Ребята из проекта FONC (STEP, COLA, IDS -- http://www.vpri.org/html/work/ifnct.htm) этого прямо не говорят, но делают (IMHO) ровно то же самое, ежели вспомнить слова Яна Пиумарты про не то что DSL, а про mood-specific languages (http://ailev.livejournal.com/546301.html).
4. Моделирование административных бизнес-задач, начинающееся пока с 4-х DSL "из коробки" -- http://www.mod4j.org/. Это все для Java.
Это ничего, что в некоторых из этих проектов обсуждаются "микроязыки" типа "язык представления дат" (в MPS) или "язык представления языка программирования" (FONC), мне важен сам подход. Задаваемые во всех этих языкоориентированных системах принципы пригодны и для работы с моделями системы, даже если системой является организация.
Все эти идеи стары, относительно нов только инструментарий (датацентрические модели, представленные абстрактно-синтаксическими деревьями + универсальный редактор, который на это дерево ориентируется) и сам заход на одновременное использование множества разных моделей в одной среде (каковой многомодельный заход по факту отсутствует в многочисленных сегодняшних инструментах моделеориентированного программирования типа http://www.metacase.com/ и даже таких как OpenArchitectureWare (http://www.openarchitectureware.org/), проекте работы с DSL в Eclipse на базе Eclipse Model Framework (http://www.slideshare.net/schwurbel/eclipse-modeling-overview) в числе работы с моделями на Eclipse (http://www.slideshare.net/schwurbel/eclipse-modeling-overview) -- там DSL как-то все больше в единственном числе, а в качестве языков моделирования все больше UML поминается). Ключевое слово тут: mix multiple domains. Как указано в презентации по intentional DSL, для большинства нынешних "моделеориентированных систем"
-- Notations offered by the tools are unsatisfactory
-- Multi-domain is not addressed
-- Domain evolution is not addressed
-- групповое редактирование
Каждый человек -- язычнег, нет в современном мире постмодерна места моноязыкизму. Идея Единого Языка, конечно, интеллектуально привлекательна, но неконструктивна: результаты такие же, как с монотеизмом -- вон сколько их на планете, разных монотеизмов, один другого краше и истиннее.
Я полностью согласен с тезисами Martin Fowler про языковые рабочие места (language workbench, переводить "верстак" не хочу -- нынешние дети верстак смогут увидеть только на старинных фотографиях, а перевести как "капище" -- http://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%BF%D0%B8%D1%89%D0%B5 -- интересно и правильно, но слишком уж стариной отдает). Главная идея в том, чтобы отдать программисту программистово (датамодельеру -- датамоделлерово), а специалисту--специалистово. Вот определение языкового рабочего места (http://www.martinfowler.com/articles/languageWorkbench.html):
- Users can freely define new languages which are fully integrated with each other.
- The primary source of information is a persistent abstract representation.
- Language designers define a DSL in three main parts: schema, editor(s), and generator(s).
- Language users manipulate a DSL through a projectional editor.
- A language workbench can persist incomplete or contradictory information in its abstract representation.