LINUX.ORG.RU

Вызов лисперам.

 


2

5

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

Я часто вижу на ЛОРе утверждения наподобие такого: «Лисп-макросы дают возможность создавать DSL под задачу, а саму задачу решать на языке предметной области». Дальше обычно следуют выводы: благодаря этому лиспер во много раз производительнее программиста на С, С++, Java, Python и прочих non-Lisp языках. Сразу disclaimer: я тут ни на чьей стороне, мне самому интересно посмотреть, как работает этот подход. В частных беседах добиться особо ничего не удалось, разве что «я тут писал DSL для разбора лисповых DSL, чтобы можно было DSLить, пока DSL разбирается; а eDSLей так вообще было не счесть». Поэтому предлагаю решить предельно конкретную задачу, в которой, кстати, есть острая нужда.

Есть такой замечательный дистрибутив Gentoo, наверняка многие им пользуются. У него прекрасная концепция, но есть большая проблема с пакетным менеджером portage. Он — «невыносимо тормозной», а его разработчики "не хотят лезть в это адское спагетти из пистона и баша". Перевожу на профессиональный язык: portage имеет проблемы с производительностью и поддерживаемостью. Вероятно, отчасти из-за неудачного выбора языков реализации.

ЛОРовцы уже кинули клич на предмет переписывания portage на С/С++, но как мне показалось, делишки идут неважно. Давайте поможем общему делу? Мне кажется, задача просто идеальная:

1. Не «Hello, World», но и не система управления ядрёным реактором. Судя по утверждениям лисперов, такое должно занять от одного вечера до нескольких дней. Таким образом, проверяем claim о производительности лиспера;
2. Исходный продукт испытывает проблемы с перфомансом. Проверяем claim о том, что лисп не тормознее сишечки, а также claim, что на лиспе проще реализовать правильные алгоритмы и структуры данных;
3. Предметная область — пакеты, метаданные, содержимое, зависимости, сборка и установка. Предельно ясная и самодостаточная. Проверяем claim о DSL и решении задачи на языке предметной области.

Итак, ТЗ — реализовать Gentoo portage на лиспе вашей мечты, The Right Way(TM). Приз — всенародное признание, сотни нефти и гарем из 99 девственниц подросшая репутация лиспа :) Впрочем, пацаны вроде даже собирались скидываться на условную «бутылку Жигуля». Кстати, призываю Chaser_Andrey в свидетели.

Ну, что? Challenge accepted?


P.S. Кстати, хаскелистов тоже призываю к участию. Потому что о Хаскелле столько же claim-ов, если не больше. И про DSL я слышал, и про невероятную производительность штангиста программиста, и про решение всех проблем с помощью иммутабельности и чистых функций. Кстати, у вас будет больше шансов, так как Haskell умеет компилироваться в натив, а изо всей рассыпухи лиспов это умеет только ECL да пара схемок.

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

Haskell умеет компилироваться в натив, а изо всей рассыпухи лиспов это умеет только ECL

SBCL компилируется в натив

CCL компилируется в натив

yoghurt ★★★★★
()

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

Bad_ptr ★★★★★
()

1. Почему генту, и кому она вообще нужна?

2. На слабо никто писать не будет. Если хочешь знать выполнимо ли это в принципе, вот тебе примеры менеджеров зависимостей (не пакетный менеджер, но нечто сравнимое): http://common-lisp.net/project/asdf/ , https://github.com/technomancy/leiningen .

unlog1c ★★★
()

Затишье. Видимо, лисперы всея ЛОРа уже упорно фигачат имплементации реквестируемого lisportage. И завтра ТС будет унижен и посрамлен :D.

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

А питонисты уже посрамлены. Потому что тормозит на столько, что уже зовут лисперов на помощь портэж переписывать.

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

Вроде бы

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

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

SBCL компилируется в натив

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

CCL компилируется в натив

Так же, как и SBCL? или по-настоящему

BYHYRT
() автор топика

Дальше обычно следуют выводы: благодаря этому лиспер во много раз производительнее программиста на С, С++, Java, Python

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

Ну, что? Challenge accepted?

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

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

Но ведь ты знаешь.

ну это уже дефакто. Написано на питоне, система сложная, значит писал питонист. Значит тут одно из двух либо питонисты тупые, либо питон тормозит.
А чтобы это опровергнуть Я КИДАЮ ВЫЗОВ ПИТОНИСТАМ, попробуйте перепишите код, который уже написан на питоне, чтобы он работал быстрее, чтобы люди не жаловались.
(Кстати, хаскелисты тоже могут попробовать.)
Что-то не слышно возражений по существу — видимо все толковые питонисты уже кинулись писать код и завтра я буду посрамлён быстрой реализацией портажа на питоне.

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

Всенародное признание очень плохо намазывается на хлеб.

Есть ещё такая вещь — «принести пользу сообществу». Звучит выспренне, но, извините, на одном этом делался Linux.

Или для лисперов вся эта альтруистическая херня не имеет значения, а важны только кровные шекели? :)

BYHYRT
() автор топика

Предрекаю, что не взлетит.

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

Во-первых лисперы не используют генту.

А что они используют? Семёрочку максимальную? Gay OS X? Symbolics Genera? Emacs OS?

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

На слабо никто писать не будет.

Где я сказал «на слабо»? Цель — принести пользу сообществу и поднять репутацию лиспа.

вот тебе примеры менеджеров зависимостей

Можешь показать, где там DSL?

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

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

Нужно повысить градус неадеквата. Давай, ты сможешь.

Что-то не слышно возражений по существу

Возражать тебе? Да ты еще более упорот, чем кажешься.

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

Насколько я помню, он просто сблёвывает весь свой рантайм в большой экзешник

Примерно так, да. А иначе фишечки навроде load перестали бы работать :)

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

которая всё равно в виде байт-кода

Там везде обычный скомпилированный машинный код. Можно считать это статической линковкой — программа + библиотеки + рантайм + компилятор.

И, кстати, в хаскеле так же — если собирать программу с поддержкой GHC API (то есть компилятор, все дела, как в лиспе), то бинарник будет тоже здоровый (на несколько десятков MB, ЕМНИП), другое дело, что там уже есть динамическая линковка (то есть программа отдельно, компилятор — отдельно разделяемой библиотекой, но тоже ЕМНИП).

Так же, как и SBCL? или по-настоящему

Так же. То есть по-настоящему :)

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

Звучит выспренне, но, извините, на одном этом делался Linux.

Это ты всерьёз?

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

Там вообще какая-нибудь есть внятная документация, что этот портеж должен делать какие там интерфейсы и т.д.?

Такая — Желающие принять участие в написании альтернативы portage на C++ просьба отписаться (комментарий) ?

quasimoto ★★★★
()

Зачем еще один велосипед. Есть paludis же, на С++ (который тормознее portage, лол)

x4DA ★★★★★
()
Ответ на: ) от Bad_ptr

один питонщик уже слился

«Обосрался - засчитай оппоненту слив» (ц)

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

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

Да я вообще чувак такой, продолжаю верить в человечество и всегда даю второй шанс :) Хотя и понимаю, что наивняк.

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

раз никаких наблюдаемых результатов нет

Ну, фиг их знает, вдруг они все на военку да на атомную энергетику трудятся :) А тут как раз шанс блеснуть своим кунг-фу публично.

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

Portage тормозит не из-за питона, сто раз обсуждали.

А я и не утверждал, что из-за питона. Там ещё ведь bash есть. И, вероятно, неоптимальные алгоритмы и структуры данных. А ведь правильные алгоритмы делать проще всего на лиспе, разве нет? ;)

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

Зачем еще один велосипед. Есть paludis же, на С++ (который тормознее portage, лол)

Не велосипед, а мотоцикл! Ведь оба велосипеда — portage и paludis — с квадратными колёсами, и толком не едут.

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

На слабо никто писать не будет.

Причем тут «на слабо»? Люди (гентоводы) страдают же! Окажи им гуманитарную помощь.

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

Ну всё, теперь-то портаж взлетит!

...и покинет эту бренную планетку.

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

Можешь показать, где там DSL?

А кто тебе сказал, что они там должны быть? Влажные фантазии не в счет.

Есть ещё такая вещь — «принести пользу сообществу».

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

А тут как раз шанс

Ох, сижу я такой на ЛОРе и все жду пока мне кто-то шанс блеснуть предоставит.

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

Обосрался

так обосрался ещё ТС, а тут вдруг комментаторы налетели как мухи

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

никакого такого результата их «производительного» труда нет вовсе

The Last of Us, крутейшая игрушка года после GTA 5.

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

существует такой крутой подход, о котором они говорят?

Такой крутой подход существует и широко применяется в промышленности. Но к лишпику он не имеет ни малейшего отношения.

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

Опять этот звездежь. Не надоело лгать и вонять? Там игрушка на лишпике написана не в большей мере, чем linux написан на make.

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

Это не компиляция в натив. Там просто собирается интерпретатор и байткод в один файл.

Ну так лишпики (и конкретно sbcl) делают ровно то же самое.

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

Там игрушка на лишпике написана не в большей мере, чем linux написан на make.

Ты лжешь. Там весь геймплей, анимация, эффекты, звук и диалоги написаны на DSL'ях.

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

Не, они упорно уважают себя... Прихлебывая мамкин борщ.

Чушь, лисперы заработали 3.4 миллиона баксов только за три недели.

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