LINUX.ORG.RU

Почему Лисп умер.

 ,


4

5

Очень часто в лисп-срачах на лоре можно наткнутся на аргументы лиспоненавистников, навроде «если лисп настолько крут, почему на нем не пишут энтерпрайз?» или «покажите мне годные приложения на лиспе». Также, иногда, встречаются жалобы, вроде таких: «Изучаю лисп на протяжении года, но пока не увидел значительных отличий от [some_lang]. Не понимаю, о какой-такой особенной мощи тут все говорят». Эти замечания, наверное, отчасти справедливы, во всяком случае, они основаны на реальном опыте.

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

Да, в действительности и Lisp и Smalltalk были погублены восьмибитными микропроцессорами и не потому, что они были восьмибитными, а потому что их архитектура была плохой и они они поставили крест на динамических языках. Сегодня эти языки работают приемлемо несмотря на ту же плохую архитектуру из-за гигантских размеров кэша 2 уровня. Некоторая часть работы производится быстро прямо в кэше. Поэтому Lisp и Smalltalk жизнеспособны сегодня. Но оба они, конечно, абсолютно устарели

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

Но разве одно хорошее ядро хуже двух хреновых?

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

что-то первая фраза противоречит второй. Или я тебя не понял?

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

А в js - есть. Там нет call/cc и оптимизации хвостовой рекурсии, чего там еще нет? Не считая некоторого сахара, там все есть.

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

Ну никто и не говорил про схемку в полном объеме, это ж веб, это ж для обезьян.

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

Прочитал твоё «хуже» как «лучше».

2 ядра по 1000 мгц ещё могут оказаться лучше, чем 1 ядро в 1500 мгц, если запущенно много приложений, но 100 ядер по 100 мгц однозначно соснут на десктопных задачах, хотя в теории производительность должна быть примерно в 6 с половиной раз выше, чем в варианте с ядром в 1500 мгц.

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

В частности... Хотя это скорее когда пишешь на POSIX sh.

Вот чего не хватает в bash - так это возможности вкладывать друг в друга структуры данных (т. е. прозрачно сериализовывать их в строки). Но это уже изврат, соглашусь заранее.

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

В js отсутствует много чего из scheme, но оно scheme, в питоне тоже отсутствует много чего из scheme, но оно почему-то не scheme.

JS сравнивают со scheme те, которые стесняются того, что они пишут на js, поэтому они ищут «благородства» в вымышленном родстве scheme и js.

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

Да ну? syntax-rules нет

Зато там есть полноценный eval, рефлексия/интроспекция, а это основа настоящего метапрограммирования, а не этих ваших кастрированных гигиено-компиляций. Макросы - это вообще слабая часть лиспа, клоунада для компилятора, по большому счету. В JS - Ъ-метапрограммирование, в духе smalltalk, правда, не все его умеют, это да, продакшен так не пишется.

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

В js нет макросов, а лишпег это макросы.

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

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

ты как-то теорию не дочитал. На самом деле, даже в идеальном случае, 100 процессоров(не ядер!) и то не будут работать в 100 раз быстрее одного. А уж 100 ядер и подавно.

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

В общем и целом, ИМХО никакого профита от многоядерности нет. Что конечно никак НЕ меняет тот факт, что новый процессор быстрее старого. Где сейчас найти новый быстрый одноядерный процессор? То-то же...

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

ИЧСХ — такая история повторяется Over9000 раз на протяжении Over40 лет. Чуть-ли не с каждым вторым недоделанным программистом. Хорошо, что у большинства это только возрастное...

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

Eval это зло, метапрограммирование в рантайме недопустимо. Труъ мктапрограммирование - это расширения компилятора.

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

Минимализм

Врешь, в реальных имплементациях минимализмом и не пахнет, я уж про racket молчу. Минимализм там только декларируется. Это пустые слова. А семантика там отнюдь не минималистична.

Лексическая область видимости

Есть, как и в схеме, по дефолту.

Оптимизация хвостовой рекурсии

Да, фейл, но если не заниматься факториало-дрочерством - ненужно

Продолжения

Есть, не путай CPS и call/cc

Динамическая типизация

Она самая, плюс утиная.

S-экспрешены и гомоиконность

В контексте схемы смешно об этом говорить. Считай, что нет. Сможешь пропарсить скомпилированную функцию? Или будешь писать везде eval/apply? Формальная эквивалентность кода и данных осталась сейчас только в Picolisp. И, что характерно, в JS, в отличии от схемы, в любой момент исполнения можно получить исходный код функции, как строку.

Функции и замыкания

Есть

Макросы

компилдрочерство - ненужно

Нелюбовь к мутабельности

смотри выше

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

метапрограммирование в рантайме недопустимо

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

Однако, дядьки из AI, с тобой бы не согласились.

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

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

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

На самом деле, даже в идеальном случае, 100 процессоров(не ядер!) и то не будут работать в 100 раз быстрее одного.

На самом деле - вполне будут. То есть, конечно, формально ускорение будет не x100, а x999.9999... - но кого волнуют погрешности в н-ном знаке?

anonymous
()

Лиспер сегодня — столь же редкая специализация, как и огранщик алмазов. Но при этом никто не говорит о ненужности профессии огранщика только лишь потому, что их вокруг нас практически не встречается.

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

Есть, не путай CPS и call/cc

В js нету ни того, ни другого. И принципиально нельзя реализовать - ведь для CPS нужно TCO.

В контексте схемы смешно об этом говорить. Считай, что нет. Сможешь пропарсить скомпилированную функцию?

При чем тут скомпилированная функция? Скомпилированная функция - не код. Да и не нужна в js гомоиконность - ведь макросов и, соответственно, метапрограммирования там нету.

anonymous
()

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

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

Самый выразительный - это bash.

Да не bash, а borshch! Сейчас он придет скоро - накормит всех. :)

Zubok ★★★★★
()

Лисп хоронят со времён ai winter. А если кого-то хоронят на протяжении более четверти века, значит не так уж он и мёртв.

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

ведь для CPS нужно TCO.

Кто тебе сказал? Это бред сивой кабылы. А что касается TCO, то в JS есть способы не засирать стек вообще, например, через setTimeout

При чем тут скомпилированная функция?

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

ведь макросов и, соответственно, метапрограммирования там нету.
ведь макросов и, соответственно, метапрограммирования там нету.

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

Метапрограммирование на макросах — это не метапрограммирование, а слезы, мля, особенно гигиена, это вообще смех. Было в лиспах раньше метапрограммирование - fexprs, но поезд ушел.

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

И принципиально нельзя реализовать - ведь для CPS нужно TCO.

Ни фига себе, а я думал, что 99% кода на ноде, написана в CPS. Может объясните, какая связь между CPS и TCO?

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

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

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

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

На самом деле - вполне будут. То есть, конечно, формально ускорение будет не x100, а x999.9999... - но кого волнуют погрешности в н-ном знаке?

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

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

Лиспер сегодня — столь же редкая специализация, как и огранщик алмазов.

и то и другое не нужно.

emulek
()

в действительности и Lisp и Smalltalk были погублены восьмибитными микропроцессорами

Ну разумеется. В провале лиспа виноваты восьмибитные процессоры, гигантские кэши, большие объемы RAM и НЖМД, быдлопроизводители быдлопроцессоров, быдломанагеры, быдломаркетоиды, быдлопрограммисты, неблагоприятная геомагнитная обстановка, сдвиг полюсов Земли, глобальное потепление, индейцы Майя, Третий Антарктический Рейх и лично Аштар Шеран.

Лисп-секта верна себе. Ведь это так по-сектантски, — свалить собственное фиаско на кого угодно, пусть даже самым абсурдным образом, вместо того, чтобы признать ущербность и убогость собственного идола-божка.

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

Хватит уже поливать тут Lisp какашками :) Современный Lisp это Clojure. Используется много где. В банках пишут много что на нем, не в рашке конечно, в Германии. Да и потом getprismatic.com написан на Clojure. Есть ClojureScript, а есть еще и Pedestal = Clojure + ClojureScript. Софта на Clojure пишется очень много.

anonymous
()

хоть и Гэбриэль? со своим «достаточно хорошо» уже давно ответил почему не лисп а «С» но вот пример:

Unix универсальная среда программирования (Керниган, Пайк):

3.9 Программа bundle: соберём все воедино

а команда bundle - независимо А.Хьитом и Д.Гослингом.

всё просто любая среда программирования ...

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

Хватит уже поливать тут Lisp какашками :)

Простите, а кто поливает-то? Зачем это нужно, если сами лисперы с этой задачей справляются на ура.

В банках пишут много что на нем, не в рашке конечно, в Германии.

Пруфы в студию.

Да и потом getprismatic.com написан на Clojure.

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

Софта на Clojure пишется очень много.

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

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

И да, что есть в Clojure, чего нет в Scala?

У Scala — прагматический подход, мощный академический бэкграунд, коммерческая поддержка, обширное сообщество, опыт использования в крупнейших проектах.

У Clojure — влажные фантазии кучерявого еврея-шизофреника Хикки.

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

Лисп хоронят со времён ai winter. А если кого-то хоронят на протяжении более четверти века, значит не так уж он и мёртв.

Ленина хоронят уже почти 90 лет.

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

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

Они дурачки поневоле

надо же как интересно! а что насчет тех, кто пишет на питоне, руби, перле, груви, баше и прочем? тоже дурачки?

ой-вей!

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

В банках пишут много что на нем, не в рашке конечно, в Германии.

Пруфы в студию.

Ноу проблем!

Кто использует Clojure раз http://dev.clojure.org/display/community/Clojure Success Stories

Clojure в Deutsche Bank два http://techmeshconf.com/techmesh-london-2012/presentation/Sharing Data, hidin...

И вот тут http://dev.clojure.org/display/community/Clojure Success Stories можно увидеть что Clojure использует Citigroup (the leading global financial services company, has approximately 200 million customer accounts and does business in more than 140 countries.)

Ok ? :))

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

Насчёт первых четырёх - безусловно. :)

Ладно, это уже слишком толсто с моей стороны. Всему своё применение, очевидно.

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

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

а для каких? если говорить даже не только о самом ЛИСПе, но и о всех его производных вместе взятых

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

а для каких?

Для задачи «смотреть на всех, как на говно», например.

Вот представь, подходит к тебе начальник с утречка в понедельник, да спрашивает, мол, где обещанный код. А ты ему такой с вертушки: «Да вы, быдлокодерня, ничего не понимаете! Ща я на анафорических макросах пандорический захват сделаю, получится метациркулярный вычислитель, и усё будет!»

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

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

Правда, триумф твой будет недолгим. На следующий день у тебя спросят: ну, и где же твой метациркулярный вычислитель? Тут выяснится, что ты только начал переписывать весь проект на лиспе; что тебе нужен Allegro CL для анафорических лямбд и LispWorks для пандорического захвата; но вообще надо будет создать свой лисп и переписать весь проект на нём; и да, работать это будет только под LISP OS на LISP-компьютере, которые тоже придётся создать.

Тут-то тебя и выпиздят ссаными тряпками с волчьим билетом. И поделом.

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

Если серьёзно, кажущиеся «преимущества лиспа» сильно преувеличены местными кукаретиками, говнолитиками и кококодемиками. На синтетических примерах лисповые макросы позволяют экономить несколько строк. Но перед промышленной разработкой ПО стоят проблемы совершенно другого масштаба, и лисповые макросы их не решают. Это и обусловило фиаско лиспа как промышленного языка. Поэтому на сегодняшний день он является тем, чем является, — скриптовым языком для AutoCAD, языком конфигов для Emacs и GIMP, да языком для сугубо академических поделок и быстрых прототипов.

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

Разбудили борщевика. Аж на 3 пасты подряд сподобился , день прошёл не зря.

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

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

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

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

тоже нет сейчас никакого code-as-data,

JSON же

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

Лол, ты почти понял исходную мысль, поднажми!

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

На cpu управляющая программа, на FPGA считающая

Есть такие решения у Altera в новых embedded продуктах. Потому что интерфейс и управление гораздо проще в ОС (Linux), а железную часть - на FPGA.

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

call/cc

Кто-нибудь может на пальцах пояснить, что это за продолжения такие и как их можно использовать?

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

Это такое goto, только для педиков и хипстеров. И точно так же ненужно.

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