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

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

 , ,


0

4

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

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


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

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

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

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

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

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

В Racket/swindle есть. Или Racket это лисп?

Также, в CL самая вменяемая опциональная типизация из всех что есть в динамических и полудинамических языках.

В Racket лучше. В CL ни зависимых типов ни даже типов элементов коллекций (кроме массивов).

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

Зависит от задачи: https://benchmarksgame-team.pages.debian.net/benchmarksgame/performance/pidigits.html

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

Это тоже есть как минимум у Racket и питона.

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

Письмо иероглифами туда же (для каждого слова свой значок).

Не для каждого слова, а для каждого понятия (корня?). И математики тоже предпочитают писать иероглифами (+, -, ÷, ∝, …), а не словами. Так что здесь спорно, что считать более примитивным.

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

В CL ни зависимых типов ни даже типов элементов коллекций (кроме массивов).

Так в CL типы не ради контрактов, а для оптимизации по-месту.

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

Не для каждого слова, а для каждого понятия (корня?)

Это уже современные веяния. Ты ещё хирагану притащи. Изначально картинка = слово.

математики тоже предпочитают писать иероглифами

Ты не путай. Это просто сокращения, а вообще любая книжка по математике написана обычным текстом.

no-such-file ★★★★★
()

Потому что numpy. Машинное обучение - это матричная алгебра и автоматизированный матанализ. И главное тут - простота возни с матрицами.

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

Это уже современные веяния.

Нет. Просто понятие «слово» растяжимое. «ЭВМ» — это одно слово или три?

Это просто сокращения, а вообще любая книжка по математике написана обычным текстом.

Приведёшь хоть один пример, где более-менее сложная формула (типа гипергеометрической функции) описана обычным текстом? А только потом используется алгебраическая запись «для сокращения».

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

Кстати, цифры тоже иероглифы. И смайлики. И юникодные эмодзи.

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

это одно слово или три?

Одно.

Кстати, цифры тоже иероглифы. И смайлики. И юникодные эмодзи.

Цифры это сокращённая запись. Смайлики да, иероглифы. Тупеет народ. Что сказать-то хотел?

Приведёшь хоть один пример

В любой нормальной книжке сначала идёт куча текста с обсуждением, а уже потом формула.

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

Зато надо создавать по функции на каждую предметную область

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

Кададры — это просто строительный материал для таких интерфейсов, костылики для случаев, когда нижележащая структура данных собрана из списков. В кложе, кстати, тоже зайчатки чего-то подобного есть, типа ffirst — но в общем случае проще никак (comp rest first rest) не называть, а просто использовать его как есть в определениях доменных функций.

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

Одно.

Вот слова из нескольких иероглифов так и строятся. Даже в веньяне. Например, 石工 = каменщик, где 石 = камень, а 工 = работа.

Цифры это сокращённая запись.

Как и любые иероглифы.

Что сказать-то хотел?

Что иероглифы эффективнее. Переход от иероглифической записи к фонетической во Вьетнаме и Корее аргументировался как раз, что «тупеет народ». В смысле, надо, чтобы самый тупой тоже мог понять написанное и что-то написать.

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

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

пример, где более-менее сложная формула (типа гипергеометрической функции) описана обычным текстом?

Любая сложная формула – следствие ленивости математиков, для краткости заменяющих слова иноземными буквицами и загогулинами, например, словесное толкование уравнения Шредингера ©.

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

Что проще прочитать:

(letrec ((is-even? (lambda (n)
                     (or (zero? n)
                         (is-odd? (sub1 n)))))
         (is-odd? (lambda (n)
                    (and (not (zero? n))
                         (is-even? (sub1 n))))))
  (is-odd? 11))

или

пусть ()
  чётное? n =
    ноль? n || нечётное? (n - 1)
  нечётное? n =
    не ноль?(n) && чётное? (n - 1)
  нечётное? 11

?

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

Что иероглифы эффективнее

В чём? Задача письменности перенести речь на бумагу и обратно. Иероглифы это самый тупой и примитивный способ. Слоговое/алфавитное письмо гораздо эффективнее, т.к. его легко выучить и не нужно даже знать значение слов, чтобы их записывать, или читать.

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

Нет, нельзя. Это кажущаяся «глубина». Так же как поставить смайлик, или клоуна. Людям кажется что это как бы передаёт весь спектр эмоций, что даже не выразить словами. На самом деле люди просто не умеют выразить это словами. А что конкретно имел в виду поставивший смайлик человек можно только догадываться.

Например, 石工 = каменщик, где 石 = камень, а 工 = работа.

И почему это должно значить «каменщик», а не «скульптор» например? Я как это должен из записи узнать? Никак, я просто должен запомнить слово целиком, как единый иероглиф. Смысл отдельных корней может только помочь в запоминании, но самостоятельно для понимания письма это не работает.

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

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

По ссылке не нашёл такового. А так надеялся…

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

По ссылке не нашёл такового. А так надеялся…

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

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

В чём? Задача письменности перенести речь на бумагу и обратно.

Нет. Задача письменности передать знания следующим поколениям. Алфавитным письмом крайне сложно описать нетривиальный закон физики или сложный механизм.

Нет, нельзя. Это кажущаяся «глубина».

Можно фонетически написать: «если есть некоторое количество независимых стандартных нормальных величин, то распределение величины, равной отношению первой величины к корню из суммы квадратов остальных величин, делённой на количество остальных величин, называется распределением Стьюдента с количеством степеней свободы, равном количеству величин». Это даже можно попытаться понять, хотя большинству придётся перечитать фразу несколько раз.

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

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

Текстовые определения между ними не заменяют формулы. Если из текста выкинуть формулы, то останутся только связки:

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

   — постоянная Планка; — масса частицы,  — внешняя по отношению к частице потенциальная энергия в точке — 
оператор Лапласа (или лапласиан), эквивалентен квадрату оператора набла, и в частном случае декартовых координат, имеет вид:

Сможете собрать уравнение Шредингера из этого текста?

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

Сможете собрать уравнение Шредингера из этого текста?

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

Дополнение, пример иерархического усложнения текстового закона:

Закон Гука — «деформация, возникающая в упругом теле, прямо пропорциональна силе упругости, возникающей в этом теле.»
… вводятся краткие обозначения тензоров (9 компонент, 81 коэффициент)
… получаем обобщённый закон Гука ©.

Это-ж для классического текста никакой бумаги не хватит! :)

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

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

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

Задача письменности передать знания следующим поколениям

Это побочный эффект фиксирования речи на каком-то носителе.

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

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

Ты же сам сказал «символического искусственного интеллекта». Для него Lisp годится, а для совремённых нейросетей (операций с матрицами, векторами, тензорами, их дифференцирование и всё такое) тоже, наверное, можно было бы приспособить, почему нет? Но питон в какой-то момент показался проще для этих целей. Как обвязка, естественно. Математические операции написаны в итоге на C++, если не ошибаюсь.

В принципе, наиболее популярный сейчас фреймворк для нейросетей - PyTorch - изначально был написан на Lua. А Lua - это как бы в некотором роде лисп с сахаром.

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

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

Мой вывод прямо противоположный. Неправильности и нерегулярности это остатки былой роскоши. Избыточные слова упрощают общение. Если вы занимаетесь птицеводством, то вам удобнее говорить: „курица“ и „цыплёнок“, нежели „самка петуха“ и „детёныш петуха“. То же самое, если живёшь большой семьёй, то удобнее располагать расширенной терминологией: „деверь“, „сват“, „кум“, „тёща“, нежели каждый раз давать универсальное описание „брат жены сына двоюродной сестры отца“.

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

В бидоне есть, например, if-then-else, впервые появившийся в лиспе. Так что про «и близко нет» это несколько не соответствует действительности :)

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

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

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

Ту же самую фразу можно переписать в виде формулы, заменив значки на слова и будет даже более понятно, потому что не нужно знать значения значков

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

Это побочный эффект фиксирования речи на каком-то носителе

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

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

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

каждый раз давать универсальное описание „брат жены сына двоюродной сестры отца“.

Можно было придумать единую короткую классификацию по образцу лисповых кададров.

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

Можно было придумать единую короткую классификацию по образцу лисповых кададров.

Уже придумали, слава Роботам! :)

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

У какого языка проще синтаксис

У лиспа. Ещё проще — уже некуда.

и куда проще вкатиться человеку, который вообще не видел в глаза никаких ЯП вообще

В Python.


Получаем два разных ответа. Какой из них важнее в итоге? Видимо, на практике второй.

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

У лиспа. Ещё проще — уже некуда.

Ещё есть форт и брейнфак.

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

В Racket/swindle есть. Или Racket это лисп? Нет, там этого нет. И интерактивности в Racket не больше чем в Haskell.

В Racket лучше. В CL ни зависимых типов ни даже типов элементов коллекций (кроме массивов).

Нет, то что там есть это говно полное. Даже typed racket. Это уже обсосано тысячу раз на /r/Lisp

Оно не дотягивает до SBCL итп.

В CL, между тем, есть даже полноценный хиндли-милнер, при желании, подключаемый как бибилиотека - Coalton

Зависит от задачи: https://benchmarksgame-team.pages.debian.net/benchmarksgame/performance/pidigits.html

Нет, не зависит от задачи. FFI и сишные либы можно и из CL использовать.

Это тоже есть как минимум у Racket и питона.

Это совершенно не то, и это говно.

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

Контракты тоже могут помогать соблюдать, особенно в SBCL и схожих реализациях, где мощный вывод типов при компиляции

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

У лиспа. Ещё проще — уже некуда.

Напиши мне грамматику для backquote

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

Это просто сокращения, а вообще любая книжка по математике написана обычным текстом.

Как чистый математик, два раза ха-ха. Любая книжка по математике, кроме учебников, написана математическими выражениями, а «обычный текст» занимает примерно 10 предложений на главу.

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

И интерактивности в Racket не больше чем в Haskell.

Да. Racket я про CLOS имел в виду, а не про интерактивность.

Интерактивность сравнимая с CL есть в Smalltalk.

подключаемый как бибилиотека - Coalton

Благодарю.

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

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

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

В смысле миссионеры, племена? Учебник арифметики открой, например Кисилёва. Числа предметные (5 яблок), числа отвлечённые (5). Отдельно даются правила сложение/вычитания/деления/умножения для одних, потом для других. Деление предметных на отвлечённые, предметных на предметные и т.д.

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

Что проще прочитать

Прочитать одинаково просто — и то, и то обычный текст.

А вот насколько легко прочитанное интерпретировать — это уже зависит от интерпретатора. Мне, например, легче понять первое.

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

И математики тоже предпочитают писать иероглифами (+, -, ÷, ∝, …), а не словами.

Евклид вышел из чата.

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

В смысле миссионеры, племена?

У тех туземцев не было понятия отвлечённых чисел. Вот как у нас есть слова косяк, стая, стадо, … . Так у них для каждой группы предметов свои числительные. И просто числительного без группы нет. То есть вместо «два плюс два равно четыре» приходилось говорить «два человека плюс два человека равно четыре человека», «пара овец плюс пара овец равно четвёрка овец» и т.д. И попробуй в таких условиях донести идею умножения…

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

Мне, например, легче понять первое.

Благодарю! Вопрос был именно про это.

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

У какого языка проще синтаксис и куда проще вкатиться человеку, который вообще не видел в глаза никаких ЯП вообще

Вот например R в машинке сильно устает по популярности, хотя больше подходит под описание.

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

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

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

Нет. Туземцы те, у кого хвост головы хвоста называется для каждого типа элементов по-своему.

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

monk ★★★★★
()

символического искусственного интеллекта

Он не взлетел. Даже основатель Wolfram Mathematica писал, что видит дальнейший путь своей недостроеной вавилонской башни в связке с LLM в качестве фронтэнда.

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

Питон там обертка сверху.

Но почему-то не лисп. Для Питона есть бешеное количество разных библиотек, фреймворков, а для машинного обучения (нейросетей) целые сообщества вроде https://huggingface.co/ с готовыми моделями.

Целая экосистема, которой для Lisp нет и вряд ли будет и которой воспользоваться из под лиспов затруднительно, а главное не совсем понятно зачем.

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

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

Любая книжка по математике, кроме учебников, написана математическими выражениями

Например какая? Справочники исключаем.

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