Я поражен амбициями и креативностью усилий Чарльза Симони по созданию области преднамеренного программирования, сначала в Microsoft, а затем в собственной компании.
Что такое преднамеренное программирование
http://en.wikipedia.org/wiki/Intentional_programming
В этом подходе к программному обеспечению
программист сначала строит набор инструментов
специфичные для данной проблемной области
(например, страхование жизни). Домен
эксперты, с помощью программиста, затем
опишите предназначенную программу
поведение в том, что вы видите, это то, что вы
Получить (WYSIWYG) -подобная манера.
автоматизированная система использует программу
описание и набор инструментов для
создать окончательную программу. последовательный
изменения делаются только на WYSIWYG
уровень.
Кажется, что такой полезный и практичный подход к программированию потенциально может обойти многие проблемы современных подходов к разработке программного обеспечения.
По сути, это, по-видимому, облегчает создание предметно-ориентированных языков непрограммистами (бизнес-аналитиками / системными аналитиками), но на этапе, гораздо более близком к реальной реализации, чем мог бы обеспечить UML. Он говорит, что в конечном итоге он будет завершен, но его еще нет (почти 15 лет спустя).
DSL используют гамму от простых 5-строчных механизмов правил до сложных приложений, таких как Ruby on Rails. Поэтому я полагаю, что задержка с выпуском его продукта связана с тем, что он имеет дело с упрощением гораздо более высокого уровня абстракции, потому что он должен по существу разрешить инкапсуляцию всех языков домена одновременно.
Итак, мой вопрос
(a) может ли Antlr быть альтернативой преднамеренному программированию - хотя, возможно, менее удобной для пользователя альтернативой, которая требует вмешательства программистов, а не позволяет бизнес-аналитикам генерировать DSL? Не могли бы вы использовать Antlr для генерации DSL, подобного Ruby on Rails (при условии, что он поддерживает Ruby в качестве выходных данных - что я думаю, что нет)? Что это может не делать? Кроме того, я не понимаю, почему его называют «анализатором языка», а не «генератором языка» - поскольку последний описывает, для чего он используется, а первый описывает, как он достигает своего конечного результата.
и
(b) если Antlr отличается от преднамеренного программирования, есть ли что-то похожее на преднамеренное программирование?