Лисп - семейство языков программирования. Характерные особенности лиспов: динамичность, гомоиконность (код как данные), программируемость.
{Основные диалекты} :: Common Lisp - разрабатывался как промышленный язык, пригодный для широкого спектра применения, из-за чего имеет достаточно объемную спецификацию. Является мультипарадигменным (процедурщина, функциональщина, ооп (CLOS)), с сильной, динамической типизацией. Есть опциональная декларация типов и, в некоторых реализациях (sbcl, например), частичный их вывод. Описание особенностей: http://habrahabr.ru/post/143490 Основные реализации: - свободные: SBCL (нативный код), Clozure CL (нативный код), ECL (через сишку), Clisp (байт-код; небольшой размер образа; похоже, заброшен), Clasp (LLVM; ориентирован на интероп с C++), ABCL (байт-код JVM), gcl, cmucl - коммерческие: LispWorks, Allegro CL, Scieneer CL, mocl (для программирования под ведро и ios) :: Scheme - это минималистичный лисп, пригодный в основном для обучения, исследований. Наиболее практичными реализациями являются GNU Guile (https://www.gnu.org/software/guile/) и Chicken Scheme (http://call-cc.org/). :: Racket - развитие PLT Scheme. Racket включает в себя много подъязыков (typed racket, lazy racket, frtime racket, Scheme стандартов r5rs и r6rs). :: Clojure - cм. соседний тред.
Старался вкатиться в коммон лисп, но не осилил импорты и стд. Старался вкатиться в рэкет, но на середине книги про прекрасную ракетку забил. Хотя думал это хорошая идея делать длц под свою задачу. Сейчас думаю запилить какую нибудь десктоп приложуху на кложаскрипте и электроне. Но скорее всего тоже забью. В итоге потратил дохуя времени, и все в пустую. Даже с емаксом поебаться успел, и свой конфиг запилил. Хз, зачем это написал, просто хотел бампнуть тред.
>>1591677 Есть поговорка "Труд не уходит в песок" Вкатывайся во все подряд, забивай, опять вкатывайся. Перманентно все в голове не удержишь, но наверстать заново то, что когда-то проходил будет легко.
>>1591687 >А че тебя на лиспе так понесло, если Я думал лиспы сделают меня умным. Но инструмент не может сделать тебя умным. Он может лишь облегчить твою работу. Теперь я это вижу. >Бери какой-нибудь кхм кхм Питон++ и хуярь Плюсы это же совсем про другое. Я думал попробовать байтослесарьство, но плюсы выглядят огромными. Мне страшно туда лезть.
>>1591693 >Есть поговорка "Труд не уходит в песок" Но ведь я уже потратил время, которое не принесло пользы. > но наверстать заново то, что когда-то проходил будет легко. Только если я захочу вернуться обратно. Но я пока не могу найти серьезной причины тратить время время на лиспы. Работы нету, даже на кложе. Про остальные лиспы вообще молчу.
10й тред ? Я даже и предыдущих не видел. Как вы там? Есть ли вообще хоть какие-то люди, которые лисп в проде используют? Ни один диалект по-моему ни стандартной библиотекой, ни комьюнити не оброс. Вы уже всё , на том свете ?
>>1591717 Потому что лисп не пользуется популярностью. И что это такое - популярность на гитхабе? Сама по себе она не стоит ничего. Что ты имеешь в виду?
>>1591710 Если ты про коммон лисп, то скорее нет, чем да. Кложа активно используется очень многими компаниями, схема активно используется в академической среде и во всяких исследовательских проектах по проектированию языков.
>>1591677 Ставь IntelliJ IDEA. Поверх накатывай Cursive плагин. Бери книжку по Clojure и начинай писать код. Сложно себе представить более прагматичного лиспа чем Clojure.
>>1591677 Импорт в CL да, странноват, но нужно понимать, что это вещь, сделанная в конце восьмидесятых, и ничего подобного в других языках не было вплоть до середины двухтысячных. Там просто достаточно запомнить странные называния ("пакет" - это то, что в других языках "модуль", а "система" - это то, что в других языках "пакет"), внимательно прочитать ридми к QuickLisp и всё встанет на свои места. Я когда PCL читал, тоже на всех этих пакетах запнулся, да так, что аж на несколько месяцев отложил, но потом вернулся, осилил, и теперь охуеваю оттого, насколько же коммон лисп прекрасен (хотя местами и уродлив). Ракетка хорошая, но тормозная и на мой вкус слишком перегружена фичами. Кложу не трогал, ничего про неё сказать не могу. Мой тебе совет - вернись к CL, базарю, ещё захочешь.
>>1592148 >Ракетка хорошая, но тормозная Эт неправда. Ракет довольно быстрая схема, кроме того, есть typed/racket когда нужно максимум скорости. Серьездно, я бы забил на любые другие языки навсегда если бы типизированный ракет допили ли бы.
>и на мой вкус слишком перегружена фичами Стандартная библиотека(если это так можно назвать) в нем - бардак.
>>1592161 >А что еще не допилено для постижения сатори? Ну он как минимум житель второго класса. Часть стандартной библиотеки так на тайпед ине переведена. Плюс баги всякие, например полгода не работал дебаг.
>>1592162 >Ага 10й, последний тред утонул джва года назад (ДЖВА, КАРЛ!) На борде остались одни тралли шкальники и фсбешники. В РФ собираются новый закон принять об административной ответственности за РЕПОСТ ИЗ НЕЗАРЕГИСТРИРОВАННЫХ СМИ.
Кинеш ссылочку на реддит например, плати штраф, и на карандашик тебя.
>>1592196 Такие большие проекты как граф движок почти что нельзя довести до точки, всегда будут какие-то проблемы, или улучшения, тем более что тот-же опен жл развивается.
>>1591537 (OP) Ору со школьников-неосиляторов, которые думают, что лисп - это хороший инструмент для каких-то задач. Нет, пора уже признать, что лисп - это лучший язык для любых задач, кроме, разве что, низкоуровневых вещей, для которых есть сишка и асма
Лисп это хороший язык для запилить себе временных велосипедных тулзов когда в твоей области ничего подходящего нет - всякие дсли-хуели, парсеры-хуярсеры.
Проблема же в том, что когда появляется нативное промышленное решение, то лишп резко нафиг становится не нужен.
>>1593413 >However, they have since resumed using it for scripting on some PlayStation 3 games, including The Last of Us.[3] 2013 год. Лисп используют для скриптинга ААА игры продукта, не хотел?
бля, нахуй в живого человека сразу ассемблер засовывать? ты поехавший? мож, блядь, писсать хеллоуворлд, или алгоритм Евклида, держа в голове, как процессор достаёт кэшлайны из памяти, интепретируя виртуальное адресное пространство, и засовывая инструкции в конвейер АЛУ? или, блядь, лчше сначала нормально замести под ковёр сложности, понять, что такое циклы там, переменныйе, операторы присваивания, масивы?
>>1608083 Знаешь, есть такой производитель электроинструмента и промышленного оборудования Hilti. Очень крутая продукция у них. Удобная, надежная, дают пожизненную гарантию. В общем элитное оборудование. Почему бизнес в РФ массово не юзает их оборудование? Потому что дорого, потому что невыгодно, нет смысла. Спецов хороших мало, а васяну дай такую игрушку, он может ее и сломать. Владельцам бизнеса в большинстве же похуй на каком оборудовании работают люди. Им важен результат. Результата можно добиться и с худшим оборудованием. Ну да, оно будет чаще ломаться, оно не позволяет так быстро и удобно работать. Но оно решает задачу в общем. Тоже самое и с Лиспами.
Не каждый понимает их ценность. Не каждый умеет их использовать. Не каждый бизнес готов их юзать. Тот кто ценит свой труд, кто знает ценность и умеет использовать сильные стороны Лиспа, тот юзает их. Есть правило, которое сейчас очень хорошо работает, все что массовое == говно. И даже мнения людей. Чем больше людей имеют какое-то общее мнение, тем выше вероятность, что это их мнение дикий треш. Массовое поклонение псевдо-ООП - треш. Массовые языки - почти все говно. Принятые подходы к программированию в индустрии - почти все хуета, не имеющая ничего общего с инженерным мастерством. И наоборот. Все незаметное, все не распиаренное, все редкое - обычно качественное, верное, правильное.
>>1608134 >Дай угадаю, судя по твоему максимализму, ты не старше 14 лет? Есть что возразить по теме поста? Если нет, то досвидания. Не собираюсь с тобой обсуждать свою личность. Может твою обсудим?
>>1608145 >Может твою обсудим? Давай. Я в универе на первом курсе был таким же как ты, слушал музыку, от которой у посторонних уши сворачивались в трубочку, люто-бешено ненавидел всё, что не компилируется в нативный код и зачитывал одногруппникам вслух копипасты про то, что жаваблядь не человек. Теперь, после десятка лет работы за деньги, я растерял весь максимализм и стал прагматиком, на чём быстрее всего сделать хуяк-хуяк-продакшен, на том и пишу на питонах в основном, на коммон лиспе для души лабаю.
>>1618209 > пиздец какой огромный Это не так. Да, документ со стандартом чуть меньше, чем документ со стандартом C++, но в CL минимум базовых принципов - s-expr'ы, макросы, вот, считай и всё по большому счёту.
> выхлоп меньше или на уровне мейнстрим языков? Это не так. Мейнстрим-языки так до сих пор толком и не смогли спиздить из CL символьный тип данных, гомоиконность и макросы.
>>1618617 >но в CL минимум базовых принципов - s-expr'ы, макросы Я не спорю, синтаксис минималистичный. Но та же стд либа просто огромная. Клос огромный. Начнешь писать что-то сложнее хелоу ворлда придется вкатываться в либы, таже александрия. Захочешь оптимизировать и задеплоить свое поделие - придется разбираться в апи конкретных реализаций. И я вот думаю, а стоит ли оно того? Когда в других языках порог входа на порядок меньше, батерейки на все случаи жизни и комьюнити в разы больше.
>Мейнстрим-языки так до сих пор толком и не смогли спиздить из CL символьный тип данных, гомоиконность и макросы. И вряд ли смогут, потому что дизайн языков другой
>>1618863 > Но та же стд либа просто огромная. Кришна с тобой, в CL стдлиба чуть продвинутее, чем в чистой сишке. Чуть нужно что посложнее - приходится тащить третьесторонние либы.
> Клос огромный. Чего в нём огромного? defclass и defmethod? Серьёзно, клос - это самый изящный ООП, который я когда-либо видел, а я только за деньги писал на полудюжине языков, а посчитать те, что для души - так и дюжина наберётся.
> Захочешь оптимизировать и задеплоить свое поделие И для этого есть решения - многочисленные trivial-* библиотеки, унифицирующие разницу в реализациях, для деплоя можно взять тот же самый шинмеровский deploy. С деплоем того же распиаренного пистона ты насосёшься гораздо больше хуёв.
> Когда в других языках порог входа на порядок меньше Не питай иллюзий, что в CL, что в мейнстримные языки порог входа примерно одинаков, если не считать JS, вот это вообще ёбаный ад, заборы и коровники.
> И вряд ли смогут, потому что дизайн языков другой Amen to that. В руби вроде были какие-то потуги, но вроде бы всё равно не дотягивает до CL.
>>1618863 >Захочешь оптимизировать и задеплоить свое поделие -
У тебя есть возможность прямо в рантайме лично поковыряться ручками в JIT компиляторе и добавить все необходимые AVX-инструкции и правила их использования.
Да нет, просто сытые кекогерцы и гигабайты оперативы тогда еще не изобрели, движение на сервер тогда еще не было - было наоборот - с сервера, который мейнфрейм на персоналки.
>>1626492 Java твоя в 2010 умерла, все на лисп переходят, в том числе и тырпрайз. Я еще помню как на днях был на конференции (работаю в крупной компании over3000 сотрудников), решаем вопрос об архитектуре системы. Мои коллеги че-то пиздели про хайлоад и плюсы, но у меня уже было пару козырей в рукаве. Так что я встал и говорю - все хуйня, ребят, в 2к20 все четкие пацаны на лиспе хуярят, так что давайте выбросим весь тот зашквар, на котором сейчас пыхтит продакшн. Смело заявления, но оно сработало. Пол бюджета тупо вылили на переписывание инфраструктуры на всякие лиспы, каждый прогер выбирал свой любимый диалект и на нём писал, даже босс подключился и сказал "Бля какой хуйней мы занимались, вот где живет дух старой школы, пацаны".
>>1626492 На кложатв полно выступлений от хуйов с реальными проектами В основном это хайлоад тырпрайз ориентированный на дата процессинг Как пример swarmify и amperity Самое смешное, что практически все из них начинались как стартапы и брали рандомных хуев (хоть в основном и связанных с жабой) и студентов без опыта лиспа вообще Путь проекты и не разрослись до мегакорпораций, но свою нишу занимают и до сих пор на плаву по 5+ лет
>>1628665 Жаба скрипта на столько отвратительна, что это грустный мем. Я хз сколько раз пытслася в жс, но через пару часов из за блевоты уже монитра не видно. Так что клжс вполне себе выход.
>>1591537 (OP) Начал читать beautiful racker, понравилась идея придумывать свои языки и дсл. И делать это удобно, потому что есть либы. Как с этим обстоят дела в борще?
>>1635556 >Как с этим обстоят дела в борще? В хаскеле что ли?
Фишка именно рэкета как раз в том, что это по сути фреймворк для написания своих языков. Но с дслами и в кл все ок, можно даже синтаксис свой через ридер-макры захуяривать (но ненужно). Алсо в схеме (и ракете) макросы гигиенические, в кл - нет, можно в них делать все что угодно.
>>1636141 >В хаскеле что ли? В общелиспе же. >рэкета как раз в том, что это по сути фреймворк для написания своих языков Есть ли такой же фреймворк в кле? Похоже что нет
Хочу написать парочку языков под свои задачи, как это в книге beautiful racket расписывали и подумал, а можно ли сразу в кле такое проделать. Про дсл в курсе но имхо для этого потребуется много усилий, а в рекете похоже это делается очень легко.
>>1636246 Мог бы, но какая принципиальная разница между формошлёпством крудов за деньги, которым я сейчас занимаюсь, и разработкой драйверов за деньги? Я и сейчас, когда на CL пишу, с интересом заныриваю в выхлоп (disassemble) и оптимизирую потом запах такой, что аж обои от стен отклеиваются
>>1636286 >Когда-нибудь, я, возможно, вернусь к нему. Ага, как только тебе понадобится хоть какое-нибудь быстродействие. Серьёзно, ракетка хорошая, но тормозная очень.
>>1636817 > ракетка хорошая, но тормозная очень. Быстрее питонов, руби, пхп. Медленнее ноды. Среди скриптовых не худший вариант. Кл в другой категории все таки.
>>1637333 Да. > Медленнее ноды. Ты бенчмаркал или так, мнение с дивана?
>>1637104 Они живые, а gambit/gerbil - самый быстрый из них, но даже он в код втыкает проверки типов в рантайме на каждый чих. В CL-то есть возможность gradual typing.
>>1643865 Не то. Мне нужно монотонно распределить одну функцию на несколько тел, а не делать все в одном теле. Как в хаскелле или прологе. Другой пример, чтобы понятно было. Допустим есть функция transform: (define (transform 'foo) 'bar) (define (transform 'bar) 'foo)
Вызываем: (transform 'foo) Ожидаем в консоли: 'bar
>>1643882 Такой способ мне неивестен, в CL у функции всегда ровно одно тело. Конечно, всегда есть возможность изобразить макрос, который будет вместо defun и который будет матчить аргументы и вызывать нужную суб-функцию, но это уже из разряда троллейбуса из буханки хлеба. А, хотя стой, можно же что-то такое изобразить на дженериках. Не уходи никуда, сейчас напишу.
>>1643802 >factorial 1 = 1 >factorial n = n × (factorial (n × 2)) На каждый паттерн создаются новые переменные Уже пару лет как в компилятор добавили депрекейтет варнинги по этому поводу
Как же меня бесит этот хуевый мир, где нужная инфа не лежит на поверхности, пидоры, мать вашу! Все ваши ебучие принципы форматирования умалчивают, как быть, когда ПЕРВЫЙ БЛЯДЬ член в скобках тоже имеет ОХУЕЛИ ДА БЫВАЕТ ЖЕ ТАКОЕ свой размер??? Есть это лямбда какая-то, например. Что делать, сука??? let не предлагать, не всегда подходит.
>>1673602 Ладно, похуй, все в этом мире относительно, и все человекочитаемые принципы условны. У всего есть мера и предел. Без дефайнов не обойтись. Будьте честны сами с собой и живите в гармонии. Пис.
Программач, хочу написать статически-типизированную схему без сборки мусора с крутыми регекспами и макросами (которые выйдут из разряда "Bad coding practice") безопасность которой будет частично/полностью математически подтверждена, че думаете?
>>1595844 чел, с паскаля надо начинать, а уже потом переходить на асм, т.к. новичка кидать в асм это маразм а в паскале есть норм указатели. После асма С а потом можно и по лишпам пройтись.
>>1681658 >новичка кидать в асм это маразм А как диды компьютер изобретали, ты дурак? Они ж тогда и алгоритмов не знали, и паттернов-хуятернов, но как-то же писали на своих EDSAC и не жаловались
>>1591677 Я вкатился в ракет побольше твоего. Можешь задавать ответы. Идея длц интересная но я этим ещё ни разу не пользовался. Написал пару утилит для себя.
>Мне нужно монотонно распределить одну функцию на несколько тел, а не делать все в одном теле. Тебе чисто визуально важно это, или как? Тут макросик как бы очевиден.
В ракетке есть (define/match как бы) Если тебе именно нужно несколько дефайнов, то ты можешь свой собственный define сделать. Который соберет несколько определений в define/match
>>1710667 >Ты буквально алгоритм на нем прямо записываешь. Мы не мыслим алгоритмами, поэтому писать ast неудобно. И популярность лиспа и это доказывает, с этим странно спорить.
При решении арифметической задачи ты не рассуждаешь, как - надо разделить сумму четыреъ и семи на два. Ты скорее думаешь как, к четверке прибавить семерку и разделить на два.
Я очень рад, что ты весь такой способный, молодой и шутливый и все тебе легко. Но на деле, если ты будешь объективен, то людям ни логическое, ни каноническое функциональное, ни аст-подобное - не удобно. К нему именно что надо привыкать. А к императивному привыкать не надо. Оно естественно.
>>1710670 Ого, вот это тебя разнесло. Какбудто ты на лисп обиженный чем-то. Лисп очень много где успешно применяют. И твоя способность читать мои мысли поражает конечно.
1. Человек может менять способ мышления как угодно. Поэтому он и человек. Смотреть уровни обучения по Бейтсону.
2. Способ записи арифметики из 3тего класса младшей школы не есть истинна. Система школьного образования была созданна для превращения сельских дебилов в боеспособную военную единицу.
>>1710682 >как угодно Нет, не может. Как бы хорошо ты не выучил английский, на русском все равно будет удобней говорить. Со школьной нотация аналогично - у тебя под неё сформировался мозг, когда ты ещё был пиздюком. А все, что формируется в детстве - оно обычно не обратимо.
Вот, погляди, множество лисп программистов даже после нескольких лет дрочки языка вполнеисогласны с тем, что в человеческой нормальной нотации код легче читать https://readable.sourceforge.io/
>>1710771 >Нет, не может. Как бы хорошо ты не выучил английский, на русском все равно будет удобней говорить. Со школьной нотация аналогично - у тебя под неё сформировался мозг, когда ты ещё был пиздюком. А все, что формируется в детстве - оно обычно не обратимо. Не подтверждёно ни одним вшивым студенческим исследованием, зато эмпирически дохуя примеров обратного, когда люди со временем забывают родной язык к хуям.
>>1710670 >А к императивному привыкать не надо. Оно естественно. Какой пиздец. Не, ну если ты ебаный робот, то возможно.
Меня наоборот от императищины коробит, настолько она неестественной для человека кажется. Я когда первый раз на уроке информатики в школе увидел i = i + 1 - просто охуел от этого бреда. Мне кажется это нормальная реакция, и нужно реально пройти через несколько лет отупления посредством программирования на энергичной мутабельной процедурной параше с аппликативным порядком вычисления, чтобы деградировать до уровня "императивного мышления", если такое конечно вообще возможно. Может быть программирование на иммутабельном ЯП с ленивостью, каррированием по умолчанию, pointfree, чистотой и поддержкой денотационной семантики сможет сделать из такого овоща обратно человека, но не уверен. Лучше процедурную парашу всё же обходить стороной.
>>1712712 >Я когда первый раз на уроке информатики в школе увидел i = i + 1 - просто охуел от этого бреда Ну тогда у тебя задержка развития, если ты начал программировать после уроков информатики
>>1712730 Программировать лучше вообще не начинать (особенно на императивной параше) (особенно для кого-то за деньги), но если это неизбежно, то чем позже - тем лучше.
>>1713176 Тут моих два поста, один из которых ответ на ответ на первый, так что не семенство.
>>1713125 >главное это пиздеть на бордах свои шизотемы Какие, например?
>>1712751 У меня есть работа программистом (к сожалению, гордиться тут нечем, лучше скрывать). Но намного лучше получать деньги более вменяемым способом, а программировать дома в качестве хобби. Как тут кто-то недавно точно подметил, программирование за деньги - это говно. Разница лишь в уровне вонючести, например, программирование в модном проекте на ClojureScript/Elixir лучше, чем пердолинг тырпрайзо-говна в банке/бадишопе на аутстаффе на жабе, но хуже возможности запиливания конкурентно-ориентированных языков с матином-лофом и автоматическим доказательством корректности на деньги налогоплательщиков.
>>1713554 Частично соглашусь, но писать на ФЯ вполне себе можно и это намного комфортней, чем на ОО-языках. Тут скорее зависит от степени упоротости на определенных темах, типа программирования на тайплевеле, ссылочной прозрачности и т.д. так что для программирования времени не остаётся. Тут два варианта. Либо человек изначально не хотел программировать, ему просто нравится манипулирование значками/символами, а в математику, матлингвистику или професиольный компсайнс не смог. Либо второй вариант, человек работает программистом, но так как коммерческое программирование - это тупое и однообразное занятие, а каждая новая задача похожа на предыдущую как две капли воды, то программист, чтоб не помереть со скуки, начинает развлекать себя всякими обобщениями, систематизацией и прочими играми с абстракциями, что сопряжено с поиском новых концепций, выразительных средств и соответсвенно изучению новых языков. Заполучив в руки какой-нибудь хаскель с его богатым внутренним миром, человек начинает в него проваливаться, так как процесс повышения уровня обобщения и формализации - в общем-то бесконечен (когда потенциал хаски будет исчерпан, дальше пойдёт Идрис или любой прувер модный в этом сезоне). При этом обычное рутинное программирование на жабе в лохусофте теперь вызывает ещё большее раздражение, потому что совершенно не подходит для абстрактного мышления, которое теперь ещё и наполнилось новыми понятиями. Раздражение не позволяет нормально работать, а вымешать его надо, поэтому вместо быдлокодинга очередной CRM на работе или абстрактного ассоциативного кластера метапарадигм дома, человек срется на мейлачике рассказывая ОО-индусам и байтоебам что они все быдло, а из языки - говно.
>>1713879 Пруверы - хуюверы. 1)Язык - это инструмент, сами по себе эти пердоли ничего не дают. 2)Сколько не ебись, а вебер, который максимум ходит в бд под нескучными обертками и распределенными роутами из своего модного фреймворка в итоге по соотношению зарплата -> умственные затраты выигрывает. Если хочешь НАУКУ, то надо лезть в программирование в последнюю очередь.
>>1713879 >При этом обычное рутинное программирование на жабе в лохусофте теперь вызывает ещё большее раздражение, потому что совершенно не подходит для абстрактного мышления, которое теперь ещё и наполнилось новыми понятиями. Разве новые понятия не помогают лучше решать старые задачи?
>>1736145 Если программа большая, то сложно уследить, что функциям передаются параметры верных типов. Этого можно избежать, если совершать проверку типа на каждый чих... чем ML автоматически занимается еще на этапе компиляции.
>>1736172 >Если программа большая, то сложно уследить, что функциям передаются параметры верных типов.
Это популярная легенда, которой статико-дебилы пугают друг-друга как бабайкой. Разумеется ничего кроме статико-параши и хеллоу-ворда на питоне они не видели, но легенду нужно поддерживать, чтобы как-то оправдать свой анальное рабство у тайп-чекера.
>чем ML автоматически занимается еще на этапе компиляции. Сейчас бы тащить целую нейронку ради предсказывания типчиков, когда можно обойтись обычным тайп-чекером.
>>1736172 >Если программа большая, то сложно уследить, что функциям передаются параметры верных типов. Зачем за этим следить, если лисповый рантайм делает это за тебя?
>>1736618 >>чем ML автоматически занимается еще на этапе компиляции. >Сейчас бы тащить целую нейронку ради предсказывания типчиков Бля, это очень смешно
ML настолько же потомок Лиспа, насколько C потомок Алгола. Надо учитывать, что в 70-е лисп еще не ассоциировался со скобками. В частности, Маккарти все продолжал планировать реализацию этих чёртовых M-expessions.
В англовикипедии написано про ML (правда, без указания источника)
It has roots in Lisp, and has been characterized as "Lisp with types".
Вот довольно неоднозначная цитата из The Definition of Standard ML
The full definition of this first version of ML was included in a book [19]which describes LCF, the proof system which ML was designed to support.The details of how the proof application exerted an influence on design is reported by Milner [39]. Other early influences were the applicative languages already in use in Artificial Intelligence, principally LISP [36], ISWIM [28] and POP2 [10].
Указанные ISWIN и POP2 находились под сильным влиянием Лиспа.
Немножко оффтоп и идти бы мне в /s/, но я всё равно спрошу. Господа лиспачеры, пользуетесь ли вы емаксом? Просто ну, ну сука ебать, ну бля, ну ебучий елисп, ну что это за хуйня ебаная. Вас самих не выворачивает с того, что он такой ублюдский? И ведь альтернатив нихуя, чтобы дали мне не xterm дрочённый, а lisp-term точённый. Ведь по сути, господа, емакс именно как терминалчик и применяется, ну и как шелл, и к обеим задачам по сути приспособлен ну примерно никак. Ох, как заебись бы было, если бы он был... На портабельность на винду чисто поебать.
> Вас самих не выворачивает с того, что он такой ублюдский? ELISP-то? Ну не фонтан, конечно, но уж точно полущ viml-я или, прости г-ди, json-а, которым конфигурируются хипстерские поделки типа сублима.
Попробуй в Pharo пописать на Smalltalk, там, говорят, всё чудно интегрировано в IDE.
>>1736673 >Но в каком месте эмэль ответвление лиспа - непонятно. Лямбда-выражения. Предпочтение рекурсии над итерацией. Удобная работа со списками. Минимальная необходимость указывать типы. Возможность писать полиморфные функции. Функторы как гигиеничные макросы. Сборка сора.
>>1738218 Функтор возвращает определение, которое зависит от параметров: functor MakeCompiler(structure C:CODEGEN and A:ASSEMBLER) : COMPILER = struct --здесь как-то используются C и A end
Вызов функтора похож на применение макроса: structure X86Compiler = MakeCompiler(structure C = X86Codegen and A = X86Assembler) вместо structure X86Compiler = struct ... X86Codegen ... ... X86Assembler ... end
>>1737909 >Лямбда-выражения. >Предпочтение рекурсии над итерацией. >Удобная работа со списками >Возможность писать полиморфные функции. >Сборка сора Ну так у тебя любой ФЯ будет ответвлением лиспа.
>Возможность писать полиморфные функции. >Сборка сора А это вообще где попало есть.
>Минимальная необходимость указывать типы. Не нужно путать динамическую дрисню и статически типизированный язык с Хиндли-Милнером.
>>1738644 >Ну так у тебя любой ФЯ будет ответвлением лиспа. Для конкретики сравнил ML-и с Lisp-ами. >Не нужно путать динамическую дрисню и статически типизированный язык с Хиндли-Милнером. Ну кстати на уровне реализации ML сохраняет динамическую типизацию: чтобы работал полиморфный =, чтобы отличать [] от nil, и ради GC. >>1738646 Возвращает программу, а не данные.
>>1738644 >Ну так у тебя любой ФЯ будет ответвлением лиспа. На момент 70-х (когда эмель и появился) эти особенности, ныне характерные для ФЯ, были практически эксклюзивными для лиспа. Так что да, получается любой ФЯ является потомков лиспа. Ты ведь читал Recursive Functions of Symbolic Expressions and Their Computation by Machine?
Кстати, а JS очень часто рассматривают как Scheme с алголоподобным синтактисом (да и Питону достается).
>>1737040 > емакс именно как терминалчик и применяется, ну и как шелл что ты несешь? > ебучий елисп, ну что это за хуйня ебаная. Вас самих не выворачивает с того, что он такой ублюдский именно elisp "ублюдский"? Да норм, на самом деле. После CL немного непривычно было. А сейчас, когда есть лексические переменные и CL-совместимые макросы и функции, то вполне
>>1737040 Кстати, если уж так тошнит от elisp (от чего именно? от dynamic scope?), то есть реализации на CL и на Scheme. Но там, конечно, нет такого богатства готового elisp-кода, которое мы так любим
>>1737040 >Господа лиспачеры, пользуетесь ли вы емаксом? Да >Просто ну, ну сука ебать, ну бля, ну ебучий елисп, ну что это за хуйня ебаная >Вас самих не выворачивает с того, что он такой ублюдский? Чому? Кроме перформанса с однопоточностью вопросов не вызывает >И ведь альтернатив нихуя, чтобы дали мне не xterm дрочённый, а lisp-term точённый. Чего? >Ведь по сути, господа, емакс именно как терминалчик и применяется, ну и как шелл, и к обеим задачам по сути приспособлен ну примерно никак Может прxминяться, может не применяться >На портабельность на винду чисто поебать Сосите хуй быдло
Наевшись говна с гринлетами питона и корутинами луа, от функционально-фашисты услышал о континуейшенах, и есть они в трёх с половиной языков включая схемку. Учу схемку чтобы понять как это дерьмо там работает. Будут ли какие-то ещё профиты, кроме лёгкости чтения SICP?
Вариант с нативной компиляцией (так называемый CS) сравнялся по функционалу с вариантом с байткодом. Со следующего релиза уже CS вариант будет основным.
>>1786418 Пишут, что Chez примерно как SBCL при дефолтных оптимизациях. В SBCL можно включить более опасные оптимизации, а в Racket-на-Chez можно критичную часть написать на Typed Racket. Короче, точно сказать трудно, если у тебя есть какие-то бенчмарки, которые можно запустить и на CL и на Racket, можно проверить.
>>1790335 Писал и на SBCL, и на Racket (и на Typed Racket пытался). По моим субъективным ощущениям, Typed Racket не даёт вообще никакого прироста производительности, ну и сам Racket ощутимо медленее SBCL. Плюс проблема даже не в тормознутости самой по себе, а в том, что ты в Racket с ней ничего не можешь поделать, даже понять, отчего тормозит. В CL же у тебя есть disassemble, декларации типов те же, declaim optimize, вот это вот всё. Есть простор для ручной оптимизации, что меня, как бывшего байтоёба, не может не радовать.
>>1790594 Ты не путаешь обычный Racket на байткод-машине с новым на базе Chez Scheme? Меня, если честно, устроит пока если он будет в два-три раза медленнее, чем SBCL на максимальной оптимизации (а похоже, примерно так и будет). Для достаточно нового продукта это неплохо.
>>1790594 Кстати, инструментарий постепенно добавляют: >as for the CS variant of Racket, then it cannot be converted back to an approximation of Racket, but installing the "disassemble" package may enable disassembly of the machine code. Decompilation is mostly useful for checking the compiler’s transformation and optimization of the source program.
>>1790838 > Ты не путаешь обычный Racket на байткод-машине с новым на базе Chez Scheme? Пробовал оба, последний и правда даёт малюсенький прирост производительности.
> the "disassemble" package Хах, пробовал я этот пакет, полнейшая залупа по сравнению с CL-ным disassemble. Последний тебе выводит подробнейшую информацию, какая константа что обозначала в исходном коде, какие имена функций, чокаво. Тот рэкетовский третьесторонний пакет тебе просто вываливает машкоды без всяких пояснений, и поди разберись, за что в твоём коде отвечает инструкция call 123456.
>>1791902 Интерфейс чуть более удобный, всё-таки не текстовый емаксовкий буфер, может и графы рисовать, и вложенные структуры разворачивать. Ну и есть возможность наблюдать изменения в реальном времени. В остальном тот же слайм-инспектор
Как не крути, но `x => y => x + y` выглядит намного лучше, красивее, короче, незахломленннее, однострочнее, чем `(lambda (x) (lambda (y) (+ x y)))`. А ведь я ещё не привёл банальные примеры с map/reduce, которые легко пишутся в одну строчку, и только в лиспах придётся писать в несколько строк.
Серьёзно, (lambda x (y x)) это такое же уродство как и function(x){return y(x)} и признак говнокода.
>>1799172 Зато в лиспе не нужен сложный парсер, а ГОМОИКОННОСТЬ позволяет делать макрорасширения на коленке. А ещё не нужно помнить приоритеты операций. Как я тебя уел, а?
>>1799172 >банальные примеры с map/reduce, которые легко пишутся в одну строчку, и только в лиспах придётся писать в несколько строк. Ты просто не умеешь их готовить. (defun sum-digits (number &optional (radix 10)) (reduce #'+ number :key #`(digit-char-p % radix))
>>1608098 риторика слабовата. -Хилти дорого пиздец -Да конечно епта заказ и без Хилти можно сделать, но все же понимают, что это халтурка будет. Кто себя ценит, всегда нанимает только бригаду с Хилти. - Чем больше людей считает, что я не прав, тем выше вероятность, что они все ошибаются. Ну, чисто математически же. - Поэтому и с лиспом так же.
Ваще ахуеть красава. У лиспа смотрю и евангелисты ахуенные. Срочно начинаю изучать этот богоязык. В пизду мейнстрим.
>>1799172 >x => y => x + y >(fn [x y] (+ x y)) >#(+ %1 %2) >+ ты привел очень тупой пример, кстати; в общем случае графический partial application работает чуть лучше, чем его хаскеллевские аналоги
В схемке кстати (λ (x y) (+ x y)) тоже норм выглядит.
>А ведь я ещё не привёл банальные примеры с map/reduce, которые легко пишутся в одну строчку, и только в лиспах придётся писать в несколько строк. Бред какой. Это как раз в х-ле по традиции пишут трансформации в уебищном обратном порядке, тогда как в кложе (ну и окамле с его |>) все заебись: (-> foo (map f) (filter g?) (reduce h))
И да, любой нормальный человек форматирует этот код так, чтобы каждый шаг был на отдельной строке, потому что так читать проще (капитан очевидность).
>признак говнокода Понятие "говнокод" относится к абстрактной структуре кода, а не к используемому синтаксису. Короче юнец еще ожидающий возмужания ты, десу.
>>1790335 >Пишут, что Chez примерно как SBCL при дефолтных оптимизациях. Преувеличивают. Понадобилось вот распарсить 20гб xml, решил сравнить лисповые s-xml, cxml и ракетовский sxml. Первый на моём тостере парсит ~24мб/с, второй - ~38-42мб/с, а ракета едва до 2мб/с разгоняется.
>>1810294 >>Пишут, что Chez примерно как SBCL при дефолтных оптимизациях. >Преувеличивают. Понадобилось вот распарсить 20гб xml, решил сравнить лисповые s-xml, cxml и ракетовский sxml. С дефолтными, а не максимальными. А cxml не только на максимум, но и вообще вручную злоебуче оптимизирован. Они даже строки свои написали! ("rods" у них называются). Впрочем, xml в ракете это вообще какое-то говно, что меня очень удивило. Некоторое время назад надо было что-то большое парсануть, вообще не нашел ничего рабочего. Либо безумно медленно, либо не поддерживает namespaces, либо еще что.
надо делать текстовый редактор на common lisp, но чттбы работал не только с абстракцией ьекста и гуи, но и имел доступ к битмапу фрейма, что позволило бы динамически отрисовывать графики, сложные формулы, вообще любую гиафику.. вот это было бы круто
Есть тут знатоки метаобъектного протокола? https://github.com/fukamachi/mito/blob/master/src/core/class/table.lisp#L59 Наткнулся на такую проблемку. Та функция вызывается в момент инициализации класса, представляющего таблицу бд, ищет слоты, которые ссылаются на объекты других таблиц, и на каждый из них добавляет по вспомогательному с внешним ключом. Например, (defclass dir () __((name :col-type (:varchar 255)) ___(parent :col-type (or :null dir))) __(:metaclass dao-class)) должен добавиться слот parent-id (${slot-name}-${primary-key-name}) Проблема в том, что если слот ссылается на свой же класс или ещё не определённый, то вылетает ошибка, о чем, собственно, комментарий в коде и гласит. Идиоматично ли добавление слотов на стадии финализации класса? В какой метод это разумнее перенести: finalize-inheritance, compute-slots, compute-effective-slot-definition или другой?
>>1813680 >С дефолтными, а не максимальными. s-xml довольно бесхитростно написан >xml в ракете это вообще какое-то говно По-моему, в ракете со всем так. Который раз уже намереваюсь на ней писать, и постоянно всё упирается в отсутствие или непригодность библиотек. >>1817070 Мне их не вытащить нужно было, а перегнать в БД
>>1821053 >s-xml довольно бесхитростно написан S-xml или cxml? s-xml действительно бесхитростен, но он еще примитивнее того, что есть в ракете. CXML это мощнейшая хрень, но там такая ручная оптимизация, что яебу такое писать.
>>1875599 Ты пойми, мир сдвинулся. В результате страшной катастрофы были уничтожены практически все живые существа, а выжившие давали ужасное, поразительное в своей омерзительности, потомство. Большинство умирало, 90% первого поколения были бесплодны. Но в результате жутких мутаций стало возможно межвидовое скрещивание. Из-за множественного наследования здесь можно встретить кошмарных существ: программист С++ с телом рыбы и хуем слона, труп страуса с китовым усом вместо глаз, джигурду в малиновой юбке, выдающего себя за тайскую шлюху. Здесь царят хаос и ужас с тех пор как радиоактивная пыль скрыла землю от солнца в 1983 году. Потом, когда в 1998 решили снять режим глобальной катастрофы, человечество было уже мертво, потому были законодательно закреплены права новых существ. Организмы практически избежавшие мутаций были уравнены в правах с разлагающимися на глазах и истекающими слизью трупоедами и с хищными растениями. Ты представляешь всю безысходность этого мира? Но даже здесь можно видеть лучик надежды. Существа сохранившие глаза и осколки разума тянулись, как цветы с солнцу, к Роланду Дискейну Хаскеллу Карри и его небольшому отряду: Сюзанне Алонзо Чорчу и Джону Маккарти, которые устало брели через эти пустоши. Они были стрелками функциональщиками. Путники несли порядок и знания именем рода Эльда Теории Категорий. Существа хватались за эти крупицы, неловко пытались рисовать своими шупользеподобными руками стрелки на зеленом песке, они получали квадратные скобки вместо круглых, они хотели чистоты, но лишь продолжали пачкать и без того грязные руки. Маленький отряд уходил. Хаскеллу было невыносимо больно видеть страдания этих существ, он знал, что несет ответственность. Но уходил, ведь его неудержимо тянуло к Башне. Он знал, что Бьёрн ждет его там. И там должно было все решится. Из-за Бьерна мертв Денис. Из-за Бьерна мир сдвинулся. Хаскел шел вперед, хоть и не знал, чем это закончится, но два аппликативных функтора приятной тяжестью на поясе давали уверенность, что это лучи не будут разрушены...
https://en.wikipedia.org/wiki/Stalin_(Scheme_implementation) >STALIN often generates code that outperforms handwritten C and Fortran code > The compiler does lifetime analysis and hence does not generate as much garbage as might be expected Если это такой мощный компилятор, то почему его никто не развивает?
>>1880209 Он заброшен автором полтора десятка лет назад, а в его исходниках трудно разобраться кому-либо, кроме автора, потому что он из академии и пишет очень академический код. Но так-то да, из всех схемных компиляторов он до сих пор где-то в топ 3 по быстродействию, несмотря на то, что нихуя не поддерживает фичи из новых стандартов. Автор из (((этих))), кстати, отсюда и название.
>>1880327 В его работу я пока не вчитывался, а только проглядел по диагонали, но, кажется, он всё достаточно подробно и внятно изложил. Вообще, для меня до сих пор загадка, почему для такого простого языка, который будто кроился под обкатывание передовых идей области компиляторостроения, за почти полвека так и не появилось ни одной нормальной реализации. >Автор из (((этих))), кстати, отсюда и название. Коммунист?!
>>1880546 Ну б-г тебе в помощь. Вот тебе еще статья Грэма с референсами на некоторые передовые и до сих пор непревзойденные вещи в области лиспового компиляторостроения: http://www.paulgraham.com/thist.html На самом деле, я сам бы хотел этим заняться, но платить за это, по крайней мере сразу, никто не будет, а кушать хочется, вот и продолжаю уныло веслать.
>Автор из (((этих))), кстати, отсюда и название. Коммунист?! Еврей же.
>>1881046 >На самом деле, я сам бы хотел этим заняться, но платить за это, по крайней мере сразу, никто не будет, а кушать хочется, вот и продолжаю уныло веслать. Да уж. За интересное никогда не платят. Я нагрёб себе на месяцев 10 гречки(сука, греча уже на вес золота) пшенки с хуйцами, теперь могу побыть свободным человеком.
>>1880546 Еще такой аргумент вброшу: при динамической типизации ты почти всегда будешь утыкаться по производительности в (ан)боксинг, если только не навернул продвинутый gradual typing, как в CL, но в R*RS такого, конечно, нету, минимализм во все поля.
>>1881171 > Я нагрёб себе на месяцев 10 Смотри, сбережения утекают быстро. А вообще завидую.
>>1881612 Ну, я отложил из расчёта 15 на месяц, потому что больше никогда не тратил (если не считать разовых крупных покупок). Такой потолок позволяет не считать расходов, плюс остаётся порядка 4х тысяч, которые пойдут на месяц-полтора до первого заработка.
>>1882226 Сейчас всё дорожает - просто пиздец. И это только начало. А тебя какой-то очень минимальный лимит. Так что, мне кажется, 6 мес. было бы более реалистичной цифрой.
Тут ещё надо понимать, что 10 мес - это будет следующий октябрь. Не лучшее время для поисков работы. Если к тому времени вообще будет работа. Лучше - весна.
>>1882312 >А тебя какой-то очень минимальный лимит. Это с запасом. У меня расходы скромные: интернет, счетчики да простые продукты (мука, крупы, овощи и т.д.). >Лучше - весна. Не, не лучше. Всрать лето на галеру никак не хочется.
Я что-то пёзнулся посреди ночи Как по-человековому сделать репликейт (копирование строки N раз) в elisp'e? Реплекейтить нужно много, в первом приоритете перформанс, общелисповые штуки исполььзовать не очень хочу (по крайней мере если они не дадут пару штук перформанса)
>>1901248 Можно предположить, что наиболее быстрый способ такой же, как в общелиспе — with-output-to-string. Или with-output-to-temp-buffer, если конечная строка должна получиться очень большой.
Да блин блять что в емаксе на сегодня считается мейнстримом для ui? Хочу простенько дергать апишки новости там какие-нибудь, курсы валют, харкач, нужны какие-нибудь универсальные формочки\лейату Искоробочные тейблы это совсем атас какой-то, стайлинг текста через enriched (что по совпадению идеально подходит под борды) почему-то ругается на какой-то фонт лок, имежи распердоливают высоту строки соответственно своей (их вообще можно как-нибудь вставить с рассчетом на несколько строк?) Маркдаунские либы не очень подходят, для чего-то они получаются оверкиллом, для чего-то не хватает (манипуляций с имагами, например). тащить что-то большое для таких базовых задач не хотелось бы Уже несколько вечеров ковыряю апишки, по итогу по делу ничего не написав, лол
>>1911707 Спасибо, а я сам так и не понял на чем надо писать, в задании на одной строке написано CLIPS, на следующией CLISP >neq ?x ?y Пытался так, не работало, может я тупо по синтаксису неправильно писал, я решил что надо в defrule одним из правил это указать, т.к правило срабатывает только если все эти функции возвращают тру. Но так жаловался компилятор или что там собирает код на этом языке. В итоге запилил что-то типа такого: (tparent (parentname ?f) (childname ?p&~?x)) , опять же не совсем вник как работает, но вроде как "p, но не x"
>>1911832 >в задании на одной строке написано CLIPS, на следующией CLISP CLISP - реализация общелиспа, CLIPS - среда разработки экспертных систем со своим собственным лиспоподобным языком. >Пытался так, не работало ><conditional-element> ::= <pattern-CE> | <assigned-pattern-CE> | <not-CE> | <and-CE> | <or-CE> | <logical-CE> | <test-CE> | <exists-CE> | <forall-CE> ><test-CE> ::= (test <function-call>) Видимо, нужно писать (test (neq ?x ?y))