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, как к более знакомому подходу

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

ну да, про «проблемно-ориентированные языки»(domain-specific language)

bik ★★
() автор топика

Хмм, из указанных библиотек всерьез приходилось использовать только pyparsing - нареканий нет. От себя могу еще порекомендовать pymeta.

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

Посмотрел. wsdl основан на xml. И suds парсит его с помощью sax. Это не совсем то. Нужен более универсальные подход с написанием собственных парсеров

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

Не только для xml-подобных языков. Что тут непонятного? Посмотрите примеры dsl в ссылках, что приведены в теме.

bik ★★
() автор топика

pyparsing на рекурсивных правилах очень задумчивый. но по его работе замечаний нет.

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

то cl будет отличным выбором.

Не расцени как попытку начать холивор, у тебя есть любимый пример dsl, написанный на cl? Хороших рубишных видел много, сюда же можно отнести смолтолк и перл, но вот лисповские как-то не встречались (хотя особо и не искал).

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

Да, есть неточность. loop сам по себе достаточно говорлив, все эти from..downto, being the hash-key/hash-value, по-сути, то чего я и хотел.

Но это, так скажем, локальный сахар. Что я хочу увидеть, так именно dsl — мини язык для решения конкретной задачи.

Например: язык для описания конфигурации или язык для описания бизнес-правил. То есть нечто, что хомяком воспринимается достаточно адекватно и он при большом везении даже сможет пользоваться таким языком.

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

Есть база исходных кодов на питоне с использованием разных библиотек (в том числе и numpy - дайте-ка альтернативу нумпаю на лиспе). Понадобилось сделать dsl - и что теперь, для этого к зависимостям лисп добавлять?
Или вы за хлебом с авоськой на вертолете летаете?

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

eDSL уровня loop используется в огромном множестве проектов. Чуть пошаманив с таблицами чтения eDSL превращается в совершенно отдельный (внешне) DSL. С этой стороны я не вижу проблем.

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

дайте-ка альтернативу нумпаю на лиспе

Для определённости и чтобы локализовать срач перечисли требования, которым должна удовлетворять «альтернативу нумпаю на лиспе».

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

Чуть пошаманив с таблицами чтения eDSL превращается в совершенно отдельный (внешне) DSL. С этой стороны я не вижу проблем.

Это как раз понятно, что проблем никаких нет, тут к CL не подкопаешься. Если никому не нужно было делать end-user dsl, то вопросов больше не имею.

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

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

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

Возможно дело в том, что для коробочного ПО нет смысла заморачиваться на полноценный внешний dsl. Даже для проектов уровня emacs это совершенно излишне, для остального же конфигов уровня кей=вэлъю вполне достаточно. То, что тебе нужно имеет смысл делать где-нибудь глубоко в недрах сложной промышленной системы, решающей какие-либо производственные задачи. Но на cliki.net такого не публикуют.

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

Прочитал нумпай туториал. Если _это_ питонщикам представляется как возвышающее питон над другими языками наивысшее достижение, которым нужно гордиться, то питон в глубокой жопе. Извините.

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

Не ради срача, а ради получения полезной информации numpy - это numerical python, то есть библиотека которая используется для того, чтобы сделать из plain python в идеале нечто похожее на матлаб. Ее важными компонентами являются быстрые numpy arrays, и методы решения различных уравнений, врапперы к библиотеке linpack etc, то есть она существенно облегчает использование питона для numerical calculations(и часто избавляет от неэффективных реализации).

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

и напрасно, тк в своей области он набирает популярность.

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

Я ж не говорю, что нумпай это плохо и не нужен. Просто меня веселит пафос исходной заявы «а вот слабо для вашего языка сделать такую же немеряную крутотень, как нумпай».

Это всё равно, что придти в качалку и спросить, есть ли способные отжаться от пола десять раз или чисто подтянуться на турнике. А там все жмут, приседают и тянут не ниже КМС'а.

P.S. http://www.cliki.net/Mathematics

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

Вот кстати, я и не питонщик. Но для связки «быстрая разработка и численные вычисления» ничего лучше не найдено. В лиспе такого просто нет, есть несколько древних как дерьмо мамонта библиотек, еще несколько поддерживаются парой энтузиастов. И numpy - это только одна библиотека из многих.
В том-то и дело, что питон использую по необходимости. (перловый pdl на тестах показал себя тормозным, а его api менее удобным).

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

«исходной заявы» ?? клоун, иди назад в свой цирк. В исходной теме ни слова про лисп не было.

bik ★★
() автор топика

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

Ну если уж сильно хочется, то проще всего начать с Ruby. Там будет eDSL, но благодаря очень лояльному синтаксису Руби, выглядеть будет почти как DSL.

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

ничего лучше не найдено.

КЛ

В лиспе такого просто нет

И что же это за такое, каковое есть у питона и отсутствует у КЛ? Нумпаю, как выяснилось, с КЛ не тягаться.

несколько древних как дерьмо мамонта библиотек

Это сильный аргумент. Я прямо не знаю что и сказать.

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

исходной заявы" ??

я про это требование: «дайте-ка альтернативу нумпаю на лиспе».

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

Ну так поверь. В общем, спасибо всем. Выберу пока что pypeg

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

>И что же это за такое, каковое есть у питона и отсутствует у КЛ?

Армия долбаков-быдлокодеров.

;indius judical в тему

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

>В лиспе такого просто нет,

Чего чего?

«быстрая разработка и численные вычисления»


Вот это там как раз и есть. Вопрос реализации.
Например SBCL.

Love5an
()

common lisp же

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

Назови мне библиотеку для численных расчетов на common lisp. С подробной документацией, примерами, хорошо оптимизированную, с хорошей поддержкой. С наличием виндового инсталятора, и присутствием в репозиториях хотя бы дебиана. Такой просто нет. Это факт.
А про быструю разработку прочитай хотя бы в википедии - sbcl не об этом.

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

Общеметодическое замечание. Если ты не хочешь прослыть заносчивым глупцом, то не стоит с понтом знатока ставить решительный вердикт:

Такой просто нет.

После того, как начал нести феерическую чушь, показывающую, что ты вообще не в теме обсуждаемой технологии.

С наличием виндового инсталятора, и присутствием в репозиториях хотя бы дебиана.

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

Numpy это так поиграться, тем более если там для линейной алгебры исползуется linpack, который на современных архитектурах с многоуровневой памятью будет тормозить.

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

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

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

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

ты хоть посмотрел на то, что советуешь? ложь в каждом слове! gsll начали писать недавно, и пишут до сих пор. Не все из gsl еще работает. Документация там на уровне шпаргалки. Разработчик(и) уйдут, как только потеряют интерес к gsl.
И потом, вопрос вообше был не про лисп. Угодай, марш в цирк!

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

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

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

И раз уж я общаюсь со специалистом, приведите, пожалуйста, пример такого софта с кодогенерацией. Очень интересно посмотреть.

О существовании подобного софта в открытом доступе мне не известно.

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

Не знаю в тему ли, но есть FFTW http://caml.inria.fr/about/successes.en.html
FFTW

FFTW is a very fast C library for computing Discrete Fourier Transforms (DFT). It uses a powerful symbolic optimizer written in OCaml which, given an integer N, generates highly optimized C code to compute DFTs of size N. FFTW was awarded the 1999 Wilkinson prize for numerical software.

Benchmarks, performed on on a variety of platforms, show that FFTW's performance is typically superior to that of other publicly available DFT software, and is even competitive with vendor-tuned codes. In contrast to vendor-tuned codes, however, FFTW's performance is portable: the same program will perform well on most architectures without modification. Hence the name, “FFTW,” which stands for the somewhat whimsical title of “Fastest Fourier Transform in the West.”

gameover__
()

PLY и pycparser (если DSL основан на Си).

Еще я пользовался SPARK - примерно то же, что и PLY.

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

ты хоть посмотрел на то, что советуешь?

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

Ты, кстати, так и не озвучил что же тебе от численных расчётов необходимо. Я бы тогда смог подсказать тебе более конкретно.

Документация там на уровне шпаргалки.

А зачем там вообще документация? Всё что надо, есть в доке к оригинальному gsl.

Не все из gsl еще работает

И что же там такого важного не работает, что тебе вот позарез необходимо?

вопрос вообше был не про лисп.

Вопрос был про dsl, а значит про лисп.

Угодай, марш в цирк!

Никакой цырк не сравнится с местными икспертами.

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