Без заголовка
Согласен. С другой стороны, такое разнообразие взглядов порождено разными требованиями и ожиданиями к DSL. Ну и опытом использования отдельных аспектов.
Т.е. надо четче прояснить требования к DSL.
К примеру, у меня основная польза от DSL и других передовых языковых/символьных конструкций - глубокое понимание требований. После понимания, можно примерно тоже закодировать и на обычной Жабе, даже в более-менее функциональном стиле. Просто в процессе анализа с помощью передовых методов будет получено простое и эффективное представление и это окупает использования сиих тулзов даже без получения соответствующих артефактов.
С другой стороны, получить и интегрировать в промышленный процесс какие-то жизнеспособные артефакты получается слабо. Лучше всего получается нагенерить тестов/входных файлов.
А массовое использование DSL и символьных вычислений безусловно подразумевает такую интеграцию. И тут есть куча технологических трудностей (довольно мелких на мой взгляд) и куча мировоззренческих трудностей (с которыми уже сложнее).
Как-то в стать про Aspect-Oriented Prograaming я прочитал, что основная проблема внедрения этой методологии - адекватное тестирование. Действительно, если мы используем какую-то мощную идеи и генерим кучу кода небольшими усилиями, то встает вопрос - а как все это барахло протестировать? Ну т.е. часть проблемы решается на уровне мощной идеи - сама возможность высокоуровнего моделирования решает кучу проблем, но проблема конечного тестирования все равно остается.
Учитывая что тестирование занимает 60-80% всех усилий на создание ПО, то получается что в результате применения мощной идеи, проблема тестирования лишь усугублется, ибо тестирование уже занимает 95% времени. К примеру, я недавно писал быстрый покерный калькулятор и я в основном писал тесты и код, который помог бы мне убедится что я считаю то что нужно, ибо перебирая 133 млн комбинаций, легко что-то упустить из виду.
Резюмируя, DSL - это хорошо, символьные вычисления - хорошо, вопрос - как все это барахло приводить в соответствии с реальными требованиями? Имеется в виду как это делать технологически - тестирование, верификация, валидация. Т.е. практически мощной идеей является не сама DSL или там еще какая штука, а технология проверки результатов на соответствие целям заказчиков. А коротко даже так: есть технология тестирования - есть и возможность реализации мощной идеи. Наоборот - не обязательно верно.