Ад спортивных программистов?
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 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
Date: 2013-05-15 06:07 pm (UTC)no subject
Date: 2013-05-15 05:10 pm (UTC)Мое мнение, после разработки на нескольких встраиваемых языках и попытки сделать нечто подобное (работающей, но в целом - не совсем удобной) - пользователи не будут ничего описывать. Просто у них или у вас возникнет вакансия "программист на очередном встраиваемом языке", как это уже неоднократно было :)
И, в конечном итоге, я сейчас для таких целей использую eDSL (на Clojure) - чтобы не изобретать отдельный язык, инструменты для него, иметь сразу под руками все библиотеки, итд.
В теории, из этого можно было бы сделать инструмент для "не-программистов", но проще, имхо, их обучить языку :)
no subject
Date: 2013-05-15 05:29 pm (UTC)И поверьте, нет ничего проще, чем ваш пользователь по шаблону накропает на каком-нибудь питоне несколько строчек.
Второе. Ваша фраза "все их преимущества (например, готовые IDE)" - это вообще не от мира сего. Наличие IDE и ЯЗЫК - это никак не связанные вещи.
no subject
Date: 2013-05-15 08:15 pm (UTC)no subject
Date: 2013-05-15 05:31 pm (UTC)Навыки работы в предметной области это лишь часть навыков автоматизации предметной области. А в данном случае требуются навыки автоматизации. Либо специалист-предметник обучается основам программирования, либо программист обучается предметной области, в зависимости от ресурсов. Иначе у вас будет обезьяна за штурвалом.
Что же касается специфики предметки, то выгоднее сделать её в виде библиотеки/EDSL к встраиваемому языку общего назначения.
no subject
Date: 2013-05-15 05:35 pm (UTC)Если этот язык позволяет просто в себя впихнуть выразительный eDSL. Много таких?
no subject
Date: 2013-05-15 05:54 pm (UTC)no subject
Date: 2013-05-15 06:00 pm (UTC)В Lua, Python и Ruby будут болтаться ошмётки по сторонам по сути не нужные, и оставленные только что бы удовлетворить парсер языка, я уверен на 100%. Ну или язык будет встраиваться в строку типа eDSLEval("..."); :)
no subject
Date: 2013-05-15 06:43 pm (UTC)Можно разработать свой язык общего назначения, обладающий лучшей расширяемостью. Но это ад, длительные и рискованные исследования. Я тоже исследую. Но не ставлю в зависимость от этого проекты и команды.
no subject
Date: 2013-05-15 07:33 pm (UTC)no subject
Date: 2013-05-15 08:14 pm (UTC)Основная проблема с требованиями к расширяемости в том, что они сами имеют тенденцию расширяться. Была в прошлом одна история. Дизайнеры запросили возможность скриптовать игровые сценарии как последовательность перемещений и отдельных анимаций - "техник должен пройти оттуда сюда и нажать на кнопку, больше нам ничего не понадобится, точно-точно". Ребята сделали. Затем запрашивались всё новые и новые фичи, вводились паттерны реакций на события (услышал игрока, увидел игрока, сработал таймер, ...), дошло до полускриптованных битв роботов с киборгами. Когда меня перевели на руководство тем отделом, то DSL представлял собой ужасное нечто с ручными уникальными метками состояний на каждой строке. Удалось его несколько облагородить для оставшихся до конца проекта сценариев, оставив совместимость со старыми. Наиболее разумным решением было бы прямое применение Lua, благо он и так использовался в том проекте. Однако, в момент поступления задачи "техник нажимает на кнопку" некому было предугадать последствия.
no subject
Date: 2013-05-15 08:20 pm (UTC)no subject
Date: 2013-05-15 09:00 pm (UTC)no subject
Date: 2013-05-15 08:25 pm (UTC)no subject
Date: 2013-05-15 09:14 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2013-05-15 05:44 pm (UTC)no subject
Date: 2013-05-15 05:48 pm (UTC)no subject
Date: 2013-05-15 05:51 pm (UTC)no subject
Date: 2013-05-15 05:57 pm (UTC)no subject
Date: 2013-05-15 08:24 pm (UTC)Я всем хочу ответить, что не считаю DSL какой-то серебряной пулей. Но есть конкретный проект, конкретные компетенции у команды, конкретные цели и причины. В определенный момент было принято решение делать DSL. Не думаю, что кто-то способен, не зная множества деталей, оценить верное оно было или нет. Более того, на самом языке у нас ничего в самой платформе не завязано. В любой момент можно добавить другой способ написания модулей в системе, например, с помощью того же eDSL.
no subject
Date: 2013-05-15 08:17 pm (UTC)no subject
Date: 2013-05-15 06:00 pm (UTC)no subject
Date: 2013-05-15 07:44 pm (UTC)