Re[9]: инструментарий для разработки DSL
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.10.13 11:55
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>Я не понимаю, почему ты сравниваешь ANTLR с каким-то препроцессором, когда его надо сравнивать с многочисленными аналогами на окамле, намного более мощными, чем LL(1).


DM>Разумно. Собственно, окамл не я советовал, я лишь твои ремарки уточнить хотел.


Ремарки и были в ответ на идею использовать ОКамл. Он конечно тоже подойдет в принципе, но не больше чем Питон, который и так есть.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: инструментарий для разработки DSL
От: Аноним  
Дата: 24.10.13 10:03
Оценка:
Здравствуйте, Anton V. Kolotaev, Вы писали:

AVK>Господа, на чем сейчас модно разрабатывать ДСЛи? Беглое ознакомление с предметом вывело на реинкарнацию Stratego: Spoofax, но есть большие сомнения в зрелости технологии. Спасибо.


Racket

Nanopass (chez scheme)
Re[3]: инструментарий для разработки DSL
От: Аноним  
Дата: 24.10.13 10:37
Оценка:
Здравствуйте, Anton V. Kolotaev, Вы писали:

AVK>F# и Немерл отпадают из-за их заточенности под винду. Похоже, остается выбирать между окамлом и скалой.


F# прекрасно себя чувствует под Mono.
Re[3]: инструментарий для разработки DSL
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 29.10.13 11:21
Оценка:
Здравствуйте, Anton V. Kolotaev, Вы писали:

AVK>Например,

AVK>
AVK>Ups(x, dt = 10, alpha = 0.15) ::= EWMA(max(0, x - Lagged(x, dt)), alpha)
AVK>Downs(x, dt = 10, alpha = 0.15) ::= EWMA(max(0, Lagged(x, dt) - x), alpha)
AVK>RSI(x, dt = 10, alpha = 0.15) ::= 100 - 100 / (1 + Ups(x,dt,alpha)/Downs(x,dt,alpha))

AVK>MACD(x, slow = 26, fast = 12) ::= EWMA(x, 2./(fast+1)) - EWMA(x, 2./(slow+1))
AVK>MACD_signal(x, slow = 26, fast = 12, timeframe = 9) ::= EWMA(MACD(x, slow, fast), 2/(timeframe+1))
AVK>MACD_histogram(x, slow = 26, fast = 12, timeframe = 9) ::= MACD(x,slow,fast) - MACD_signal(x,slow, fast, timeframe)
AVK>


AVK>Соответственно, хочется получить AST соответствующее таким определениям и по ним генерировать код на целевых языках.


У тебя простейший язык, мало чем сложнее арифметических операций.
Я бы предложил не заморачиваться с мега-инструментами, а взять нечто вроде парсер комбинаторов на джаваскрипте навроде https://npmjs.org/package/packrattle
Вообще таких либ пол-гитхаба и я свою никак не выложу туда

Когда станет ясно, какой именно будет конечный язык, вот тогда можно будет легко перейти на более мощный инструмент.
Re: инструментарий для разработки DSL
От: Danila_a Россия http://ib-soft.ru
Дата: 29.10.13 12:41
Оценка: 6 (1)
Здравствуйте, Anton V. Kolotaev, Вы писали:

AVK>Господа, на чем сейчас модно разрабатывать ДСЛи? Беглое ознакомление с предметом вывело на реинкарнацию Stratego: Spoofax, но есть большие сомнения в зрелости технологии. Спасибо.


Немного ковырял сей продукт, но в академических целях.
В принципе, технология, как наследник stratego развивается давно и документация есть, но в виде spoofax — с документацией похуже. Некоторые вещи приходиться выискивать в статьях, диссертациях, связанных с проектом (например, box-формализм для pretty-printing.
Вот тут переделка Entity language для генерации моделей и админ-классов для джанги
https://bitbucket.org/ib_soft/entity-model

Тут интерпретатор и элементы суперкомпилятора для игрушечного языка Simple Lazy Language:
https://bitbucket.org/ib_soft/stratego-sll

Сам подход к обработке AST мне понравился. И генерирование pretty-printers по грамматике тоже хорошо)
Вот еще есть Scala-библиотека, использующая такой же подход:
http://code.google.com/p/kiama/
Вроде развивается.
Re[4]: инструментарий для разработки DSL
От: Anton V. Kolotaev  
Дата: 29.10.13 13:54
Оценка:
Здравствуйте, VladD2, Вы писали:

AVK>>Например,

AVK>>
AVK>>Ups(x, dt = 10, alpha = 0.15) ::= EWMA(max(0, x - Lagged(x, dt)), alpha)
AVK>>


VD>Вообще-то это и на Питоне можно было поянуть. Синтаксис довольно простой.


Синтаксис-то простой, а вот кодогенерация будет сложной, а в питоне даже паттерн-матчинга нет.

AVK>>DSL должен работать на основных платформах: вин, мак и линуксы. Будет очень здорово, если удастся сынтегрировать получившийся язык с какой-нибудь ide.


VD>А зачем DSL работать на этих платформах? Его должны писать пользователи? Если код на ДСЛ пишут программисты, то пользователю можно отдавать скомпилированный вариант.


Имеется в виду, что транслятор из DSL в целевой язык должен работать на всех этих платформах.

AVK>>Если рассматривать выбор полноценный или встроенный DSL, то на первых порах хотелось бы по максимуму обойтись средствами, встроенными в какой-нибудь язык. Я до последнего времени обходился питоном, но его динамическая типизация, странности в объектной модели и неприспособленность к задачам трансформации древовидных структур данных заставляют меня искать что-то другое.


VD>Ну, при некотором умении приспособить можно что угодно к чему угодно. Питон довольно гибок чтобы его приспособить к трасформации кода. Собственно задача у тебя довольно понятная:

VD>1. Распознаем ДСЛ и преобразовываем его в некое подобие АСТ (это может быть и иерархия питоновских объектов созданная путем прогона встроенного ДСЛ-я (реинтрепретация кода).
VD>2. Трасформация АСТ в модель. Тут рулит ФП. mup-ов и прочей фигни в Питоне выше крыши.

Вот возможностей питона здесь как раз и не хватает.

AVK>>F# и Немерл отпадают из-за их заточенности под винду. Похоже, остается выбирать между окамлом и скалой.


VD>Вот это для тебя точно не решение. Точнее худшее решение. Траху много, толку мало. ОКамл обладает только примитивный препроцессором и ФП. Это где угодно есть. У Скалы нет даже препроцессора. Она просто не заточена на генерацию С++ и Питона.


Я сейчас начал разработку на скале -- вроде бы вполне удобно. В принципе, когда в языке есть интерполяция строк, то шаблонный движок отпадает за ненадобностью.
Зачем нужен препроцессор, если я делаю внешний DSL?

VD>Так что опиши что за задачу решают скрипты?


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

VD>Кстати, что такое "EWMA"? И в чем суть этого код? Это описание зависимостей?


EWMA — скользящее среднее. Это по большому счету описание завимостей между блоками в симуляторе. Вот здесь я пытался объяснить, как устроена архитектура симулятора.
Re[4]: инструментарий для разработки DSL
От: Anton V. Kolotaev  
Дата: 29.10.13 13:57
Оценка:
Здравствуйте, Аноним, Вы писали:

AVK>>F# и Немерл отпадают из-за их заточенности под винду. Похоже, остается выбирать между окамлом и скалой.


А>F# прекрасно себя чувствует под Mono.


Общим мнением является то, что моно -- очень сырая платформа и там часто что-нибудь ломается. Вот немерл, например, на моно вроде бы уже не поддерживается. Разве не так?
Re[5]: инструментарий для разработки DSL
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.10.13 14:15
Оценка:
Здравствуйте, Anton V. Kolotaev, Вы писали:

AVK>Синтаксис-то простой, а вот кодогенерация будет сложной, а в питоне даже паттерн-матчинга нет.


Даже? :) Я качественный ПМ для произвольного языка вообще нигде не видел. Обычно или для одного языка, или странный и кривой.

Для генерации кода можно использовать хороший шаблонный движок вроде Стрингтемплейта. А разбор вручную или МП-средствами Питона.

AVK>Я сейчас начал разработку на скале -- вроде бы вполне удобно. В принципе, когда в языке есть интерполяция строк, то шаблонный движок отпадает за ненадобностью.


Тебе виднее, но на мойз взгляд проще было бы взять готовый шаблонный движок. С теми же отступами не пришлось бы бороться.

AVK>Зачем нужен препроцессор, если я делаю внешний DSL?


Потенциально, можно просто поменять синтаксис как тебе нужно и пользоваться компилятором.

AVK>Идея в том, чтобы предоставить удобный инструмент для тех, кто исследует микроструктуру рынка: типа что будет если изменить величину тика на рынке или поддержать непосредственно на бирже еще один тип ордеров.


А ты уверен, что торгаши справятся с написанием программ? И почему тогда просто не позволить писать их на том же Питоне?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: инструментарий для разработки DSL
От: Аноним  
Дата: 31.10.13 22:58
Оценка:
Здравствуйте, Anton V. Kolotaev, Вы писали:
А>>F# прекрасно себя чувствует под Mono.

AVK>Общим мнением является то,


Не надо выдавать мнение пионеров из села Гадюкино за "общее". Mono — стабильная платформа, применяется в ентерпрайзе во все щели.

AVK> что моно -- очень сырая платформа и там часто что-нибудь ломается.


Пример хотя бы один можно привести, чтоб совместимость поломали?

AVK> Вот немерл, например, на моно вроде бы уже не поддерживается. Разве не так?


Ну и флаг им в кривые руки, да барабан на шею.
Re: инструментарий для разработки DSL
От: megapoliss Украина  
Дата: 05.12.13 11:01
Оценка:
Здравствуйте, Anton V. Kolotaev, Вы писали:

AVK>Господа, на чем сейчас модно разрабатывать ДСЛи?


В ответах не нашел упоминания про groovy, поэтому добавлю его
http://groovy.codehaus.org/Writing+Domain-Specific+Languages
dsl groovy
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.