Date: 2013-05-15 07:59 pm (UTC)
Из личного опыта: есть пара примеров.
1. Году примерно в 2002 мой будущий непосредственный начальник обнаружил, что XSLT, мягко говоря, убог, а задач по трансформации XML хватало. Результат - собственный язык программирования, грубо говоря - функциональщина, допускающая побочные эффекты функций, завёрнутая в XML-разметку и работающая в пространстве фон Неймана. Благополучно живёт по сей день, перетащен из жабовской монструозной конструкции на чистый Си (порядка 15К строк), документирован. Оказалось удобно писать на этом веб-морды, включая всякие навороченные интерактивные отчёты. Хотя и громоздко (описание ФВП займёт пол-экрана), не особо быстро (к байт-коду XPath-выборки так просто не приделаешь), но свой класс задач благополучно решает. Впрочем, заказчику мы это как DSL не навязываем, отдаём документацию на БД, хочет туда стучаться другими средствами, минуя веб-морду - пожалуйста, проблем не составит. Скорее наоборот, делалось это всё как раз для внутреннего применения - т.е. была возможность на ходу менять поведение и допиливать синтаксис по мере необходимости, а перед глазами имелся весь код, который мог сломаться при этом допиливании. Ребе [livejournal.com profile] metaclass когда-то замечал, что "придумали свой Lisp" - местами да, но на изобретение велосипеда подвигла невозможность "положить рядом" XML-разметку и лисповский синтаксис. Имхо всё-таки пример удачной разработки - но разработки локальной.
2. Для себя надо было вшить в микроконтроллер набор достаточно рутинных действий, но действий этих было задофига. Понятно, что кодить на Си "в лоб" = потонуть к чертям в этом коде. Набросал формальный синтаксис описания того, что в конечном счёте требуется, написал транслятор на Перле в сишный код - и обнаружил, что в новый синтаксис так или иначе придётся добавлять вещи, "выходящие за рамки имя=значение". Поэтому всё это благополучно похоронено, и все последующие версии использовали для кодогенерации непосредственно программу на Perl с собственным модулем для специфических действий. Другими словами, DSL оказался нафиг не нужен.
Итого: в большинстве случаев DSL таки плохая идея. Придумать принципиально новый язык программирования достаточно трудно, а изобретать велосипед ни к чему. Вдобавок при массовом применении любую ошибку, допущенную по глупости и недосмотру, придётся заботливо поддерживать в следующих версиях, выстраивая системы костылей и подпорок. Библиотечных функций на готовых языках это всё-таки касается в меньшей мере.
Я не буду категорически утверждать, что DSL не нужны, но принятие решения о нужности должно быть хорошо продуманным решением с проведёнными исследованиями "что вообще может выйти". А вот говорить с бухты-барахты "а давайте тут свой язык напишем, чтобы юзеру удобнее было", не спросив ни программистов, ни самого юзера, - это уж точно прямая дорога на урановые рудники.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 21st, 2025 06:23 pm
Powered by Dreamwidth Studios