Здравствуйте, koodeer, Вы писали:
K>Лично я — не могу показать.
Воот.
K>1. Я не явлюясь специалистом в данной предметной области.
K>2.1. Я не являюсь специалистом в создании DSL.
А таких людей вообще — просто считанное количество. That's the problem.
K>2.2. У меня нет удобных средств написания DSL.
Причем тут средства? Я не прошу тебя написать парсер и анализатор DSL, я прошу показать, как DSL будет выглядеть.
K> Поэтому я с такой надеждой смотрю на N2, и желаю проекту успеха.
Удивительное дело — только что ты написал, что проблема то далеко не только в средствах. И N2 тебе тут ничем не поможет. Понимаешь, на практике я вижу, что даже сам факт осознания того, что для парсинга нужно грамматику описать для подавляющего большинства программистов отсутствует. Они неспособны даже формально описать существующий язык. Что уж говорить о сочинении собственной грамматики с нуля. И N2 необходимость создания этой самой грамматики отнюдь не отменяет, он упрощает только последующие шаги.
K>Пока что я пишу примерно такой же код.
Ну так покажи — какой код ты хотел бы писать.
K>Просто, мне кажется очевидным: вся сложность в переложении специфики бизнеса на программые конструкции заключается именно в том, что конструкции кода так и остаются кодом.
Идея DSL это не отменяет.
K> Ведь когда бизнесмен говорит на языке своей специфики, программер, уже реализовавший эту специфику в своём коде, всё равно будет плохо его понимать: ведь в голове надо держать и термины специфики, и сам код.
Бизнесмен все равно не сможет сказать на языке DSL. Потому что DSL абсолютно формален, и именно формализация задачи составляет основную сложность общения с ним. DSL решает в другом месте проблему — перевод формальной спецификации в понятные компу инструкции. Бизнесмен там уже не участвует.
P.S. Пример я привел, чтобы продемонстрировать две важные вещи:
1) Для сочинения DSL требуется специфичная и очень высокая квалификация. Подчеркиваю, для сочинения, а не для реализации.
2) Современные ЯОН совсем не так уж и ужасны при умелом использовании.
... << RSDN@Home 1.2.0 alpha 5 rev. 31 on Windows 7 6.1.7601.65536>>