LINUX.ORG.RU

CL быстрее прочих :)


0

3

Новый, и как всегда красивый, пример кодогенерации от swizard

http://swizard.livejournal.com/158763.html

на этот раз решение задачи http://shootout.alioth.debian.org/u32q/benchmark.php?test=fannkuchredux&lang=...

★★★★★

Последнее исправление: psv1967 (всего исправлений: 1)
Ответ на: комментарий от quasimoto

>Код SBCL - вполне реальный проект? Там вроде есть конструкции пострашнее swizad-овсик или LOL-овсих.

Нету там страшных конструкций. Код SBCL как раз вполне прямолинейный.

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

>Или вот регулярные выражения (по Томпсону) - чем не общепризнаный аналог подхода

Регулярные выражения - это в первую очередь способ компактно описать грамматику определенного языка. Компиляция в ДКА позволяет существенно эффективнее парсить текст по этой грамматике (существенно эффективнее означает линейное от длины входной строки время разбора с постоянной памятью вместо экспоненциальным от длины строки временем и линейной памятью), а swizard же, в основном, пытается избавиться от константного оверхеда.

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

>Он «no way» потому, что жутко не рационален. Он для того, что бы побить Java пишет кода больше, чем соответствующее решение на Java. Он жутко усложняет решение и заморачивается с типами.

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

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

>А `emege --search ...` или `emerge -vp ...` даёт ответ мгновенно? Dот есть же paladis - зачем-то переписывают emerge на C++.

Проблема portage не в питоне, а в текстовом представлении ebuild'ов и в том, что на каждый чих portage должен перечитывать кучу текстовых файликов и парсить их.

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

> Я опять ничего не понял. Нельзя как-нибудь проще выражаться?

А зачем? Тогда есть шанс, что поймут.

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

> вон простоял весь исторический материализм элеватор без

гвоздей... только демократы спалить осилили :)

Хм, ты вообще адекватен?

Я --- да, а вот ты ... ты... , короче полнота специалиста подобна флюсу.

Так вот ты это самый флюс и есть. :)

ман элеватор „Мастодонт“

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

> почитай книжки например :)

Нет, лучше код попишу. А ты можешь дальше неадекват на ЛОРе разводить, на большее, очевидно, ума не хватает.

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

> и хорошо бы отправить патч в SBCL

ага, архимаг один из тех кто патчи отправляет :), в его стиле был бы у нас еще и форк sbcl :)))

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

почитай книжки например :)

Нет, лучше код попишу. А ты можешь дальше неадекват на ЛОРе разводить, на большее, очевидно, ума не хватает.

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

...не желаю говорит засорять чердак, и точка!

Как же, как же. Помним, помним :)

PS А и совсем забыл: «А ты сам дурак» (С)

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

>ага, архимаг один из тех кто патчи отправляет :), в его стиле был бы у нас еще и форк sbcl :)))

К сожалению, есть и такие разработчики, которые не охотно принимают патчи.

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

> лошадь вращающая жернов... знакомая история :(

Хм. Ты вроде ничего обо мне не знаешь, чтобы делать выводы. Или это не выводы, а ассоциации?

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

Чукча, значит, не читатель. Невежество так и прёт из этой реплики.

CL без метапрограммирования ничем не лучше Питона (а что — и декомпозиция, и REPL, и батарейки и всё остальное до кучи), и Норвиг это прекрасно понял, хехе.

Вот и появилось давно чаемое на ЛОРе поколение «быдлокодеров на лиспе».

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

> CL без метапрограммирования ничем не лучше Питона

Т.е. ты совершенно ничего не знаешь о CL.

Норвиг это прекрасно понял, хехе.


Поэтому он теперь пишет на Python?

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

Больше-то сказать нечего, понимаю.

Хорошо, берем вместо Питона «объединение мейнстримных языков». Единственное, что Питону скорости не хватает, так и это и Норвиг пишет, см. ниже. Переписывание узких мест на Си успешно снимает проблему.

А Норвиг — ну прочитай http://norvig.com/python-lisp.html, что ли. Хотя бы первый абзац (выделение моё).

This is a brief introduction to Python for Lisp programmers. (Although it wasn't my intent, Python programers have told me this page has helped them learn Lisp.) Basically, Python can be seen as a dialect of Lisp with «traditional» syntax (what Lisp people call «infix» or «m-lisp» syntax). One message on comp.lang.python said «I never understood why LISP was a good idea until I started playing with python.» Python supports all of Lisp's essential features except macros, and you don't miss macros all that much because it does have eval, and operator overloading, and regular expression parsing, so some--but not all--of the use cases for macros are covered.

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

Python supports all of Lisp's essential features except macros, and you don't miss macros all that much

Лисп без макросов - это как кот без яиц. Вы кота спрашивали, как ему без яиц живётся?

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

> > лошадь вращающая жернов... знакомая история :(

Хм. Ты вроде ничего обо мне не знаешь, чтобы делать выводы. Или это не выводы, а ассоциации?

Ну про зарабатывание денех мы все имеем, я надеюсь, прочно сложившиеся ассоциации...

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

Некоторым эксплуатируемым «это» начинает нравится :) Глядя на подвиги swizard они восклицают: «А зонд?! Как без зонда то?!». Потом --- «ну без зонда то каждый сможет, ты вот с зондом попробуй!»

Вообще наблюдая результаты «профессиональных» потуг что то сделать в знакомых мне областях трудовой активности хочется плакать... нет рыдать :(

Может есть другие примеры? Ну когда «профессионально», типа за деньги (и не пришлось стоять с нагайкой при этом) пришли и «удовлетворили»?

Тот настоящий специалист, кто просто не может сделать хреново, ни за деньги, ни бесплатно. Просто не сможет.

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

> Больше-то сказать нечего, понимаю.

Сколько строк кода ты написал на CL?

А Норвиг — ну прочитай http://norvig.com/python-lisp.html, что ли.


Угу, читал ещё года 4 назад, ты в курсе сколько лет этой статье?

Python supports all of Lisp's essential features except macros


Угу, в Python есть эффективная поддержка символьных вычислений, MOP, мультиметоды, система условий, динамические переменные и т.п. Прежде чем ссылаться на авторитетное мнение человека, который простился с лисп 10 лет назад, стоит самому немного разобраться в вопросе. Что бы идиотом себя не выставлять.

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

> Лисп без макросов - это как кот без яиц. Вы кота спрашивали, как ему без яиц живётся?

+5! я своего кота принципиально не кастрирую...

А так реплики тех кого морально кастрировали за поголовную кастрацию...

"...да спорить с этими советами, ну все равно что с морковными котлетами, ну какая философия у морковных у котлет?" (С)

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

Ну так в том и пойнт — получается «хороший мейнстримный язык» типа Питона :)

Так и запишем: «Питон - Лисп без яиц».

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

> Ну про зарабатывание денех мы все имеем, я надеюсь, прочно сложившиеся ассоциации...

У меня насчет «зарабатывания денег» тонна ассоциаций - от «Понедельник начинается в субботу» до «Двадцать шесть и одна».

Некоторым эксплуатируемым «это» начинает нравится :) Глядя на подвиги swizard они восклицают: «А зонд?! Как без зонда то?!». Потом --- «ну без зонда то каждый сможет, ты вот с зондом попробуй!»

Сколько экзальтации - «подвиг» рядом с «зондом».

Тот настоящий специалист, кто просто не может сделать хреново, ни за деньги, ни бесплатно. Просто не сможет.

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

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

> Тот настоящий специалист, кто просто не может сделать хреново,

ни за деньги, ни бесплатно. Просто не сможет.


Можно ссылку на пару твоих проектов на CL, сделанных «не хреново», не важно, за деньги или нет.

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

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

> Так и запишем: «Питон - Лисп без яиц».

Очевидно же, что это не так. А макросы в CL важным, но совсем не настолько, как об это любят кричать «лиспотроли».

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

> Сколько строк кода ты написал на CL?

Честно — 0. Я только учусь. А вот ты, как мне показалось, учиться не собираешься особо. Jedem das Seine, если что.

А вот ответ в духе «а что ты сделал для хип-хопа» и определение знания языка через опыт программирования на нём весьма показательно. Продолжайте.

Угу, в Python есть эффективная поддержка символьных вычислений, MOP, мультиметоды, система условий, динамические переменные и т.п.

Некий MOP в Питоне есть, как и мультиметоды (если верить соседним тредам), динамические переменные (кстати, а зачем они в мейнстримном языке?) есть в Перле и Tcl. Условия это хорошо, но тебе возразят, что исключений в языках хватает. Символические вычисления есть, опять же, не только в Лиспе, и как раз метапрограммирование тут сильно помогает.

И самое главное — все эти несомненно важные фичи Лиспа обязаны своим существованием макрам и могут быть реализованы через них. Не надо уподобляться свинье под дубом из басни (ничего личного).

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

А что, язык (который ты, похоже, путаешь со сложившейся практикой программирования на нём) поменялся за 10 лет? Стандарт объявили устаревшим?

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

> Честно — 0. Я только учусь. А вот ты, как мне показалось,
> учиться не собираешься особо.

Я учусь на основе коде существующих проектов и на своём собственном опыте. Как учишься ты? Вот цитата из Норвига, на которого ты ссылаешься:

* Общайтесь с другими программистами; читайте программы, написанные другими. Это гораздо важнее по сравнению с любой книгой или курсом обучения.
* Программа. Лучший вид обучения — это обучение на собственном опыте. Более формально эта мысль выражена так, что “максимальный уровень производительности труда в определенной области не достигается автоматически как результат приобретения опыта, но даже очень опытные специалисты могут повысить продуктивность своего труда в результате сознательного стремления к усовершенствованию” (с. 366) и “действительно эффективное обучение невозможно без постановки вполне определенных заданий с соответствующим уровнем сложности конкретным лицам, информативной обратной связи и возможности повторения и исправления ошибок”

> И самое главное — все эти несомненно важные фичи Лиспа обязаны
> своим существованием макрам

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

> А что, язык (который ты, похоже, путаешь со сложившейся практикой
> программирования на нём) поменялся за 10 лет?

Просто посмотри код Норвига. Попробуй найти у него тот же CLOS.

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

> Тот настоящий специалист, кто сможет сделать дело с наилучшим достижимым качеством (которое может быть разным в разных обстоятельствах).

я полагаю торг здесь не уместен (С)

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

Короче «Ты знаешь Петя я зауважал науку...» (С)

Формула площади круга по ТЗ идиота заказчика не меняется [точка].

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

Ну вот граждане пиписькомеренье к чему приводит --- уже в штаны лезут держа сантиметр в дрожащих руках :)

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

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

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

«делает» и «не делает» тоже относительны :)

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

> > ага, архимаг один из тех кто патчи отправляет :), в его стиле был бы у нас еще и форк sbcl :)))

К сожалению, есть и такие разработчики, которые не охотно принимают патчи.

Да это имеет место быть.

Но я например не рискну уже здоровьем, спросить архимага: пытался ли он послать патчи разработчикам проектов которые теперь в его гите. Может там всех разногласий на уровне «сколько в \t пробелов»? :)

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

Хотя может я и не прав.

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

> Я учусь на основе коде существующих проектов и на своём собственном опыте. Как учишься ты?

Книжки и статьи это достаточно важно. Ориентироваться только на практику — значит, стать заложником текущей моды. В то же время, есть вещи, которые не устареют. Меня всегда интересовало не только «как это сделать», но и «как это устроено». А тебя нет?

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

Символы — никакого, а вот символические вычисления макросистемой сильно облегчаются. Посмотри на макросистему в R5RS, например — это ж чистый rule-based pattern-matching & term-rewriting.

Специальные переменные таки реализуются через макры, посмотри хотя бы, как делается fluid-let поверх R5RS, в которой их НЕТ. Я думаю, так же можно и с условиями сделать. Вкратце, идея проста — пишутся свои макры, которые раскрывают нужные формы в твоём коде в примитивные формы языка, по сути, свой «компилятор» в низкоуровневое подмножество CL. Самому это делать геморно, поэтому такие вещи уже сделаны в реализации CL (и даже R6RS). По крайней мере, техника такая описана даже в LOL и ничего экзотического тут нет.

Просто посмотри код Норвига. Попробуй найти у него тот же CLOS.

Так и я о чём. Меняется не язык, а практика программирования на нём. Стоит задуматься, а не есть ли это та же самая дань моде, как и повальное увлечение народа сам-понимаешь-какими-языками?

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

> Но я например не рискну уже здоровьем, спросить архимага:

пытался ли он послать патчи разработчикам проектов которые теперь

в его гите.



Я писал обо всех случаях у себя блоге. Итак, какие форки у меня есть:

* puri-unicode - форк puri, который обеспечивает корретный разбор url, кодированных на основе utf-8. Kevin Rosenber отказался принять мой патч, который основан на использовании babel. Kevin живёт в США, ему плевать на utf-8 и он не хочет добавлять лишних зависимостей.

* cl-pdf - форк оригинального cl-pdf, с наложенными патчами (например, переход на salza2 или поддержка TTF-шрифтов ), которые слали разные разработчики в рассылку, в которой уже несколько лет всё игнорируется авторами библиотеки.

* cl-docutils - сам автор сказал мне форкнуть и возможно он будет брать у меня изменения. Но пока не берёт. Но изменения нужны для работы cl-sphinx, ибо оригинальная реализация содержит изрядное количество косяков (объём то огромный).

* colorize - тут вообще патчить слать просто некому.

* archimag-lisp-overlay - форк gentoo-lisp-overlay, Стелиан практически вообще не принимает никаких патчей, на это уже многие жаловались. Даже когда ему шлёшь сообщение об ошибке и патч с исправлением (я послал штук 10 по iolib), он предпочтёт всё переписать (и породить при этом новые ошибки), а не наложить приложенный патч.

Что я делаю не так?

archimag (05.10.2010 12:54

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

>К сожалению, есть и такие разработчики, которые не охотно принимают патчи.

Не берут патч для тредов под офтопиком?

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

> Книжки и статьи это достаточно важно.

Т.е. с мнением Норвига ты не согласен? На чём основано твоё мнение? Я предпочитаю учиться у лучших, но лучшие пишут код, а не книги.

а вот символические вычисления макросистемой сильно облегчаются.


Каким образом?

Посмотри на макросистему в R5RS, например — это ж чистый rule-based

pattern-matching & term-rewriting.



Разве я что-то говорил про ским?

Специальные переменные таки реализуются через макры


В CL??

По крайней мере, техника такая описана даже в LOL

и ничего экзотического тут нет



Автор LOL просто болен. Книгу эту лучше не читать. И тем более, не стоит на неё ссылаться.

Стоит задуматься, а не есть ли это та же самая дань моде, как

и повальное увлечение народа сам-понимаешь-какими-языками?



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

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

* archimag-lisp-overlay - форк gentoo-lisp-overlay, Стелиан практически вообще не принимает никаких патчей, на это уже многие жаловались. Даже когда ему шлёшь сообщение об ошибке и патч с исправлением (я послал штук 10 по iolib), он предпочтёт всё переписать (и породить при этом новые ошибки), а не наложить приложенный патч.

А я уже в свою очередь форкал его.
Форкать в dvcs - вполне нормальное явление. Или у psv1967 трудности с пониманием, что это такое?

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

> уже несколько лет всё игнорируется авторами библиотеки

Смущает только вот этот пункт, если рассылка существует -> в ней что то принимают, почему не принимают одни патчи и отвергают другие? Значит что то не нравится авторам? Они ведь не просто антисемитизмом занимаются?

Есть же наверное отличия в патчах которые живые авторы отвергают?

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

> Или у psv1967 трудности с пониманием, что это такое?

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

только всё равно по смыслу: если ты постоянно подгоняешь свой код под основную ветку --- кооперация есть.... а если просто не понял что заставило автора отвергнуть твои попытки рефакторинга его кода (а что то мне сдается что всё свелось к этому в душе поэта), и полностью разошелся с основной веткой, то никакой кооперации нет.

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

Лучше запиши: «Лисп - это Питон с гиперфункцией яичек».

Если посмотреть на очерёдность появления языков, то как раз Питон - это язык для плохих танцоров, которым помог хороший хирург :) Которые, к тому же, комплексуют и с каждым релизом ставят себе силиконовые имплантанты всё бОльших и бОльших размеров. Может быть, женственные программисты на питоне даже нравятся тёткам (в качестве подружек), но брутального шарма настоящих, лисповых яиц это им не вернёт!

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

> только всё равно по смыслу: если ты постоянно подгоняешь свой код под основную ветку --- кооперация есть.... а если просто не понял что заставило автора отвергнуть твои попытки рефакторинга его кода (а что то мне сдается что всё свелось к этому в душе поэта), и полностью разошелся с основной веткой, то никакой кооперации нет.

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

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

> Смущает только вот этот пункт, если рассылка существует ->

в ней что то принимают


Хм, читать не умеешь? Там уже несколько лет вообще ничего не принимают.

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

> брутального шарма настоящих, лисповых яиц это им не вернёт!

«Куясе мачо» (с)

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

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

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

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

> Ну попросить знакомых от которых принимает, или которые знают тех кого знает автор... Никто не обещал что будет легко :)

А кто сказал, что он вообще принимает сторонние патчи?

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

>Не берут патч для тредов под офтопиком?

Разработчики SBCL - адекватные, и они-то патчи принимают. С ними как раз проблем нет.

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

> Хм, читать не умеешь? Там уже несколько лет вообще ничего не принимают.

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

что за беспомощность! :)

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

> Т.е. с мнением Норвига ты не согласен? На чём основано твоё мнение? Я предпочитаю учиться у лучших, но лучшие пишут код, а не книги.

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

Каким образом?

Ну rule-based computation, не?

Посмотри на макросистему в R5RS, например — это ж чистый rule-based
pattern-matching & term-rewriting.

Разве я что-то говорил про ским?

А что, аналог R5RS-макр НЕЛЬЗЯ сделать на CL?

Автор LOL просто болен. Книгу эту лучше не читать. И тем более, не стоит на неё ссылаться.

Аргументы-то будут? Да, фанбойство Хойта надо умножать на ноль, а вот рассказы о том, что «есть такая техника!» это ценно. Неужели тебе помешает знание «лишней» CL-техники?

Специальные переменные таки реализуются через макры

В CL??

Во многих R5RS и R6RS схемах — да (везде где через Дибвиговский экспандер — точно). Насчёт CL не знаю, но почему бы и нет? Я в код реализаций не смотрел, может, кто подскажет?

Лисп, на котором писал Норвинг и Грэм, умер

Язык был принят как стандарт комитетом ANSI и с тех пор не менялся. Стало быть, умерло что-то иное (перестаем путать язык и практику, всё-таки). А насчёт проверки временем — посмотрим, выдержат ли её «другие языки» и новый опыт программирования :)

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

> Вот и появилось давно чаемое на ЛОРе поколение «быдлокодеров на лиспе».

Это мне и не нравится в лиспе больше всего. Например, у штангистов такой проблемы нет.

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

> А кто сказал, что он вообще принимает сторонние патчи?

ну это, «орально» воздействуйте :) в виде умных рассуждений о улучшении с примерами подталкивающими к нужному вам развитию событий...

душа автора не камень :)

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