metaclass: (Default)
[personal profile] metaclass
http://dev.by/blogs/main/kuda-uhodyat-chempiony-sportivnogo-programmirovaniya
"НТ ООО «ЛюксСофт». Инженер-программист. В последнее время занимаюсь разработкой предметно-ориентированного языка программирования для нашего продукта."

За разработку самодельных встроенных языков надо отправлять добывать уран, самодельными ломами и лопатами.

Date: 2013-05-15 01:36 pm (UTC)
From: [identity profile] bydlorus.livejournal.com
Встроенный Lua в MS Access и 1C: Бухгалтерия?

Date: 2013-05-15 02:01 pm (UTC)
From: [identity profile] avnik.livejournal.com
Кстати да, что-то встроеное и при этом отличное от луа или лиспа -- моветон.

Date: 2013-05-15 05:27 pm (UTC)
From: [identity profile] evil-invader.livejournal.com
идеально же

Date: 2013-05-15 01:36 pm (UTC)
From: [identity profile] veremeenko-alex.livejournal.com
ну нах :)? хаскеля мало?

Date: 2013-05-15 01:37 pm (UTC)
From: [identity profile] falcrum.livejournal.com
Ну, живёт же 1С как-то? :)

Date: 2013-05-15 01:42 pm (UTC)
From: [identity profile] kong-en-ge.livejournal.com
Нет жизни там -- нежить одна! (ц)

Date: 2013-05-15 01:46 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Я давно ее не программировал, с теперешней ситуацией не знаком.
Но подозреваю, что там как был ад, так и остался - метапрограммирования нет, функций высшего порядка нет, вывода типов нет :)

(no subject)

From: [identity profile] dimaby1.livejournal.com - Date: 2013-05-15 06:26 pm (UTC) - Expand

(no subject)

From: [identity profile] rashid80.livejournal.com - Date: 2013-05-22 07:07 pm (UTC) - Expand

Date: 2013-05-15 01:39 pm (UTC)
From: [identity profile] plumqqz.livejournal.com
Не понимаю, почему вы так суровы. Все равно кроме самородка никто это творчество использовать не будет; ну и пусть себе использует. Во-вторых, вы только поглядите, старичоксамородок какой! Фигура какая самобытная, интересная! Как это мы будем такими самородками бросаться? Народ не позволит нам бросаться самородками.

Date: 2013-05-15 02:15 pm (UTC)
From: [identity profile] aliaksei.livejournal.com
Потом этот "самородок" сдохнет от велосипедизма головного мозга где-нибудь на встречке и контора может закрываться?

(no subject)

From: [identity profile] plumqqz.livejournal.com - Date: 2013-05-15 02:18 pm (UTC) - Expand

Date: 2013-05-15 01:42 pm (UTC)
From: [identity profile] raydac.livejournal.com
зависит от языка, в одной крупной конторе я аж два разработал и ничего, нормально все существовало, а мож и сейчас один юзается, со второго то где то через года 1.5 переписали на перл систему

Date: 2013-05-15 02:02 pm (UTC)
From: [identity profile] avnik.livejournal.com
на перл то зачем?

(no subject)

From: [identity profile] raydac.livejournal.com - Date: 2013-05-15 02:07 pm (UTC) - Expand

Date: 2013-05-15 02:17 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
За диэсэли?
Элементарно же, есть типовые действия, и само собой получается, что дерево вызовов постепенно абстрагируется до выражения на каком-то язычке.

(сознаюсь, только что понял, что мне нужно сейчас имплементировать try/catch/finally)

Date: 2013-05-15 02:25 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Так оно есть во всех нормальных языках, и почти все они нормально интегрируются в системы.
И заодно на халяву получаем всю инфраструктуру языка.

(no subject)

From: [identity profile] blacklion.livejournal.com - Date: 2013-05-15 02:50 pm (UTC) - Expand

(no subject)

From: [identity profile] vp.livejournal.com - Date: 2013-05-15 05:24 pm (UTC) - Expand

(no subject)

From: [identity profile] blacklion.livejournal.com - Date: 2013-05-15 05:27 pm (UTC) - Expand

(no subject)

From: [identity profile] vp.livejournal.com - Date: 2013-05-15 05:36 pm (UTC) - Expand

(no subject)

From: [identity profile] blacklion.livejournal.com - Date: 2013-05-15 05:38 pm (UTC) - Expand

(no subject)

From: [identity profile] asvil - Date: 2013-05-16 06:29 am (UTC) - Expand

(no subject)

From: [identity profile] blacklion.livejournal.com - Date: 2013-05-15 05:51 pm (UTC) - Expand

(no subject)

From: [identity profile] vp.livejournal.com - Date: 2013-05-15 06:02 pm (UTC) - Expand

(no subject)

From: [identity profile] blacklion.livejournal.com - Date: 2013-05-15 05:33 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2013-05-15 05:43 pm (UTC) - Expand

(no subject)

From: [identity profile] blacklion.livejournal.com - Date: 2013-05-15 05:50 pm (UTC) - Expand

(no subject)

From: [identity profile] vp.livejournal.com - Date: 2013-05-15 05:53 pm (UTC) - Expand

(no subject)

From: [identity profile] blacklion.livejournal.com - Date: 2013-05-15 05:58 pm (UTC) - Expand

(no subject)

From: (Anonymous) - Date: 2013-05-16 08:53 am (UTC) - Expand

(no subject)

From: [identity profile] shredder-by.livejournal.com - Date: 2013-05-15 07:51 pm (UTC) - Expand

(no subject)

From: [identity profile] mikhalych - Date: 2013-05-15 08:07 pm (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2013-05-15 06:40 pm (UTC) - Expand

(no subject)

From: [identity profile] vp.livejournal.com - Date: 2013-05-15 06:46 pm (UTC) - Expand

(no subject)

From: [identity profile] naartir.livejournal.com - Date: 2013-05-15 09:02 pm (UTC) - Expand

(no subject)

From: [identity profile] ihar hrachyshka - Date: 2013-05-15 11:13 pm (UTC) - Expand

(no subject)

From: [identity profile] vp.livejournal.com - Date: 2013-05-16 11:34 am (UTC) - Expand

(no subject)

From: [identity profile] jakobz.livejournal.com - Date: 2013-05-15 05:02 pm (UTC) - Expand

Date: 2013-05-15 02:24 pm (UTC)
From: [identity profile] aquamber.livejournal.com
Что насчет остальных 13-ти спортивных программистов?

Date: 2013-05-15 02:27 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Меня пугает, что часть из них хочет из ИТ сбежать. А в целом, вроде нормально.

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2013-05-15 04:38 pm (UTC) - Expand

Date: 2013-05-15 02:26 pm (UTC)
From: [identity profile] prepor.livejournal.com
Он же в люксофте, зачем его еще куда-то гнать?

Date: 2013-05-15 02:37 pm (UTC)
From: [identity profile] familom.livejournal.com
люксофт != люкссофт, про это в статье написано.

(no subject)

From: [identity profile] prepor.livejournal.com - Date: 2013-05-15 02:44 pm (UTC) - Expand

Date: 2013-05-15 02:37 pm (UTC)
From: [identity profile] berezovsky.livejournal.com
о, это ж дейл

Date: 2013-05-15 04:20 pm (UTC)
From: [identity profile] theiced.livejournal.com
ну. человек умный, занимается хуйнёй за копейки.

(no subject)

From: [identity profile] berezovsky.livejournal.com - Date: 2013-05-15 04:29 pm (UTC) - Expand

Date: 2013-05-15 04:31 pm (UTC)
From: [identity profile] aliaksei-danchanka.myopenid.com (from livejournal.com)
Я немного поясню, раз уж мне это обсуждение показали, вдруг желание отправить меня добывать уран чуть уменьшится :)

Мы делаем, грубо говоря, средство разработки бизнес-приложений, официально это пока называется у нас "платформа разработки информационных систем". Наша платформа имеет довольно своеобразную (если сравнивать с 1C, SAP ERP и т.п.) концепцию, базис и терминологию. Для описания бизнес-логики используется в основном function-level programming. В целом, если совсем грубо, вычислительная часть выглядит так - описывается декларативно бизнес-логика, при старте сервера из этого описания строится некая внутренняя модель, которая затем оптимизирующим компилятором преобразуется в выполняемые в run-time SQL запросы.

Теперь по поводу DSL.. Описывать бизнес-логику будут пользователи системы. Да, можно было предоставить им некий библиотечный fluent interface на той же java, на которой написана сама платформа. Но у нас все-таки довольно своеобразные принципы описания логики, которые слабо отображаются на языки общего назначения, поэтому все их преимущества (например, готовые IDE) практически нивелируются. DSL нам позволил отобразить все наши концепции напрямую в более-менее лаконичные синтаксические конструкции, хорошо понимаемые при условии понимания нашей платформы. Код на языке общего назначения без этого понимания выглядел бы, на мой взгляд, такой же абракадаброй, но только еще со своими синтаксическими и логическими ограничениями.
Другая причина заключается в желании обеспечить как можно более низкий порог вхождения для потенциальных пользователей системы, а это где-то уровень 1С/ABAP-программистов и толковых бизнес-аналитиков. Обычно для них язык общего назначения - такая же непонятная хрень, как и DSL, более того, у некоторых нет даже технического образования. Сейчас у нас пишут логику на DSL четыре бизнес-аналитика, программистами они не являются.

Date: 2013-05-15 04:37 pm (UTC)
From: [identity profile] theiced.livejournal.com
беги оттуда :)

(no subject)

From: [identity profile] blackyblack.livejournal.com - Date: 2013-05-15 06:07 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2013-05-15 05:10 pm (UTC) - Expand

(no subject)

From: [identity profile] vp.livejournal.com - Date: 2013-05-15 05:29 pm (UTC) - Expand

(no subject)

From: [identity profile] raydac.livejournal.com - Date: 2013-05-15 08:15 pm (UTC) - Expand

(no subject)

From: [identity profile] justy-tylor.livejournal.com - Date: 2013-05-15 05:31 pm (UTC) - Expand

(no subject)

From: [identity profile] blacklion.livejournal.com - Date: 2013-05-15 05:35 pm (UTC) - Expand

(no subject)

From: [identity profile] justy-tylor.livejournal.com - Date: 2013-05-15 05:54 pm (UTC) - Expand

(no subject)

From: [identity profile] blacklion.livejournal.com - Date: 2013-05-15 06:00 pm (UTC) - Expand

(no subject)

From: [identity profile] justy-tylor.livejournal.com - Date: 2013-05-15 06:43 pm (UTC) - Expand

(no subject)

From: [identity profile] blacklion.livejournal.com - Date: 2013-05-15 07:33 pm (UTC) - Expand

(no subject)

From: [identity profile] justy-tylor.livejournal.com - Date: 2013-05-15 08:14 pm (UTC) - Expand

(no subject)

From: [identity profile] blacklion.livejournal.com - Date: 2013-05-15 08:20 pm (UTC) - Expand

(no subject)

From: [identity profile] justy-tylor.livejournal.com - Date: 2013-05-15 09:00 pm (UTC) - Expand

(no subject)

From: [identity profile] blacklion.livejournal.com - Date: 2013-05-15 08:25 pm (UTC) - Expand

(no subject)

From: [identity profile] justy-tylor.livejournal.com - Date: 2013-05-15 09:14 pm (UTC) - Expand

(no subject)

From: [identity profile] thesz.livejournal.com - Date: 2013-05-16 11:07 am (UTC) - Expand

(no subject)

From: [identity profile] rdia.livejournal.com - Date: 2013-05-20 03:19 pm (UTC) - Expand

(no subject)

From: [identity profile] thesz.livejournal.com - Date: 2013-05-20 03:43 pm (UTC) - Expand

(no subject)

From: [identity profile] rdia.livejournal.com - Date: 2013-05-20 04:54 pm (UTC) - Expand

(no subject)

From: [identity profile] berezovsky.livejournal.com - Date: 2013-05-15 05:44 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2013-05-15 05:48 pm (UTC) - Expand

(no subject)

From: [identity profile] berezovsky.livejournal.com - Date: 2013-05-15 05:51 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2013-05-15 05:57 pm (UTC) - Expand

(no subject)

From: [identity profile] aliaksei-danchanka.myopenid.com - Date: 2013-05-15 08:24 pm (UTC) - Expand

(no subject)

From: [identity profile] raydac.livejournal.com - Date: 2013-05-15 08:17 pm (UTC) - Expand

(no subject)

From: [identity profile] justy-tylor.livejournal.com - Date: 2013-05-15 06:00 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2013-05-15 07:44 pm (UTC) - Expand

Date: 2013-05-15 05:20 pm (UTC)
From: [identity profile] Шура Люберецкий (from livejournal.com)
Вброшу другую мысль - работа программиста заключается в разработке "самодельных языков программирования". Каждая программа сложнее Hello World содержит некоторое количество функций/классов/пофиг чего - плюс определенные правила их использования. Это вполне можно назвать "языком программирования". Если набор этих функций с классами получается достаточно универсальным - то это библиотека или "фреймворк", а отсюда уже полшага до языка программирования (по хорошему, таковым вполне можно назвать даже Qt - потому что там присутствуют некоторые расширения синтаксиса в сравнении со стандартным C++).

Date: 2013-05-15 06:01 pm (UTC)
(deleted comment)

Date: 2013-05-15 06:25 pm (UTC)
From: [identity profile] avnik.livejournal.com
Так и хочется сказать -- и вы правы, и вы.

Иногда DSL нужен, иногда нет и лучше обойтись луа или parse_transform написать. От задачи зависит

(no subject)

From: [identity profile] rdia.livejournal.com - Date: 2013-05-20 03:25 pm (UTC) - Expand

(no subject)

From: [identity profile] rdia.livejournal.com - Date: 2013-05-20 03:26 pm (UTC) - Expand

Date: 2013-05-15 07:39 pm (UTC)
From: [identity profile] lazy-flyer.livejournal.com
У меня только ОДИН вопрос: который долбоёб за это платит?

Date: 2013-05-16 04:34 am (UTC)
From: [identity profile] anonim-legion.livejournal.com
Вы живете в РФ или в РБ?

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2013-05-16 07:29 am (UTC) - Expand

(no subject)

From: [identity profile] lazy-flyer.livejournal.com - Date: 2013-05-17 04:48 am (UTC) - Expand

(no subject)

From: [identity profile] Алексей Кирковский - Date: 2013-05-17 09:11 am (UTC) - Expand

(no subject)

From: [identity profile] lazy-flyer.livejournal.com - Date: 2013-05-17 04:24 pm (UTC) - Expand

(no subject)

From: [identity profile] aliaksei-danchanka.myopenid.com - Date: 2013-05-17 04:52 pm (UTC) - Expand

(no subject)

From: [identity profile] Алексей Кирковский - Date: 2013-05-17 05:07 pm (UTC) - Expand

(no subject)

From: [identity profile] lazy-flyer.livejournal.com - Date: 2013-05-17 05:10 pm (UTC) - Expand

(no subject)

From: [identity profile] Алексей Кирковский - Date: 2013-05-17 05:26 pm (UTC) - Expand

(no subject)

From: [identity profile] lazy-flyer.livejournal.com - Date: 2013-05-17 05:32 pm (UTC) - Expand

(no subject)

From: [identity profile] Алексей Кирковский - Date: 2013-05-17 06:16 pm (UTC) - Expand

(no subject)

From: [identity profile] lazy-flyer.livejournal.com - Date: 2013-05-17 07:26 pm (UTC) - Expand

(no subject)

From: [identity profile] Алексей Кирковский - Date: 2013-05-17 07:49 pm (UTC) - Expand

(no subject)

From: [identity profile] lazy-flyer.livejournal.com - Date: 2013-05-17 08:54 pm (UTC) - Expand

(no subject)

From: [identity profile] Алексей Кирковский - Date: 2013-05-18 04:59 am (UTC) - Expand

(no subject)

From: [identity profile] ext-1829490.livejournal.com - Date: 2013-05-18 06:12 am (UTC) - Expand

Date: 2013-05-15 07:59 pm (UTC)
From: [identity profile] sbj-ss.livejournal.com
Из личного опыта: есть пара примеров.
1. Году примерно в 2002 мой будущий непосредственный начальник обнаружил, что XSLT, мягко говоря, убог, а задач по трансформации XML хватало. Результат - собственный язык программирования, грубо говоря - функциональщина, допускающая побочные эффекты функций, завёрнутая в XML-разметку и работающая в пространстве фон Неймана. Благополучно живёт по сей день, перетащен из жабовской монструозной конструкции на чистый Си (порядка 15К строк), документирован. Оказалось удобно писать на этом веб-морды, включая всякие навороченные интерактивные отчёты. Хотя и громоздко (описание ФВП займёт пол-экрана), не особо быстро (к байт-коду XPath-выборки так просто не приделаешь), но свой класс задач благополучно решает. Впрочем, заказчику мы это как DSL не навязываем, отдаём документацию на БД, хочет туда стучаться другими средствами, минуя веб-морду - пожалуйста, проблем не составит. Скорее наоборот, делалось это всё как раз для внутреннего применения - т.е. была возможность на ходу менять поведение и допиливать синтаксис по мере необходимости, а перед глазами имелся весь код, который мог сломаться при этом допиливании. Ребе [livejournal.com profile] metaclass когда-то замечал, что "придумали свой Lisp" - местами да, но на изобретение велосипеда подвигла невозможность "положить рядом" XML-разметку и лисповский синтаксис. Имхо всё-таки пример удачной разработки - но разработки локальной.
2. Для себя надо было вшить в микроконтроллер набор достаточно рутинных действий, но действий этих было задофига. Понятно, что кодить на Си "в лоб" = потонуть к чертям в этом коде. Набросал формальный синтаксис описания того, что в конечном счёте требуется, написал транслятор на Перле в сишный код - и обнаружил, что в новый синтаксис так или иначе придётся добавлять вещи, "выходящие за рамки имя=значение". Поэтому всё это благополучно похоронено, и все последующие версии использовали для кодогенерации непосредственно программу на Perl с собственным модулем для специфических действий. Другими словами, DSL оказался нафиг не нужен.
Итого: в большинстве случаев DSL таки плохая идея. Придумать принципиально новый язык программирования достаточно трудно, а изобретать велосипед ни к чему. Вдобавок при массовом применении любую ошибку, допущенную по глупости и недосмотру, придётся заботливо поддерживать в следующих версиях, выстраивая системы костылей и подпорок. Библиотечных функций на готовых языках это всё-таки касается в меньшей мере.
Я не буду категорически утверждать, что DSL не нужны, но принятие решения о нужности должно быть хорошо продуманным решением с проведёнными исследованиями "что вообще может выйти". А вот говорить с бухты-барахты "а давайте тут свой язык напишем, чтобы юзеру удобнее было", не спросив ни программистов, ни самого юзера, - это уж точно прямая дорога на урановые рудники.

Date: 2013-05-15 09:13 pm (UTC)
From: [identity profile] vit-r.livejournal.com
It depends

Если на DSL должны писать пользователи, которые знают только слова Ворд, и возможно в нём Бейсик, то я предпочту написать что-то резко обрезанное и не позволяющее делать что-то хоть на миллиметр превышающее положенное. Впрочем, иногда промежуточный DSL приходится генерить из таблиц Эескля или каких-нибудь логов.

Date: 2013-05-16 04:11 am (UTC)
From: [identity profile] theaspect.livejournal.com
Я тоже "разрабатывал". Взял готовый синтаксис plsql для javacc и немного допилил специфику.

Date: 2013-05-16 06:24 am (UTC)
From: [identity profile] theiced.livejournal.com
о, говноеды подтянулись

(no subject)

From: [identity profile] theaspect.livejournal.com - Date: 2013-05-17 04:36 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2013-05-17 02:22 pm (UTC) - Expand

(no subject)

From: [identity profile] theaspect.livejournal.com - Date: 2013-05-17 03:39 pm (UTC) - Expand

Date: 2013-05-16 04:29 am (UTC)
From: [identity profile] nivanych.livejournal.com
> самодельных встроенных языков

Я так понимаю, это _не_ EDSL?

Date: 2013-05-16 05:00 am (UTC)
From: [identity profile] olegy.livejournal.com
Сделай программу, что бы дурак смог ей пользоваться и ... только дурак захочет ею пользоваться
(с) не мой.
Я тоже как то подсадил народ на бейсикоподобный недоязык. Язык то создавался для "пользователей, которые будут сами описывать бизнес логику". Ага ага. Сами на нем и писали ругая меня (впрочем не открыто). Было написано тонны кода на нем.
И никто из пользователей не написал ни строчки кода :)

Date: 2013-05-24 09:49 am (UTC)
From: [identity profile] tarkhil.livejournal.com
Нет предела идиотизму.

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. 6th, 2025 06:44 am
Powered by Dreamwidth Studios