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)
Ответ на: комментарий от mv

В gcc есть peephole и ssa, в sbcl нету. Вернее, первое только-только начало появляться, а второе на вряд ли в скором времени кто серьёзно возьмётся делать.

Может Roman Marynchak займётся? :)

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

насколько хорошо взаимодейчтвует отладчик с макросами? Интересует пошаговое исполнение.

Отладчик - это implementation specific, про него в стандарте, iirc, вообще сказано, что он может быть заглушкой. Степпер, который в Cltl2 ещё присутствовал, но в ANSI оторвали, передавал в хук sexp'ы для обработки (в простейшем случае это был eval). В LispWorks возможности степпинга из Cltl2 остались, там графический степпер с выделением sexp'ов есть, чё-то даже кажет, типа переменных, etc. Через макросы переступает, как через обычный sexp, т.е. без разворачивания. Хотя, может где-то и есть переключалка, чтобы макроэкспанд делал...

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

Может Roman Marynchak займётся? :)

Да чё-то его упаднический настрой ещё до начала битвы не предвещает ничего хорошего. Он SSA собирается for fun делать, а fun - это такое дело, проходящее... Но было бы здорово, если SSA и peephole в SBCL появятся. Тогда г-н swizard тягался бы с gcc, а не жабой ;)

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

насколько хорошо взаимодейчтвует отладчик с макросами? Интересует пошаговое исполнение.

Можно с помощью C-c C-m в SLIME протрассировать раскрытие - от макроса макросу, на каждом этапе будет открываться свой буфер.

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

Это вызов macroexpand?

Это вызов macroexpand-1 (стандартная функция), т.е. однократное раскрытие макроса без дальнейшей экспансии, ну а дальше можно двигаться в любом направление по коду также.

Ещё есть C-c M-m для macroexpand-all (не стандартная но из cltl2).

И то же самое есть для compile-macros (макро-оптимизаторы функций).

quasimoto ★★★★
()

такие топики надо сразу в Talks переносить, поскольку они инициируют лиспосрач.

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

Зависть — сестра соревнования. (С)

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

этот лиспосрач лиспосрачней предыдущих лиспосрачей %)

не в обиду лисперам

foxx
()

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

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

> Теперь фанбоям будет о чем на старости лет вспомнить

Лично я предпочитаю вспоминать и рассказывать про удачные проекты. Откуда столько неадекватна?

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

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

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

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

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

Хм, что-то имеешь против пива на полочках? ;)

Если Лисп имеет какое-то отношение к пиву, то его надо только за это учить ;)

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

> Если Лисп имеет какое-то отношение к пиву, то его надо только

за это учить ;)


Хм, могу демку с коньяком сделать ;) Ну или с памперсами, если кому будет интересно...

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

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

«Аудитория встает и дружно хлопает в ладоши великому оратору.»

Я серьезно - мысль грамотная и я ее поддерживаю.

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

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

Я серьезно - мысль грамотная и я ее поддерживаю.

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

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

Даже напротив, я исключительно за. Твоя(и не только) пропаганда CL заставила меня внимательно изучить «On Lisp» и напрочь выбить из мозгов любое желание писать на этом достойнешем языке :)

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

Ну почему же? Это грамотная мысль, просто утрированная, ибо была пересказана over 9000 раз. Изначально-то она заключалась в том, что области применения у C и C++ разные.

balodja ★★★
()

По итогам треда

Гавно лилось, Какашки плыли И тролли очень громко выли, Фикалии глотая ртом.

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

// передаю поэтическую эстафету

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

Хотя, честно говоря, я совсем не знаю область применения C++. Фантазии не хватает.

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

Даже напротив, я исключительно за. Твоя(и не только) пропаганда CL заставила меня внимательно изучить «On Lisp» и напрочь выбить из мозгов любое желание писать на этом достойнешем языке :)

Хотелось бы выслушать мнение, почему после прочтения On Lisp развилась фобия, а также что на её появление повлияло (знакомство со штангой, etc).

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

> Ну почему же?

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

Это грамотная мысль, просто утрированная

Это спорная мысль, утрированная до потери даже минимального смысла.

Изначально-то она заключалась в том, что области применения у C и C++ разные.

Думаю, ты не сможешь назвать область, в которой применяется Си, но не применяется Си++.

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

Думаю, ты не сможешь назвать область, в которой применяется Си, но не применяется Си++.

Программирование, максимально приближенное к ассемблеру (мелких контроллеров). Там, где с Си-то уже мириться можно только по причине трудности поисков хороших ассемблерщиков/vhdl'щиков.

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

> GA говорит мне совершенно об обратном, после каждого «не унылого» лиспосрача колличество посещений lisper.ru (в долговременной перспективе) несколько увеличивается.

Я вот например сразу полез на lisper.ru, и оказывается там интересно!

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

> Хм, могу демку с коньяком сделать ;) Ну или с памперсами, если кому будет интересно...

Всем будет интересно)))

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

> Думаю, ты не сможешь назвать область, в которой применяется Си, но не применяется Си++.

Я ради интереса попробую? Целевой(target) язык при компиляции.

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

>> Думаю, ты не сможешь назвать область, в которой применяется Си, но не применяется Си++.

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

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

Там, где с Си-то уже мириться можно только по причине трудности поисков хороших ассемблерщиков/vhdl'щиков.

Вот-вот. Реликты эпохи, когда железо стоило намного дороже, чем люди.

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

Если говорить коротко, то его(языка) исключительная сложность.

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

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

Вот-вот. Реликты эпохи, когда железо стоило намного дороже, чем люди.

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

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

>Думаю, ты не сможешь назвать область, в которой применяется Си, но не применяется Си++.

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

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

>> Думаю, ты не сможешь назвать область, в которой применяется Си, но не применяется Си++.

Я ради интереса попробую? Целевой(target) язык при компиляции.

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

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

>>Думаю, ты не сможешь назвать область, в которой применяется Си, но не применяется Си++.

Системные библиотеки.

GDI в венде (и не только GDI).

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

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

А так... 4 пункта для отмазки.

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

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

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

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

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

Стоп, меня походу клинит кокретно. Это я что-то перепутал, видимо.

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