LINUX.ORG.RU
решено ФорумTalks

Lisp и современность

 , ,


0

4

Привет, ЛОР.
Создал тему не срача ради, а потому что действительно хочется разобраться.
Уже которую неделю ковыряю emacs с его elisp-ом и параллельно читаю околопопсовые статьи по машинному обучению и, собственно, возник вопрос, а почему современная индустрия машинного обучения использует python, а не lisp? Ведь, если мне не изменяет память, lisp довольно продолжительное время удерживал первенство в этой сфере, особенно в области символического искусственного интеллекта и области экспертных систем. Но, видимо, после прошлой «AI winter» что-то изменилось и я не могу понять что именно. Были ли это причины, связанные с самим языком или «просто так получилось»?

Теперь немного наброса(куда же без этого). Можете пропустить эту часть.
Расскажите о ПО, написанном, на lisp-е, которое вы используете. Лично для меня это: emacs и иногда maxima.
Ну и хотелось бы услышать ваше мнение о перспективах lisp в будущем, страричку пора на покой или у него еще появится возможность проявить себя?


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

вместо «два плюс два равно четыре» приходилось говорить «два человека плюс два человека равно четыре человека», «пара овец плюс пара овец равно четвёрка овец» и т.д.

Статически типизированная арифметика, ой-вей. Не даёт складывать гусей с апельсинами.

попробуй в таких условиях донести идею умножения

Выход есть — надо параметризовать типы!

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

Попробуй, покажи, что получится

Мне как-то недавно книжка попалась, «ML без математики». Там формулы таки есть, но в духе такого

              масса на квадрат скорости
энергия это           поделить
                      пополам

Как видишь, структура решает, а не значки.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от monk

потом еще и функции обработки для second-animal-species небось надо отдельные: map-species, fold-species, sort-species

Зачем — там же всё из списков состоит, даже небо, д, а для них это всё уже есть.

Вот если какую-то новую структуру данных запилить, то да. В святом лишпе придётся городить my-awesome-new-structure-{filter,map,reduce}, потомушо всё крутится вокруг и всё реализовано в терминах конкретной структуры данных — списка. В то время как в неправославной кложе все эти функции изначально оперируют абстракцией — последовательностью (sequence), и чтобы твоя новая структура данных фильтровалась/мапилась/редьюсилась, надо просто научить её превращаться в последовательность.

Nervous ★★★★★
()
Ответ на: комментарий от no-such-file

Тривиальное утверждение можно и фонетикой. А вот что-то типа гипергеометричекого уравнения или лагранжиана для чего-то нетривиального уже никак.

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

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

Вот если какую-то новую структуру данных запилить, то да.
Нивхурил, очень сложна.

Деревья.

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

Зачем — там же всё из списков состоит, даже небо, д, а для них это всё уже есть.

Вот поэтому и second-animal-species не нужна. Потому что это список, а для них уже всё есть. В данном случае cdadr.

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

Вот поэтому и second-animal-species не нужна. Потому что это список, а для них уже всё есть. В данном случае cdadr.

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

К тому же на самом деле и cdadr тоже не нужен, потому что уже есть (comp rest first rest) (и любые другие комбинации).

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

Правда сам Racket рассматривает вариант перейти на синтаксис без скобочек.

Ну правильно, скобчатая мудянка не нужна.

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

animal-species не нужна. Потому что это список, а для них уже всё есть. В данном случае cdadr

Ты действительно считаешь, что можно не изолировать семантику предметной области от деталей реализации этой семантики в конкретной кодовой базе?

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

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

Manhunt ★★★★★
()

Самая большая проблема лиспа в том, что писать на нём нормально можно только в емаксе, а емакс для новичка – это просто ад и холокост. Особенно если этот нуб не знает лиспа и особенно до появления фреймворков типа Doom Emacs или Spacemacs.

А, ну и да, лисперы почему-то поголовно токсичные мудаки, с которыми просто не слишком хочется общаться. Я помню, тут была пара нормальных лисперов типа @marsijanin или @stassats, но они куда-то все делись :(

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Матанализ Эйлера. Адьян «Проблема Бернсайда и тождества в группах». Маслов «Асимптотические методы и теория возмущений». Видите ли, фразы вида «Асимптотика интегралов, стоящих в правой части равенства (3.16), легко считается методом Лапласа, если стационарные точки фазы невырождены» скорее относятся к математическим выражениям, нежели к естественному языку, а естественные фразы «необходимо и достаточно», «для любого неотрицательного e» и т.п. пишутся не математическими закорючками вовсе не для ясности, а для объёма.

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

А, ну и да, лисперы почему-то поголовно токсичные мудаки

Это защитная реакция на «аряря, килограмм скобок отсыпь»

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

Самая большая проблема лиспа в том, что писать на нём нормально можно только в емаксе, а емакс для новичка – это просто ад и холокост

Это только первые полгода, потом станет легче.

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

Это только первые полгода, потом станет легче.

Щас бы полгода мёртвые технологии поизучать.

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

Щас бы полгода мёртвые технологии поизучать.

Ну некоторым приходится и всю жизнь «мертвые» технологии изучать: мертвого бояться - Некрономикон не читать! :)

ЗЫ. Взял Woo как раз для пет-проекта на SBCL (попытка с Raku не удалась…)

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

@Ygor! Вызвал таки!

мертвого бояться - Некрономикон не читать! :)

Крипто, крипто от Нила!

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

Щас бы полгода мёртвые технологии поизучать.

Какие такие мёртвые? Приведи список, балаболишка.

hh.ru 1 вакансия «emacs» + 11 вакансий «lisp»

hh.ru 47 вакансий «vscode» + 50 вакансий «vs code»

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

скорее относятся к математическим выражениям

Только у поехавших. Один рассказывает что формулы это иероглифы, другой русский язык причисляет к математическим выражениям. У вас там весеннее обострение что ли? А может всё проще, и вы обосрались но боитесь признаться?

no-such-file ★★★★★
()
Ответ на: комментарий от hateyoufeel

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

Толерантно-деликатно… Может ты лиспер? Латентный.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от Nervous

Статически типизированная арифметика, ой-вей. Не даёт складывать гусей с апельсинами.

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

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

А как это относится к технологиям? Давай, рассказывай. А то, понимаешь, тут от CL в C#12 впихивают под соусом «как это круто», а ты пишешь про «мёртвые». А что живое? Если с мёртвыми у тебя не складывается (понимаю, инфы то нет), то давай пару живых.

masterOf
()
Ответ на: комментарий от no-such-file

другой русский язык причисляет к математическим выражениям

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

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

Для прикладного погромиста это не просто список, а список жывотных в зоопарке, а у жывотного есть свой интерфейс.

Ага: map-species, fold-species, sort-species, …

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

Ты действительно считаешь, что можно не изолировать семантику предметной области от деталей реализации этой семантики в конкретной кодовой базе?

Так я и пишу, что надо тогда делать: map-species, fold-species, sort-species, …

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

Это вы с лавсанчиком друг дружке наяривайте.

Не знал, что Лавсан контибутит в Dotnet. Спасибо. Буду теперь ссылаться на тебя, дурашку.

Вот одна из реализаций «мёртвых» технологий

Приятно, что ты технологии в деньгах определяешь. Срочно нужно твоё экспертное мнение! Плюсы или Сишка, мертвы?

masterOf
()

использует python, а не lisp?

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

опять-же в Лисп надо думать, а 99% того как пишут на Питоне можно подсмотреть в чат-гпт

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

Даже в научной среде уже во всю используется python/julia/R, но лиспа, если это софт не из 20 века, за весь свой скромный опыт никогда не видел.

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

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

опять-же в Лисп надо думать, а 99% того как пишут на Питоне можно подсмотреть в чат-гпт

Т.е кроме «думанья» над задачей, нужно ещё и над языком упарываться?

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

Ага: map-species, fold-species, sort-species,

Неа, жывотное представлено ассоциативной структурой данных — так что create-animal, animal-name, animal-species, …

А список — он и в Африке список, хоть жывотных, хоть кого. Обычныx filter/map/reduce достаточно (которые работают со списком через его интерфейс, а их функции-аргументы работают с каждым жывотным через его интерфейс).

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

Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 3)
Ответ на: комментарий от Shadow

Говно а не интерфейс. Питон не ложится на эту предметную область.

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

Единственный смысл существования Питона там - это синдром утенка. Люди выучили эту срань в шараге, и потом ничего нового учить уже не хотят и не могут(потому что тупые), поэтому везде его и суют.

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

Для Питона есть

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

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

Про вот это вот бешеное количество, не надо мне заливать. У Питона все плохо даже с вебом. Все вот эти библиотеки и фреймворки, в подавляющем своем большинстве - абсолютно всратое неюзабельное дерьмо.

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

Мне лисп нравится в принципе, но на нем из-за слабой экосистемы просто не рационально начинать проект.

Все там есть, что надо. А с моей библиотекой, у лиспа есть доступ к инфраструктуре дотнета. (а у ABCL, скажем - к Java; к тому же еще и существуют библиотеки для вызова того же питона)

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

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

Так это ты решил, что подсписки = объекты. Может быть это списки квартир, сгруппированные по подъездам. И cdadr даст нам квартиры второго подъезда кроме первого этажа.

Или ученики, сгруппированные по классам. Или какое-нибудь дерево.

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

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

Может они и за лямбды проклянут тогда? А может с такими товарищами лучше и вовсе не работать?

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

опять-же в Лисп надо думать, а 99% того как пишут на Питоне можно подсмотреть в чат-гпт

Собственно, а что мешает написать программу на питоне на лиспе? Совершенно не вижу этому препятствий.

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

Может быть это списки квартир, сгруппированные по подъездам. И cdadr даст нам квартиры второго подъезда кроме первого этажа

Если спрятать кададр в реализации, скажем, одной из функций публичного интерфейса сущности Дом (внутри которой ехал список через список) — то, может, и сойдёт. Если он не будет лазить внутрь других сущностей мимо их интерфейсов.

Или какое-нибудь дерево

Дерево состоит из узлов, у которых есть свой интерфейс. Лазить кададрами по узлам мимо него — не есть хорошо.

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

Может они и за лямбды проклянут тогда? А может с такими товарищами лучше и вовсе не работать?

С товарищами, которые превращают любой код в лапшу из кададров — наверное, и правда не стоит.

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

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

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

скажем, одной из функций публичного интерфейса сущности Дом (внутри которой ехал список через список)

И обрабатывать подъезды дома через house-map, house-filter, …? Если мы не хотим открывать, что внутри дома список хранится.

Дерево состоит из узлов, у которых есть свой интерфейс. Лазить кададрами по узлам мимо него — не есть хорошо.

Так это и есть его интерфейс. car = левая ветвь, cdr = правая. cadadr = левая ветвь правой ветви левой ветви правой ветви. Какой тебе ещё интерфейс дереву, у которого каждый узел только две ветви имеет, нужен?

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

Вы просто занимаетесь ментальной гимнастикой

Работа такая.

скучно

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

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

обрабатывать подъезды дома через house-map, house-filter, …?

Шланговать изволите, милостивый государь. (map process-entrance (house-entrances a-house)). А process-entrance использует интерфейс сущности Entrance (что там у неё — create-entrance для создания нового подъезда, entrance-apartments для получения списка квартир, …).

Никаких кададров отчего-то не требуется.

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

И зачем псевдо функции

(defun house-entrances (a-house) a-house)
(defun entrance-apartments (an-entrance) an-entrance)

?

Чтобы вместо (cadadr a-house) писать

(cadr
  (entrance-apartments 
    (cadr
      (house-entrances a-house))))

?

Это точно читаемее?

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

Так это и есть его интерфейс. car = левая ветвь, cdr = правая.

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

cadadr = левая ветвь правой ветви левой ветви правой ветви.

Того не легче.

Какой тебе ещё интерфейс дереву, у которого каждый узел только две ветви имеет, нужен?

Ну, например, create-binary-tree, left-branch, right-branch. В терминах этих функций уже можно реализовать add, remove и find.

Какие кары? Какие кададры? Какое они имеют отношение к бинарным деревьям как таковым?

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

По названиям функций вообще ни хрена не понятно, что они делают.

Понятно. Это традиция, освящённая десятилетиями. Также как printf, strcat и strcpy.

Ну, например, create-binary-tree, left-branch, right-branch. В терминах этих функций уже можно реализовать add, remove и find.

В clojure тоже начинаешь с того, что делаешь обёртки subvector, trim-right, trim-left, source-function, print-stack-trace …? Ведь triml, pst и source-fn «по названиям функций вообще ни хрена не понятно, что они делают».

monk ★★★★★
()

Ну и хотелось бы услышать ваше мнение о перспективах lisp в будущем

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

FishHook
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)