Здравствуйте, AndrewVK, Вы писали:
K>>2.1. Я не являюсь специалистом в создании DSL.
AVK>А таких людей вообще — просто считанное количество. That's the problem.
Это вопрос образования и материалов по теме.
K>>2.2. У меня нет удобных средств написания DSL.
AVK>Причем тут средства? Я не прошу тебя написать парсер и анализатор DSL, я прошу показать, как DSL будет выглядеть.
Дык если у человека будет средство, то он сможет найти красивое решение методом проб и ошибок (как это делается без ДСЛ-ей).
K>> Поэтому я с такой надеждой смотрю на N2, и желаю проекту успеха.
AVK>Удивительное дело — только что ты написал, что проблема то далеко не только в средствах. И N2 тебе тут ничем не поможет. Понимаешь, на практике я вижу, что даже сам факт осознания того, что для парсинга нужно грамматику описать для подавляющего большинства программистов отсутствует. Они неспособны даже формально описать существующий язык. Что уж говорить о сочинении собственной грамматики с нуля.
Удивительное дело. Тут на форуме собираются вполне грамотные программисты, которые сами-то знают как правильно решать задачи, но о всех окружающих отзываются как об обезьянах. Получается по одиночки все гении, но стоит им собраться в одну компанию, как они превращаются в стадо обезьян

.
AVK>И N2 необходимость создания этой самой грамматики отнюдь не отменяет, он упрощает только последующие шаги.
Ну, да. Чуда не случится и обезьяна с гранатой не станет в одночасье десантником. Но на свете много не глупых людей которые не применяют ДСЛ-и широко только потому, что нет достаточно удобного средства и нет описания как это можно сделать.
K>>Пока что я пишу примерно такой же код.
AVK>Ну так покажи — какой код ты хотел бы писать.
Это нельзя сделать по твоему фрагменту. Из него не ясна модель. А без этого разговаривать не о чем.
K>>Просто, мне кажется очевидным: вся сложность в переложении специфики бизнеса на программые конструкции заключается именно в том, что конструкции кода так и остаются кодом.
AVK>Идея DSL это не отменяет.
Идея ДСЛ-я отменяет необходимость оперировать понятиями выходящими за пределы предметной области. А это может значительно упростить код. Кроме того идея ДСЛ-я еще дает в руки возможность генерировать код, а это позволяет использовать техники программирования неприемлемые при ручном кодировании.
AVK>Бизнесмен все равно не сможет сказать на языке DSL. Потому что DSL абсолютно формален, и именно формализация задачи составляет основную сложность общения с ним. DSL решает в другом месте проблему — перевод формальной спецификации в понятные компу инструкции. Бизнесмен там уже не участвует.
Тоже не совсем так. ДСЛ могут быть простыми. Такие ДСЛ-и можно давать и конечным пользователям. Не всем, но все же.
Простой пример. Многие пользователи спокойно правят конфигурационные файлы приложений. А ведь это и есть ДСЛ-и!
AVK>P.S. Пример я привел, чтобы продемонстрировать две важные вещи:
AVK>1) Для сочинения DSL требуется специфичная и очень высокая квалификация. Подчеркиваю, для сочинения, а не для реализации.
Это миф. Квалификация нужна для придумывания модели которая может описать задачу. А натянуть на нее ДСЛ уже довольно просто.
Модель же ты все равно будешь обязан создать, если задача мало-мальски большая. Так что тебе все равно делать эту работу.
AVK>2) Современные ЯОН совсем не так уж и ужасны при умелом использовании.
Совсем ужасны. Единственное, что — можно делать внутренние ДСЛ-и (средствами языка) которые немного уменьшают этот ужас. Но внешние всегда будут лучше.