Ад спортивных программистов?
May. 15th, 2013 04:33 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
http://dev.by/blogs/main/kuda-uhodyat-chempiony-sportivnogo-programmirovaniya
"НТ ООО «ЛюксСофт». Инженер-программист. В последнее время занимаюсь разработкой предметно-ориентированного языка программирования для нашего продукта."
За разработку самодельных встроенных языков надо отправлять добывать уран, самодельными ломами и лопатами.
"НТ ООО «ЛюксСофт». Инженер-программист. В последнее время занимаюсь разработкой предметно-ориентированного языка программирования для нашего продукта."
За разработку самодельных встроенных языков надо отправлять добывать уран, самодельными ломами и лопатами.
no subject
Date: 2013-05-15 01:36 pm (UTC)no subject
Date: 2013-05-15 02:01 pm (UTC)no subject
Date: 2013-05-15 05:27 pm (UTC)no subject
Date: 2013-05-15 01:36 pm (UTC)no subject
Date: 2013-05-15 01:37 pm (UTC)no subject
Date: 2013-05-15 01:42 pm (UTC)no subject
Date: 2013-05-15 01:46 pm (UTC)Но подозреваю, что там как был ад, так и остался - метапрограммирования нет, функций высшего порядка нет, вывода типов нет :)
(no subject)
From:(no subject)
From:no subject
Date: 2013-05-15 01:39 pm (UTC)старичоксамородок какой! Фигура какая самобытная, интересная! Как это мы будем такими самородками бросаться? Народ не позволит нам бросаться самородками.no subject
Date: 2013-05-15 02:15 pm (UTC)(no subject)
From:no subject
Date: 2013-05-15 01:42 pm (UTC)no subject
Date: 2013-05-15 02:02 pm (UTC)(no subject)
From:no subject
Date: 2013-05-15 02:17 pm (UTC)Элементарно же, есть типовые действия, и само собой получается, что дерево вызовов постепенно абстрагируется до выражения на каком-то язычке.
(сознаюсь, только что понял, что мне нужно сейчас имплементировать try/catch/finally)
no subject
Date: 2013-05-15 02:25 pm (UTC)И заодно на халяву получаем всю инфраструктуру языка.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From: (Anonymous) - Date: 2013-05-16 08:53 am (UTC) - Expand(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2013-05-15 02:24 pm (UTC)no subject
Date: 2013-05-15 02:27 pm (UTC)(no subject)
From:no subject
Date: 2013-05-15 02:26 pm (UTC)no subject
Date: 2013-05-15 02:37 pm (UTC)(no subject)
From:no subject
Date: 2013-05-15 02:37 pm (UTC)no subject
Date: 2013-05-15 04:20 pm (UTC)(no subject)
From:no subject
Date: 2013-05-15 04:31 pm (UTC)Мы делаем, грубо говоря, средство разработки бизнес-приложений, официально это пока называется у нас "платформа разработки информационных систем". Наша платформа имеет довольно своеобразную (если сравнивать с 1C, SAP ERP и т.п.) концепцию, базис и терминологию. Для описания бизнес-логики используется в основном function-level programming. В целом, если совсем грубо, вычислительная часть выглядит так - описывается декларативно бизнес-логика, при старте сервера из этого описания строится некая внутренняя модель, которая затем оптимизирующим компилятором преобразуется в выполняемые в run-time SQL запросы.
Теперь по поводу DSL.. Описывать бизнес-логику будут пользователи системы. Да, можно было предоставить им некий библиотечный fluent interface на той же java, на которой написана сама платформа. Но у нас все-таки довольно своеобразные принципы описания логики, которые слабо отображаются на языки общего назначения, поэтому все их преимущества (например, готовые IDE) практически нивелируются. DSL нам позволил отобразить все наши концепции напрямую в более-менее лаконичные синтаксические конструкции, хорошо понимаемые при условии понимания нашей платформы. Код на языке общего назначения без этого понимания выглядел бы, на мой взгляд, такой же абракадаброй, но только еще со своими синтаксическими и логическими ограничениями.
Другая причина заключается в желании обеспечить как можно более низкий порог вхождения для потенциальных пользователей системы, а это где-то уровень 1С/ABAP-программистов и толковых бизнес-аналитиков. Обычно для них язык общего назначения - такая же непонятная хрень, как и DSL, более того, у некоторых нет даже технического образования. Сейчас у нас пишут логику на DSL четыре бизнес-аналитика, программистами они не являются.
no subject
Date: 2013-05-15 04:37 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2013-05-15 05:20 pm (UTC)no subject
Date: 2013-05-15 06:01 pm (UTC)no subject
Date: 2013-05-15 06:25 pm (UTC)Иногда DSL нужен, иногда нет и лучше обойтись луа или parse_transform написать. От задачи зависит
(no subject)
From:(no subject)
From:no subject
Date: 2013-05-15 07:39 pm (UTC)no subject
Date: 2013-05-16 04:34 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2013-05-15 07:59 pm (UTC)1. Году примерно в 2002 мой будущий непосредственный начальник обнаружил, что XSLT, мягко говоря, убог, а задач по трансформации XML хватало. Результат - собственный язык программирования, грубо говоря - функциональщина, допускающая побочные эффекты функций, завёрнутая в XML-разметку и работающая в пространстве фон Неймана. Благополучно живёт по сей день, перетащен из жабовской монструозной конструкции на чистый Си (порядка 15К строк), документирован. Оказалось удобно писать на этом веб-морды, включая всякие навороченные интерактивные отчёты. Хотя и громоздко (описание ФВП займёт пол-экрана), не особо быстро (к байт-коду XPath-выборки так просто не приделаешь), но свой класс задач благополучно решает. Впрочем, заказчику мы это как DSL не навязываем, отдаём документацию на БД, хочет туда стучаться другими средствами, минуя веб-морду - пожалуйста, проблем не составит. Скорее наоборот, делалось это всё как раз для внутреннего применения - т.е. была возможность на ходу менять поведение и допиливать синтаксис по мере необходимости, а перед глазами имелся весь код, который мог сломаться при этом допиливании. Ребе
2. Для себя надо было вшить в микроконтроллер набор достаточно рутинных действий, но действий этих было задофига. Понятно, что кодить на Си "в лоб" = потонуть к чертям в этом коде. Набросал формальный синтаксис описания того, что в конечном счёте требуется, написал транслятор на Перле в сишный код - и обнаружил, что в новый синтаксис так или иначе придётся добавлять вещи, "выходящие за рамки имя=значение". Поэтому всё это благополучно похоронено, и все последующие версии использовали для кодогенерации непосредственно программу на Perl с собственным модулем для специфических действий. Другими словами, DSL оказался нафиг не нужен.
Итого: в большинстве случаев DSL таки плохая идея. Придумать принципиально новый язык программирования достаточно трудно, а изобретать велосипед ни к чему. Вдобавок при массовом применении любую ошибку, допущенную по глупости и недосмотру, придётся заботливо поддерживать в следующих версиях, выстраивая системы костылей и подпорок. Библиотечных функций на готовых языках это всё-таки касается в меньшей мере.
Я не буду категорически утверждать, что DSL не нужны, но принятие решения о нужности должно быть хорошо продуманным решением с проведёнными исследованиями "что вообще может выйти". А вот говорить с бухты-барахты "а давайте тут свой язык напишем, чтобы юзеру удобнее было", не спросив ни программистов, ни самого юзера, - это уж точно прямая дорога на урановые рудники.
no subject
Date: 2013-05-15 09:13 pm (UTC)Если на DSL должны писать пользователи, которые знают только слова Ворд, и возможно в нём Бейсик, то я предпочту написать что-то резко обрезанное и не позволяющее делать что-то хоть на миллиметр превышающее положенное. Впрочем, иногда промежуточный DSL приходится генерить из таблиц Эескля или каких-нибудь логов.
no subject
Date: 2013-05-16 04:11 am (UTC)no subject
Date: 2013-05-16 06:24 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2013-05-16 04:29 am (UTC)Я так понимаю, это _не_ EDSL?
no subject
Date: 2013-05-16 05:00 am (UTC)(с) не мой.
Я тоже как то подсадил народ на бейсикоподобный недоязык. Язык то создавался для "пользователей, которые будут сами описывать бизнес логику". Ага ага. Сами на нем и писали ругая меня (впрочем не открыто). Было написано тонны кода на нем.
И никто из пользователей не написал ни строчки кода :)
no subject
Date: 2013-05-24 09:49 am (UTC)