LINUX.ORG.RU

А как у common lisp дела с производительностью?

 


4

10

Решил покурить cl ,не ну реально красивый язык. Учить решил по книге Practical Common Lisp (может посоветуете что ещё?), а запускать код на clisp. Ну так вот какие реализации языка предпочесть? Касаемо книг хотелось бы что то типа k&r, в такой же манере, но для common lisp, ну вы поняли.

Ну и вообще что посоветуете начинающему лисперу?


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

А на практике 99% так называемых лисперов лиспом пользоваться не умеет.

А мой лисп - вообще Wolfram Mathematica. Туда и смотри, там концентрация вменяемости на порядок выше чем в лисп-тусовке.

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

Правильный код на Лиспе должен генерить оптимизированный
императивный код из высокоуровневого декларативного DSL.

Бред.

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

А мой лисп - вообще Wolfram Mathematica. Туда и смотри,

а вот это да - великолепная вещь

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

LispWorks IDE написано с использованием CAPI (это такая библиотека для создания GUI),

GUI там примитивнейшее, такое и в 80-х не тормозило, не хватало еще, чтоб на современном железе были тормоза на банальных контролах, а «тяжелое» гуи можно посмотреть, например, в XCode

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

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

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

т.е. ни для чего, ок

для тебя - да, ни для чего не подойдёт ни при каких условиях ни в какое время ни для какой задачи. Удовлетворён?

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

для тебя - да, ни для чего не подойдёт ни при каких условиях ни в какое время ни для какой задачи. Удовлетворён?

зря ты так :( я вот схему прикрутил - доволен, но у нее есть таки плюсы - удобное скриптование и «склеивание» модулей, а у CL я плюсов не вижу, выше писали про метапрограммрование, но опять же - я лучше возьму racket, больше ничего конкретного не было

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

Кстати, вышеупомянутый cl-ppcre именно это и делает.

Рассказывай. Открой код и посмотри. Макросов там мало и в основном они играют роль синтаксического сахара. Используемая техника компиляции регулярных выражений в замыкания никакого отношения к метапрограммированию не имеет.

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

я вот схему прикрутил - доволен, но у нее есть таки плюсы - удобное скриптование и «склеивание» модулей

Может дело привычки? После CL-я я сколько к схеме не подходил, не покидает ощущение, что я «как корова на льду». Опять же скорость - в среднем sbcl со своим JIT быстрее, хотя это не критично. Из плюсов у ракеты - хотя бы доделанность оффтопик-версии. Но наблюдая за «приключениями» monk-а с макросистемой ракеты ни как не могу ощутить энтузиазм в её освоении.

yyk
()

А как у common lisp дела с производительностью?

никак. Особенно плохо с gc. Впрочем, CL годен как язык для прототипов. Танчики из бумаги тоже проще клеить.

Касаемо книг хотелось бы что то типа k&r, в такой же манере, но для common lisp, ну вы поняли.

SICP уже прочитал?

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

После CL-я я сколько к схеме не подходил, не покидает ощущение, что я «как корова на льду».

А конкретнее, на уровне языка, чем схема недотягивает?

с макросистемой ракеты

У большинства реализаций, емнип, есть defmacro.

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

Ты не понял. Нет причин для торможения даже «тяжелого» гуи на лиспе. Существующий CLOS вполне справляется с этой задачей. Ведь ты это оспаривал?

Обычно гуи тормозит у людей часто совсем по другим причинам, не из-за языка, и нет тут значимых преимуществ у Си и Си++. Обычно люди косячат в сложности алгоритмов. Это касается и создателей гуишных библиотек.

Кстати, лисповский CAPI куда проворнее, чем Swing и SWT. Работает даже на слабом железе типа вторых пней.

Что касается XCode. Я знаком с Objective-C. Этот язык тоже не вершина скорости. Там часто используется динамическая диспетчеризация методов. Как видишь, даже этого достаточно, чтобы Cocoa не тормозила, поскольку, повторюсь, дело не столько в языке.

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

Ты не понял. Нет причин для торможения даже «тяжелого» гуи на лиспе. Существующий CLOS вполне справляется с этой задачей. Ведь ты это оспаривал?

я про GUI вообще не говорил, а про то, что ООП на CL в виде CLOS сильно проиграет C#, Java и C++ в скорости

Обычно гуи тормозит у людей часто совсем по другим причинам, не из-за языка, и нет тут значимых преимуществ у Си и Си++. Обычно люди косячат в сложности алгоритмов.

да, это так, потому, повторюсь, и не приводил в пример GUI

Кстати, лисповский CAPI куда проворнее, чем Swing и SWT. Работает даже на слабом железе типа вторых пней.

как я понял, по факту CAPI это такой себе «wxWidgets», только гораздо более примитивный, т.е. и не должен тормозить, а у Java GUI - таки отдельная история

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

ООП на CL в виде CLOS сильно проиграет C#, Java и C++ в скорости

А у перла, питона, пэхапэ и руби сильно выиграет. И чо?

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

А у перла, питона, пэхапэ и руби сильно выиграет. И чо?

очевидно же - если надо упираться в производительность, то CL не катит, а если не надо - с большой вероятностью лучше подойдут «перл, питон, пэхапэ и руби»

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

А конкретнее, на уровне языка, чем схема недотягивает?

Я не говорил «недотягивает». Я имел в виду - сильно другая.

У большинства реализаций, емнип, есть defmacro.

нафига тогда переходить на схему? :)

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

если не надо - с большой вероятностью лучше подойдут «перл, питон, пэхапэ и руби»

это ты про «мультидиспатч», и не только по типам? И других потребностей в скорости, кроме как «быстр как сишка» и «не страшно, что тормозит как питон без jit-а и байткода, но с GIL-ом» и быть не может? :)

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

Но наблюдая за «приключениями» monk-а с макросистемой ракеты ни как не могу ощутить энтузиазм в её освоении.

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

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

Начнём с того, что производительности лиспа хвататет везде, где хватает производительности «перл, питон, пэхапэ и руби». А это колосально широкая ниша. Это раз.

Маленькое отстование лиспа, там где оно вообще есть, совершенно не критично для почти всех остальных задач. Это два.

А про числодробилки на лиспе тебе уже рассказали.

с большой вероятностью лучше подойдут «перл, питон, пэхапэ и руби»

Очередное бездоказательное утверждение. Пэхапэ вообще нигде не следует применять. Совсем. Перл --- write-only язык, извините, но это правда. Руби --- безнадёжный тормоз. По данных шутаута сливает лиспу до _трёхсот_ раз. А питон --- в принципе тот же лисп, только убогий на обе ноги и тоже тормоз, хотя и быстрее руби.

Такие дела.

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

А питон --- в принципе тот же лисп

Эм.. а чем можно подкрепить сие утверждение?

и и тоже тормоз

Есть еще pypy, вообще-то.

И вопрос «батареек» обделен вниманием, а он очень намаловажен.

совершенно не критично для почти всех остальных задач

Консольную утилитку стоит писать на лиспе? А десктопную гуйню? А серверную вебню (если примерно в той же «ТТХ-нише» есть racket)?

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

Консольную утилитку стоит писать на лиспе?

Лучше на ecl


А десктопную гуйню?

Если в ней есть какая-то логика кроме on_buttonXcliclk. Если она сама по себе является производной от предметной области.

А серверную вебню

А почему нет. См. предыддущий пункт.

(если примерно в той же «ТТХ-нише» есть racket)?

А это вопрос религиозный.

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

Лучше на ecl

А его сами лисперы не ругают, что «много чего нет», не легко ли будет на это наткнуться?

Если в ней есть какая-то логика

Ну это понятно, хотелось бы для общего восприятия картины услышать об «обновляемости» gui-биндингов, а то ходят слухи, что с этим проблемы.

А это вопрос религиозный.

А если отбросить религию, батарейки будут примерно равны?

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

Угадай, что значат r и l в rlwrap?

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

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

А оно не ghjqltn из-за gpl-ности.

А в чем проблема сделать gpl sbcl-библиотеку? И использовать ее для repl (конечный же пользователь может смешивать как хочет), непосредсвенно в проект она не полезет.

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

а для чего он лучший выбор? не для ООП точно, там его все порвут по скорости, для работы со строками - тоже не катит (выше был пример), для быстрого и простого накидывания кода тоже плох - примеры на ruby и lua в разы меньше, так зачем он вообще нужен?

Ну вот для чего нужен БМВ? У Киа тоже 4 колеса, у ТАЗа тоже есть баранка, Тойота - самая популярная машина в мире, Опель делают в той же стране, а Хёндай соната даже делает визуальный закос под БМВ-пятёрку.

Проблема в том, что всё это гомно совокупно хуже БМВ.

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

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

Эм.. а чем можно подкрепить сие утверждение?

Назови мне основные значимые отличия питона от лиспа.

Есть еще pypy, вообще-то.

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

И вопрос «батареек» обделен вниманием,

Вперёд.

Консольную утилитку стоит писать на лиспе? А десктопную гуйню? А серверную вебню (если примерно в той же «ТТХ-нише» есть racket)?

Пишите.

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

Ну вот для чего нужен БМВ?

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

А вот такое уточнение: с каким другим (Java?) языком наибольшее пересечение ниш? (временно откладывая макросы и (e)DSL); и что выпадает из пересечения?

Проблема в том, что всё это гомно совокупно хуже БМВ.

Хачмобиль же ^_^. А еще моторы к «крыльям черным, что посмели летать»..

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

А вот такое уточнение: с каким другим (Java?) языком наибольшее пересечение ниш? (временно откладывая макросы и (e)DSL); и что выпадает из пересечения?

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

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

А питон --- в принципе тот же лисп

Эм.. а чем можно подкрепить сие утверждение?

Назови мне основные значимые отличия питона от лиспа.

Ну и подходец %). Может проще сформулировать тезис: «все динамические языки - суть недолисп».

Вперёд

А что «вперед»: в лиспокомьюнити народу не очень много.

Консольную утилитку стоит писать на лиспе? Пишите

Ну тот же paktahn - бинарь 60м => startup-cost. Или sbcl --script (при холодном запуске) был бы намного шустрее?

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

Или скажем, дополнение (ну да, не совсем голый readline хотелось бы),

Если подсунуть ему список дополняемого. Хотя между пакетами он все равно не догадается.

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

А в чем проблема сделать gpl sbcl-библиотеку?

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

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

Ну и подходец

Вай нот? Если ты не можешь описать разницу, значит различие не так уж и велико.

в лиспокомьюнити народу не очень много.

А FFI религия использовать запрещает. Обидно-то как.

Кстати, про pypy как единственный питон в системе --- это был серьёзный вопрос. Можешь ответить?

Ну тот же paktahn - бинарь 60м => startup-cost. Или sbcl --script (при холодном запуске) был бы намного шустрее?

Не уверен, что понял ваш вопрос.

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

Вай нот? Если ты не можешь описать разницу

Причем тут, собственно, я? То есть, чтобы поинтересоваться, «чем подкреплен ваш аргумент» - мне нужно разбираться в лиспе? А то, батенька, создается впечатление, что вы слабо плаваете в лиспах, а здесь просто отыгрываете роль (извиняюсь) паладина.

Кстати, про pypy как единственный питон в системе --- это был серьёзный вопрос. Можешь ответить?

Забыл ответить: вряд ли получится. Хотя может вам обидно держать несколько питонов и использовать pypy там, где можно?)

Не уверен, что понял ваш вопрос.

Очевидно же: консольной утилите негоже иметь большое время запуска (там где его можно избежать).

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

А его сами лисперы не ругают, что «много чего нет», не легко ли будет на это наткнуться?

В смысле стандарта есть все. Всмысле бибилиотек ситуация исправляется. Наткнуться разве что на поголовный инлайнинг и (safety 0) всего из коробки (лечится). Но именно для разработки консольного будет лучше.

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

Возможно. Limp не использовал из-за его убогости, а сейчас свалил на emacs.

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

Причем тут, собственно, я? То есть, чтобы поинтересоваться, «чем подкреплен ваш аргумент» - мне нужно разбираться в лиспе?

А как иначе ты сможешь понять аргументацию?

Хотя может вам обидно держать несколько питонов и использовать pypy там, где можно?)

А толку от pypy, если он не может интерпретировать нужную мне программу?

Очевидно же: консольной утилите негоже иметь большое время запуска

Вот за это я emerge и не люблю, пока оно зависимости разрулит можно успеть кофе сварить.

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

хотелось бы для общего восприятия картины услышать об «обновляемости» gui-биндингов,

C переменным успехом и безсистемно. Жизнь опредленно есть, но нет глобальности и надежности. Сам пишу на tk.

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