Лисп для мат расчетов

ramsit

Такой вопрос
занимался ли кто-нибудь математическими расчетами на лиспе?
интересует, что эффективнее: писать все функции с нуля или использовать библиотеки фортран/C++ через ffi (foreign function interface нормальных родных библиотек в состоянии stable не нашел.
Как лучше организовать распараллеливание?
Знаком ли кто-нибудь с реализацией scl - якобы заточенной для вычислений
ps. другие языки просьба не предлагать, потому что я жуткий фанат этого языка :)

sergeikozyr

ты с лора?

ramsit

Ты с лора?
О нет, упаси Боже

pilot

ffi
Более-менее нормальные треды у sbcl. В целом распараллеливание у Лиспа кривое. На common lisp не получится.
ЗЫ: Как бы он ни нравился, на Лисп лучше забить.

ramsit

Почему забить? почему не получится? :(
мы, извращенцы, не ищем легких путей! :)
кстати, можно ли поконкретнее, uffi или cffi, какую библиотеку лучше подрубать, gsl, gmp или что-то еще
хотя, по некоторым данным, правильно написанные программы, запущенные на sbcl, выполняются почти так же быстро, как c++

pilot

Ну ты разберись, ты математику считать хочешь или поизвращаться?
Если первое, то Лисп не годится.
Он не заточен под мат расчеты. Нет базовых библиотек, в мат расчетах от него пользы не вижу, тем более если пользовать FFI. В него символьные вычисления и ИИ ложатся.
Зато у Лиспа глюкавые компиляторы, маленькое community, и сам язык вырос из кучи диалектов и в нем куча мусора при отсутствии линии развития и концепции. "я тебя слепила из того что было, а потом что было то и полюбила". В общем для любителей велосипедов и извращений.
cffi vs uffi : http://www.cliki.net/UFFI — New developments will probably prefer to use CFF
Мы использовали cffi.

ramsit

согласен, в нем самом вообще нет библиотек :)
не согласен про глюкавые компиляторы, cmucl/sbcl генерят качественный код
вообще, это похоже на холиварство, я же ведь интересуюсь, как это делать, а не "надо ли это делать"
задача - оптимизация жутко большой структуры генетическим алгоритмом вместе с квази-ньютоном
что предполагает вычисления с двойной точностью и полный простор для извращений :)
например, функциональный подход позволяет использовать меморизацию функций, потому что вызовы с одинаковыми параметрами дают одинаковый результат

pilot

просто прошу поделиться опытом
Что я и делаю :grin: Потому как поучаствовал в генерации кода на несколько человеко-лет, который потом отправился в помойку.
например, функциональный подход позволяет использовать меморизацию функций, потому что вызовы с одинаковыми параметрами дают одинаковый результат

Конкретно эта одна фича не аргумент для использования Лиспа. Это — оптимизация. И при желании легко реализуется на любом другом языке.
задача - оптимизация жутко большой структуры генетическим алгоритмом вместе с квази-ньютоном
что предполагает вычисления с двойной точностью

Свое отношение к Лиспу и "математика vs извращение" я написал. Ты хочешь вместо реализации алгоритма поизвращаться. Дольше разбираться с Лиспом чем писать прогу. Дело твое.

ramsit

далеко не весь код, написанный на лиспе, отправляется на помойку
примеры всем известны
меморизация функций - фича не лиспа, а функциональных языков, но тут она делается особенно красиво при помощи лисповых замыканий
с лиспом действительно долго разбираться, но это скорее не недостаток, а
преимущество
ЗЫ. все равно спасибо за советы

yroslavasako

1) я знаю только один пример.
2) а разве lisp - это чистый функциональный язык без побочных эффектов?

ramsit

maxima, emacs, sawfish, gimp, gnumeric и др, а также вещи типа прошивки спутников и всяких космических железок, думалка гугла, наконец ;)
кстати, лисп - не функциональный, а мультипарадигменный язык, на нем можно писать чисто функциональные, императивные, объектно-ориентированные, логические программы, или же придумать свой стиль

VitMix

кстати, лисп - не функциональный, а мультипарадигменный язык, на нем можно писать чисто функциональные, императивные, объектно-ориентированные, логические программы, или же придумать свой стиль
А Ока --- многофункциональная машина. В ней можно жить, заниматься сексом, хранить картошку, ей можно подпирать забор, чтобы не упал, её можно сбрасывать с самолёта на голову агрессору, или придумать собственное применение.

pilot

или придумать собственное применение.
Еще можно гвозди забивать :)

ramsit

Ок
Все должны юзать один великий и славный язык X, а все остальное в топку
присоединяюсь к предыдущим ораторам
ЗЫ. сравнение с Окой - это слишком жестоко
вот если бы движок оки мог крутить телескоп Хаббла, тогда согласен :)

apl13

2) а разве lisp - это чистый функциональный язык без побочных эффектов?
Лисп лиспу рознь. :umnik:

apl13

Дольше разбираться с Лиспом чем писать прогу. Дело твое.
Запомни, птичка: лучше день маны читать, потом за пять минут закодить!

yroslavasako

да о чём все эти бессмысленные споры. Лисп выглядит неэстетично, скобки уродуют запись. Вот достаточные причины, чтобы от него отказаться. :)

pilot

Лисп выглядит неэстетично, скобки уродуют запись.
Бред какой :mad:

apl13

По кр. мр., меня они до сих пор отпугивают от лиспа. Несмотря на Common Music.

yroslavasako

а я уже не жалею, что решил начать изучение функциональных языков с хаскела. Он куда красивее лиспа. Дождаться бы ответа только на мой вопрос о monad comprehension

apl13

а я уже не жалею, что решил начать изучение функциональных языков с хаскела.
Я с Рефала-5, ня. ^_^

ramsit

Лисп выглядит неэстетично, скобки уродуют запись
скобка - основной знак препинания в лиспе, унифицированная скобочная запись позволяет использовать очень высокоуровневые абстракции, например, макросы
кстати, если не писать все в одну строчку, а юзать pretty printing с автоотступами, то лисповый код становится очень даже понятным, имхо
а еще, например, скобки + польская нотация не позволяют ошибиться в приоритете операций
Он куда красивее лиспа
не согласен
это не аксиома, а чье-то личное мнение, которое может не совпадать с мнением кого-то еще
и вообще, позволю себе процитировать древний рекламный ролик, не помню про что
- Не люблю кошек
- Ты просто не умеешь их готовить
по моему, в тему :)

bleyman

Спроси в http://2ch.ru/s/ , там много профессиональных лисперов, ежедневно решающих разнообразные задачи.

Gaishnik

а я уже не жалею, что решил начать изучение функциональных языков с хаскела. Он куда красивее лиспа. Дождаться бы ответа только на мой вопрос о monad comprehension
Какой вопрос?

yroslavasako

Какой вопрос?

Gaishnik

А почему мусорный слой?

ramsit

Спроси в http://2ch.ru/s/ , там много профессиональных лисперов, ежедневно решающих разнообразные задачи.
там какой-то бред, куча анонимусов... хуже чем на ЛОРе :(
это точно оно?

bleyman

Это точно оно, там _только_ анонимусы, многие из них ненавидят лисп, но тех ты не слушай, там есть и настоящие лисперы, влюблённые в лисп! Достаточно запостить пост вроде твоего начального и подбампливать его иногда до того момента, пока ли/s/перы не проснутся, и ты получишь ответы на все интересующие тебя вопросы.
По крайней мере те ли/s/перы так себя позиционируют, я не знаю, как на самом деле, но попытка не пытка же. И развлечёшься заодно =)

ramsit

ок, попробую :)

Gaishnik

Это точно оно, там _только_ анонимусы, многие из них ненавидят лисп, но тех ты не слушай, там есть и настоящие лисперы, влюблённые в лисп!
2/10

Papazyan

Бред какой :mad:
Лисп - вчерашний день, слишком много в нем какого-то доисторического говна. Лучше схему юзать.

ramsit

прошу прощения, а разве схема - не лисп?
ибо (equal 'lisp (and 'common-lisp 'scheme 'etc :)
кстати, это доисторическое говно постепенно включают в "правильные языки" лет через *дцать после появления его в лиспе
например, по слухам, в С# хотят включить лямбду

Dasar

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

ramsit

виноват, отстал от жизни :)

Helga87

например, по слухам, в С# хотят включить лямбду
Уже больше года как они в нем есть.

var names = new List<string>{ "lala", "bb" };
var upperCased = names.ConvertAll(name=>name.ToUpper;

ramsit

но сути это не меняет

ramsit

могу продолжить
условные операторы, переменные как указатели, рекурсия, сборка мусора, интерактивность, наконец сама концепция функционального программирования

pilot

Учебник прочитал?

Dasar

переменные как указатели
это что такое? и зачем?

ramsit

Учебник прочитал?
когда-то давно :)
мног разного добра прочитал
жаль на русском почти ничего нет, разве что sicp

ramsit

Это что такое? и зачем?
атом можно трактовать как указатель на динамическую переменную, это появилось задолго до появления С

Papazyan

условные операторы, переменные как указатели, рекурсия, сборка мусора, интерактивность, наконец сама концепция функционального программирования
Молодец, перечислил почти все плюсы (макросы забыл). Теперь ищи минусы.

Papazyan

прошу прощения, а разве схема - не лисп?
ибо (equal 'lisp (and 'common-lisp 'scheme 'etc :)
кстати, это доисторическое говно постепенно включают в "правильные языки" лет через *дцать после появления его в лиспе
например, по слухам, в С# хотят включить лямбду
Ну хорошо, Комон Лисп - доисторическое говно. Так понятнее?
Ну и чего, что включается? Стандарт Коммон Лиспа содержит больше 1000 страниц, а большинство хорошего, того что стоит добавить в другие языки, умещается на 80-ти страницах стандарта Схемы.

ramsit

Ну хорошо, Комон Лисп - доисторическое говно
не согласен - аргументы в студию
возраст языка не недостаток, а преимущество
стандарт cl действительно избыточен, например, наличие для каждого условного предиката типа remove-if или find-if отричающего аналого (remove-if-not хотя их все можно заменить одним оператором complement, который тоже есть в стандарте cl :)
схим проще, поэтому легче для изучения
но это его единственное преимущество перед cl
кстати, опуская лисп в лице коммон-лиспа, ты опускаешь схему не меньше

Papazyan

кстати, опуская лисп в лице коммон-лиспа, ты опускаешь схему не меньше
Под лиспом сейчас понимается именно Комон Лисп, все остальные оставшиеся диалекты имеют свои названия.

ramsit

можешь заглянуть сюда, если не был
http://community.schemewiki.org/?scheme-vs-common-lisp
сравнение диалектов
и вообще, спор о том, что лучше: схим или cl - полный бред, это очень близкие вещи

yroslavasako

виноват, отстал от жизни :)
оно даже в плюсах есть (смотри библиотеки буста)

july

Такой вопрос
занимался ли кто-нибудь математическими расчетами на лиспе?
zsh> eix sapac
[D] dev-lisp/cl-sapaclisp
Available versions: !1.0a
Installed: 1.0a[01:01:45 27.11.2008]
Homepage: http://common-lisp.net/project/sapaclisp/
Description: Common-Lisp code for the book "Spectral Analysis for Physical Applications: Multitaper and Conventional Univariate Techniques"
Для примера, можно еще нагуглить "Numerical recipes", переведенные на Lisp.
Еще есть/была surf-hippo — среда для моделирования нейронов и синапсов полностью на CL.
Можно также посмотреть на Nlisp (кажется) — ffi интерфейс к разным математическим библиотекам. Работает, вроде, только под cmucl'ом.
Писать с нуля или дергать библиотеки через cffi — дело вкуса, мне кажется.

ramsit

Спасибо за ответ по теме
очень помогло :)
В переводе, конечно, нет того, что мне надо, но все равно полезно разобрать стиль
Nlisp смотрел, не понравилось :(
нету стабильной версии, и используют gsl, которая, как оказалось, не катит для больших размерностей

july

Ну дак пиши тогда сам сразу на CL. Может, окажется, что даже будет работать с достаточной скоростью.
[Не забудь потом кодом поделиться :D интересно же]
Как завещал Грэм, можно писать на CL, а переписть на C узкие места всегда успеется :)

ramsit

Ну дак пиши тогда сам сразу на CL
в процессе :)
Не забудь потом кодом поделиться, интересно же
ок, но после НГ
сессия подкралась незаметно :)

kdv74

оно даже в плюсах есть (смотри библиотеки буста)

В С++0х тоже будет

Ivan8209

> занимался ли кто-нибудь математическими расчетами на лиспе?
Да.
> интересует, что эффективнее: писать все функции с нуля
> или использовать библиотеки фортран/C++ через ffi
У каждого своя эффективность. Конкретнее.
> нормальных родных библиотек в состоянии stable не нашел.
Зависит от потребностей.
> Как лучше организовать распараллеливание?
Зависит от потребностей.
> Знаком ли кто-нибудь с реализацией scl - якобы заточенной для вычислений
Могу узнать, если очень надо.
> ps. другие языки просьба не предлагать, потому что я жуткий фанат этого языка
Тогда тебе нечего делать на этом форуме.
---
"Тот, кто знает, знает..."
Оставить комментарий
Имя или ник:
Комментарий: