Является ли Antlr генератором DSL и альтернативой преднамеренному программированию? - PullRequest
4 голосов
/ 01 февраля 2009

Я поражен амбициями и креативностью усилий Чарльза Симони по созданию области преднамеренного программирования, сначала в 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 отличается от преднамеренного программирования, есть ли что-то похожее на преднамеренное программирование?

Ответы [ 3 ]

3 голосов
/ 19 февраля 2010

В ответ на часть b), три системы, которые работают в аналогичном пространстве:

Каждый из этих продуктов имеет свои сильные и слабые стороны, но все они попадают в категорию Language Workbenches . Intentional Workbench от Intentional Software, возможно, является самым амбициозным продуктом в этой категории на сегодняшний день, но он также недоступен.

MPS и xText - бесплатные продукты с открытым исходным кодом. MetaCase является наиболее зрелым и коммерческим продуктом. Все они имеют крутой кривой обучения.

2 голосов
/ 01 февраля 2009

ANTLR - это просто генератор парсера. В любом нетривиальном DSL написание синтаксического анализатора составляет менее 50% усилий, затраченных на реализацию DSL. Оценщик / механизм правил / генератор кода / расписание или что-то еще, что делает ваш DSL, вероятно, требует больше работы и не может быть сгенерировано как анализатор.

2 голосов
/ 01 февраля 2009

Я не эксперт в этом, так что угощай большим количеством соли. Однако ...

Сам ANTLR не является генератором DSL, хотя его можно использовать для создания кода, который интерпретирует DSL. Это генератор синтаксического анализатора - но генератор DSL должен будет создать то, из чего ANTLR генерирует анализатор.

...