LINUX.ORG.RU

[?]библиотеки для написания dsl на python


0

4

Здравствуйте, какие посоветуете библиотеки для написания dsl на python?
Просмотрев список на http://nedbatchelder.com/text/python-parsers.html выбрал 4х кандидатов:
funcparserlib (http://spb-archlinux.ru/2009/funcparserlib/Tutorial)
pyparsing (http://pyparsing.wikispaces.com/Examples)
lepl (http://www.acooke.org/lepl/)
и pyPEG (http://fdik.org/pyPEG/#sample)

Поделитесь опытом нахождения подводных камней - что лучше выбрать? Сам склоняюсь к pyPEG, как к более знакомому подходу

★★
Ответ на: комментарий от tailgunner

> Эээ... речь шла не об этом. Речь шла о «готовый numpy против 2-3минуты на обертывание функции».

а тут уже возможен парадокс php: проще уже написать самому, чем найти и разобраться в подходящем из огромной кучи «уже готового».

elipse ★★★
()
Ответ на: комментарий от tailgunner

Не суть важно как назвать, главное — цель создания не упустить. Вот SciPy это чистый биндинг.

А что не так?

Я уже не вспомню. Я с ним мало работал, после фортрана и матлаба не понравилось. В общем-то Reset по треду выше прав — для прототипирования матлаб/октава лучше, а быстрого высокоуровневого кода питон всё равно не даст. Если же цель — непременно питон, то тогда всё ок.

Vadim_Z
()
Ответ на: комментарий от Vadim_Z

Я как раз-таки смотрю сейчас, просто слишком много надо информации обработать - я не знал/не интересовался, что можно делать что-то быстродействующее не на c/fortran в этой области, а сейчас, к сожалению, нет времени на пару месяцев обложится книгами и прозревать, надо как-то немного урезать образовательную программу.

gameover__
()
Ответ на: комментарий от ugoday

Зачем обязательно чистый? Узкие или сильно платформозависимые места придётся-таки переписывать на си/фортране или генерить (для чего CL весьма подходит).

Vadim_Z
()
Ответ на: комментарий от ugoday

FFI всё ж удобнее. Есть MLTon, но никак руки не доходят попробовать.

Vadim_Z
()
Ответ на: комментарий от gameover__

Вопрос — какое быстродействие надо? Если тебе хватит 1/2 скорости си-фортрана, то бери любой быстрый высокоуровневый язык по вкусу. Если мало, то уже надо думать о более сложных вариантах, которые тут обсуждаются вовсю.

Vadim_Z
()
Ответ на: комментарий от Vadim_Z

Зачем обязательно чистый?

Затем что это проще, быстрее в написании, легче в поддержке etc. А цена, потеря производительности не так уж и велика, вполне можно заплатить.

Ну а если в каком-то конкретном случае будет выгодно переписать часть на низкоуровневом языке, это всегда можно сделать.

ugoday ★★★★★
()
Ответ на: комментарий от Vadim_Z

>> А что не так?

Я уже не вспомню. Я с ним мало работал, после фортрана и матлаба не понравилось

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

В общем-то Reset по треду выше прав — для прототипирования матлаб/октава лучше

Хм.

Reset> Для серьезных вычислений надо либо писать код на Си руками, либо, что более правильно, использовать кодогенерацию, так как на низком уровне могут использоваться разные технологии

У него, видимо, крутые задачи - многочасовый счет на кластерах или что-то такое. Естественно, использовать для этого numpy - глупо.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Так в том и пойнт — для тяжелых расчетов Си/фортран/компилируемые в натив ЯВУ (если их хватит), для прототипов — мат. пакеты, а для любителей питона — NumPy/SciPy.

Vadim_Z
()
Ответ на: комментарий от Vadim_Z

тут еще такое дело, что надо принимать во внимание, что в конце концов задачу надо на кластер будет отправлять и там могут быть административные проблемы со всякой экзотикой(будут ли?). Конкретно у меня есть код на чистом фортране, распараллеленый под openmp(код изначально написан не мной), который я усовершенствовал и собираюсь совсем переписать, тк подход, который там использовался исчерпал себя. То есть уйти от фортрана не так и просто, тк, конечно, некоторые вещи надо брать из готового кода.

gameover__
()
Ответ на: комментарий от gameover__

Быстрое создание прототипов и последующее замещение узких мест реализациями на компелиремых языках - это одна из исторических уже ниш скриптовых языков.
Далее могут быть отличия в реализации.
Допустим, Tcl не провоцирует программиста на написание глупостей подобных PyPy.
А в СL вас могут долго преследовать приведения, что можно что-то и как-то сделать лучше чем у всех и не сделать это никогда. ))

elipse ★★★
()
Ответ на: комментарий от ugoday

> Будь любезен развить мысль подробнее
Давай как-нибудь в другой раз и, особенно, не в этой теме. Я чёто вообще зря сюда влез...

den73 ★★★★★
()
Ответ на: комментарий от Vadim_Z

> Так в том и пойнт — для тяжелых расчетов Си/фортран/компилируемые в натив ЯВУ (если их хватит),

OK

для прототипов — мат. пакеты

Бгг. А numpy - это не математический пакет, да?

а для любителей питона — NumPy/SciPy.

Фанатики такие фанатики %) И кстати, ты забыл Sage.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Sage проходит как мат.пакет, а NumPy нет. Под мат. пакетом я понимаю отдельный (standalone) софт, который предоставляет свой язык, удобный для решения математических и численных задач (естественно, он может вызывать сторонние библиотеки прозрачно для пользователя).

NumPy же, как ты сам сказал, библиотека, сочетающая в себе биндинги и расширение питона для работы с многомерными массивами.

Vadim_Z
()
Ответ на: комментарий от ugoday

>> А numpy - это не математический пакет, да?

До уровня, например, R, ему объективно далеко.

Вероятно. Но это значит только одно - там, где нужны возможности R, нужно использовать R (или аналог).

tailgunner ★★★★★
()
Ответ на: комментарий от ugoday

Да, R это именно матпакет в смысле моего определения.

Vadim_Z
()
Ответ на: комментарий от Vadim_Z

> Под мат. пакетом я понимаю отдельный (standalone) софт, который предоставляет свой язык

Значит, твое понимание термина «пакет» отличается от програмистского.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Ок, я не программист. Такое употребление было характерно в (бывшем) СССР среди инженеров, расчетчиков и прикладных ученых (ну может, еще кого-то забыл).

Vadim_Z
()
Ответ на: комментарий от gameover__

> И да, мне не хватает точности/скорости кода на фортране и си, но там проблема в алгоритме.

О, какое знакомое состояние!

annoynimous ★★★★★
()
Ответ на: комментарий от elipse

Трепещите несчастные, наступает время и настало уже, когда не будет ни одной темы без упоминания КЛ!

*** заливается злодейским смехом.

ugoday ★★★★★
()
Ответ на: комментарий от Vadim_Z

> Такое употребление было характерно в (бывшем) СССР среди инженеров, расчетчиков и прикладных ученых (ну может, еще кого-то забыл).

Хм. ЕМНИП, в те времена вещи типа LINPACK вполне называли «пакетами», хотя это Фортран-библиотека, без своего языка и ни разу не standalone (вроде и в Sage нет своего языка - там Python). «Пакет» в твоем смысле - это скорее Mathematica или Maple.

tailgunner ★★★★★
()
Ответ на: комментарий от ugoday

>> отличается от програмистского.

отучаемся говорить за всю сеть.

Можешь начать с того, что отучишься говорить хотя бы за программистов.

tailgunner ★★★★★
()
Ответ на: комментарий от Vadim_Z

А стерильных программистов широкого профиля нет в природе.
Это только на лоре вам создадут такую видимость местные тролли для очередной прокачки своего ЧСВ ))

elipse ★★★
()
Ответ на: комментарий от tailgunner

LINPACK — скорее пакет подпрограмм, хотя да, просто пакетом его тоже называют иногда.

Встроенный язык Sage — всё-таки слишком сильно расширенный питон (уже можно назвать своим DSL).

Vadim_Z
()
Ответ на: комментарий от tailgunner

Договорились. Отныне только бы будешь говорить за сферических программистов в вакууме.

ugoday ★★★★★
()
Ответ на: комментарий от elipse

Это к чему? Я и не сомневался, что на Tcl есть аналог yacc.

Тут идеология несколько другая — язык Sage очень похож на питон, поэтому ему не нужен свой парсер, а лишь относительно легковесный «конвертор» в настоящий питон (по этой причине он и называется препарсером). В таком подходе ничего нового, нетривиального и питоноспецифичного нет.

Vadim_Z
()
Ответ на: комментарий от Vadim_Z

>Это к чему? Я и не сомневался, что на Tcl есть аналог yacc.

это не к этому, а существованию yacc, bison ...

язык Sage очень похож на питон


ну может и так

питоноспецифичного нет.


да ?))

elipse ★★★
()
Ответ на: комментарий от Vadim_Z

Спасибо всем за обсуждение, вопрос к тем, кто занимается решением научных задач: Если я пока остановлюсь на схеме/лиспе их хватит для решения моих задач или все же стоит пристальнее смотреть на ocaml/haskell.

gameover__
()
Ответ на: комментарий от elipse

А то. Стандартная техника изготовления DSL, похожего на host language (можно и cpp/m4/ratfor (что уж там) вспомнить). Для синтаксически расширяемых языков это не нужно.

Vadim_Z
()
Ответ на: комментарий от ugoday

Подозреваю, что имелось в виду:

http://www.linux.org.ru/jump-message.jsp?msgid=5587834&cid=5589747
http://www.linux.org.ru/jump-message.jsp?msgid=5587834&cid=5589837

и т.п.

В принципе, я думаю, что CL ему больше подойдет, хотя гигантских преимуществ у него нет. Пусть поглядит на то, что уже сделано (в т.ч. какие либы есть), приценится.

Vadim_Z
()
Ответ на: комментарий от ugoday

Ms выкорчевал его сам быстро и решительно из системы,
а в Linux сопли растянутся на десятилетия и орды покалеченных пожизненно «удобными табами».

elipse ★★★
()
Ответ на: комментарий от anonymous

За хаскеллем будущее.

Слава Роботам!

ugoday ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.