понедельник, 9 апреля 2012 г.

[prog.flame] Тут нехилый срач на тему DSL может развернуться…

на RSDN в форуме “Философия программирования”. Почти как в старые добрые времена. Запасаюсь попкорном.

К сожалению, всю малину портит главный проповедник светлого будущего исключительно в DSL-ных тонах. В его квалификации сомневаться явно не приходится, но нормально изложить свою точку зрения он так же явно не способен. Либо толкает какие-то революционные лозунги, либо:

“Я планирую это исправить”
“Ибо у меня на руках куча фактов”
“Ты несешь очевидный, для любого кто делал ДСЛ, бред”
“Это правильный вопрос. И на него довольно трудно сходу ответить. Но у меня есть мысли.”

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


Вообще, для такого рода идей лакмусовой бумажкой для меня является простой прием: я пытаюсь натянуть идею на задачу, которой в данный момент занимаюсь на работе. Последнюю неделю я занимался тем, что придумывал и реализовывал передачу информации из оперативной БД программы в историческую БД. Оперативная – это БД, которую активным образом использует компонент для своей работы. Историческая – это БД, по которой затем будет строится разнообразная статистика и отчеты.

Места для DSL я здесь не вижу. Проблема была в том, чтобы найти приемлимый алгоритм переноса. Когда он было найден, то без особых усилий был воплощен в C++ном коде. Делать какой-то помежуточный этап в виде языка с каким-то синтаксисом, его отображение в C++ный код и интеграция сгенерированного кода в существующий проект… Это все явно лишние телодвижения, ценность которых весьма сомнительна.

С другой стороны, время от времени возникают задачи, для решения которых DSL изначально напрашивается как самый лучший инструмент. Основная отличительная черта этих задач – это необходимость лаконичного описания желаемого результата в терминах предметной области. А уже из этого описания либо строятся килотонны примитивнейшего кода, либо его подхватывает какой-то интерпретатор, который руководствуется этим описанием в своей работе. Только вот задачи такие встречаются совсем не часто, по крайней мере у меня. В основном же с успехом используются языки общего назначения и уже давным-давно устоявшиеся DSL-и в виде того же SQL или регулярных выражений.

Отправить комментарий