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)

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

> У меня на компе ничего написанного на жабе, а уж тем более на пыхпыхе нет.

зато ты прямо сейчас пользуешься кодом на Java - сюрприз

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

да-да, фанаты CL без устали постоянно повторяют, что код на CL читабелен - это все знают

Тайные знания для непосвящённого оттого и зовутся тайными, что он не в теме.

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

> Вкусовщина --- не аргумент.

да-да, фанаты CL без устали постоянно повторяют, что код на CL читабелен - это все знают

прежде всего они говорят что он (код) --- «генерабелен»

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

> вы полагаете это принесет треду успех?

Лиспосрач почти всегда обречен на успех. Но эффектный заголовок может довести этот успех до эпических размеров.

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

>> фанаты CL без устали постоянно повторяют, что код на CL читабелен - это все знают

прежде всего они говорят что он (код) --- «генерабелен»

Глупости. «Генерабелен» код на практически любом языке. Ъ-лиспотролли говорят, что лисп-код «парсабелен» и из этого проистекает великое благо метапрограммирования.

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

ну подстановки эффективные подразумевают эффективную генерацию, или ?

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

> «Генерабелен» код на практически любом языке.

Да, но на лиспе сгенерированный код ещё и делает что-то полезное.

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

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

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

кстате явно упало знамя адептов «С/C++» в решении именно этой задачи, не возьметесь? :)

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

> на лиспе сгенерированный код ещё и делает что-то полезное.

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

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

> Единственный полезный кодогенератор, которым я пользуюсь,

генерирует код на Си.


Кодогенерация вообще редко бывает полезно и кажется только swizard занимается этим постоянно. А у CL множество других достоинств.

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

«Генерабелен» код на практически любом языке.

Да, но на лиспе сгенерированный код ещё и делает что-то полезное.

Это безусловно доказывает ...

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

В общем, непонятно к чему это ты

Ты просто не стараешься.

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

держать крепче дрефко, хм... флага :)

условия задачи в теме указаны. Написать своё решение на «C/C++» и низвергнуть бесполезный CL. Мелочь если задуматься.

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

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

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

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

Я решительно настаиваю, что выражение «С/С++» столь же бессмысленно, как и «asm/SQL», «Java/awk», «Prolog/HTML» и пр. Более того, миф о единсвте православного С и безблагодатного С++ является политически вредным. Предлагаю не заниматься пропагандой контрреволюционных идей.

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

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

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

Внимание, вопрос!

>CL выбирают не по причинам быстродействия.

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

Так за что же выбирают CL? За eval чтоли?

linuxfan
()
Ответ на: Внимание, вопрос! от linuxfan

> современного стандарта, описывающего взаимодействие с ОС

Это ты о чём сейчас?

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

макросы (вернее определённый ими dsl) == библиотека функций

... а так: да, (ява|ооп)-галеры с неграми (индустрии программного обеспечения) не выйдет :)

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

psv1967 ★★★★★
() автор топика
Ответ на: Внимание, вопрос! от linuxfan

> и уж точно не по причине наличия работающих библиотек

Хочешь сказать, что их нет?

не по причине существования современного стандарта,

описывающего взаимодействие с ОС



Можно привести список языков, имеющих современный станадрт, описывающий взаимодействие с ОС?

Зато есть тонные кривых полурабочих библиотек, которые вроде

чего-то могут.



Хочешь сказать, что для других языков нет тонн кривых полурабочих библиотек?

Что за бред вообще...

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

>Супер-пупер оптимизированный код пишут на ассемблере методом тыка

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

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

> Хочешь сказать, что для других языков нет тонн кривых полурабочих библиотек?

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

// зам. К.О.

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

> макросы (вернее определённый ими dsl) == библиотека функций

Извини, не понял. И какое отношение макросы имеют к dsl?

хотя, ну будут люди на dsl свои задачки решать...

ничего плохого не вижу.



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

archimag ★★★
()
Ответ на: Внимание, вопрос! от linuxfan

> Так за что же выбирают CL? За eval чтоли?

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

вот например Ross Ihaka создатель R http://www.stat.auckland.ac.nz/~ihaka/downloads/Compstat-2008.pdf

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

>Хочешь сказать, что их нет?

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

Можно привести список языков, имеющих современный станадрт, описывающий взаимодействие с ОС?

Ага. C. А стандарт называется «POSIX». Может слышал о таком?

Хочешь сказать, что для других языков нет тонн кривых полурабочих библиотек?

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

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

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

Только решение при этом получилось самым длинным и запутанным... что сразу убивает саму идею.

Правильно - нужно чтобы решение было простым и понятным но при этом чудесным образом превращалось компилятором в реактивную лапшу :)

Т.е. дело не в том что язык X «быстрее всех», а что реализация компилятора X больно умна.

На самом деле вот цитата с шутаута:

Which programming languages are fastest?

No. Which programming language implementations have the fastest benchmark programs?

З.Ы. хотя у swizard-a, как всегда, оригинальный подход к решению задач :)

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

Разговор с лиспофобом подобен разговору жопы с унитазом. Лишь шум и смрад и никакого толку. (c (почти)) бугмакер

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

>это можно только понять пройдя весь путь развития сложной системы. когда остается собственоручно сваяный кривой лисп движок и корявый унаследованный dsl для него :)

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

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

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

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

а объяснения... есть куча способов как объединить их с кодом.

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

Справедливости ради, на выходе у него простой и ясный интерфейс. А вот как он в исполняемый код превращается --- это действительно сильное колдунство.

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

> Разговор с лиспофобом подобен разговору жопы с унитазом

у вас очень богатый духовный мир

(c (почти)) бугмакер


надо будет ему сегодня расказать, что его на цитаты разбирают - будет повод посмеяться

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

Думаю что Ross Ihaka, смотрит на тебя как ... :)

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

> но помню точно, что в итоге тот человек сказал мне

Напоминаю, тем человеком был я.

Ага. C. А стандарт называется «POSIX». Может слышал о таком?


Тебе ещё в прошлый раз популярно объясняли, что POSIX это стандарт не на язык.

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

поддерживаемая, прямая и рабочая библиотека.



Угу, именно тогда, когда обсуждали xmpp, тогда же и приводили пример того, что для C++ нет ни одной приличной библиотеки для взаимодействия с дочерними процессами через стандартные потоки ввода/вывода.

Извини, я просто в шоке от твоей некомпетентности и способности всё забывать.

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

> И какое отношение макросы имеют к dsl?

один из способов реализовать оператор вводимого dsl? я что то пропустил?

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

> тогда же и приводили пример того, что для C++ нет ни одной приличной библиотеки для взаимодействия с дочерними процессами через стандартные потоки ввода/вывода.

ACE не подойдет?

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

нет это я в шоке от вас обоих ...

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

> Написать своё решение на «C/C++»

Мне давно неинтересны олимпиадные задачи. Кроме того (насколько я могу судить) решение swizard - просто интересный трюк, демонстрирующий старую идею о том, что надо оптимизировать алгоритмы, а не их реализации.

и низвергнуть бесполезный CL

Ненене, а как же вкусный и полезный троллинг с лисперами? %)

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

>А FFI нам религия запрещает исползовать?

Ой, а готового, значит, нет? То есть лиспер — это в первую очередь такой фананат кружка «Очумелые ручки», клепающий велосипед за велосипедом с колесами в форме пустого списка, которые нельзя отнести ни к круглым, ни к квадратным? (пустой список - "()")

Кстати, а что делать, когда не в FFI дело? Например, если мы рассмотрим реализации многопоточности: у каждой реализации CL она своя и сильно самобытная, но есть какие-то кривые borderaux-threads. Почему кривые? Да потому что

condition-notify (condition-variable)

Notify at least one of the threads waiting for CONDITION-VARIABLE. It is implementation-dependent whether one or more than one (and possibly all) threads are woken, but if the implementation is capable of waking only a single thread (not all are) this is probably preferable for efficiency reasons. The order of wakeup is unspecified and does not necessarily relate to the order that the threads went to sleep in.

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

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

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

А что делать, если процессор не от интела?

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

Читатели на то и читатели, что не писатели. Посвистеть на форуме они могут, конечно, но не более.

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

> чисто для справки, ты говоришь о стаде яков и бизонов?

О старом добром rpcgen

Я решительно настаиваю, что выражение «С/С++» столь же бессмысленно, как и «asm/SQL», «Java/awk», «Prolog/HTML» и пр.

Я решительно настаиваю на том, что ты передергиваешь %0 ну или покажи мне кусок кода на Java, который является валидным кодом на awk.

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