LINUX.ORG.RU

Lisp в индустрии

 , , , ,


3

6

Всем привет. Время от времени такие топики возникают, но вроде как давно не было, и вот опять :)

В рамках микро-соцопроса, мне интересно было бы узнать, кто и в какой индустрии на текущий момент использует Lisp как основной (или второй) язык разработки? Какие задачи на нем приходится решать, почему в вашем проекте уместен именно Lisp (CL, Clojure, Racket, ...), чем он лучше аналогов?

Наверняка-ведь, в проект его притащил один из технарей, и вряд ли руководство. Или у вас не так? Как аргументировали выбор этого инструмента и как боролись с возражением «а кто эти все скобки будет поддерживать %#@?».

Еще интересно, кто в итоге выбрал интересную работу на лиспе в ущерб доходу на более мейнстримном языке? Или наоборот - если вы выбрали деньги, то с каким коэффициентом понижения зп вы потенциально перешли бы на Lisp-работу?

P.S.: В данный момент сам пишу «финтех»-стартап на clojure и python.

Я выбрал интересную работу на CL с повышением дохода. В проекте он появился потому что при его первоначальной разработке других языков высокого уровня ещё не было.

Gentooshnik ★★★★★
()
Последнее исправление: Gentooshnik (всего исправлений: 1)

Лишп шождавался дял погроммирования искуствиного итилекта. Значит машын Лёнин делают на лишпке. (на самом деле нет, его делают на питоне, а лишп здох)

anonymous
()

Генераторы и дсл. Где? Да везде. Кто-то вон и хаскел в продакшен тянет, лисп ещё ничего.

anonymous
()

machine learning

Нет, тут не используют.

Solace ★★
()

кто и в какой индустрии на текущий момент использует Lisp как основной

В каждой первой конторе. Ведь если вдруг лиспера переедет трамвай, то замену ему найти - плёвое дело.

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

На clojure вполне себе работает ml в современных реалиях.

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

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

Т.е. это по сути легаси? Какой год это был?

alienclaster ★★★
() автор топика

вряд ли руководство

Руководство вообще ничего не понимает в технических вопросах. Хорошее руководство делегирует технические проблемы соответствующим людям на местах, а плохое навязывает свои «решения», от корорых потом страдают все.

rupert ★★★★★
()

Racket в качестве кроссплатформенных скриптов с графическим интерфейсом. Плюс на нём же сайт и внутренняя система обмена сообщениями.

Лучше аналогов: легко раздавать (для Windows всё в одном бинарнике, для Linux сборка требует только GTK), легко писать (модульная система позволяет гарантировать, что код в одном модуле не сможет сломать другой модуль), есть возможность напрямую дёргать сишные функции при необходимости и для этого не нужен сишный компилятор, есть возможность использовать COM-объекты, нормальные макросы позволяют делать удобные скриптовые миниязыки для конечных пользователей.

Как аргументировали выбор этого инструмента: язык и все библиотеки хорошо документированы. Для любой другой конкретной комбинации библиотек на другом языке стороннему человеку столько же разбираться придётся.

monk ★★★★★
()

Использую Common Lisp + GSL как суперкалькулятор для теоретической физики элементарных частиц (феноменология). Благодаря REPL, горячей замене кода и компиляции в машинный код, в CL создание и отладка модели идёт гораздо быстрее, чем в C++, при этом скорость расчётов остаётся разумной. Ну и одно только наличие полноценных лямбд делает CL гораздо удобнее другого конкурента --- Python.

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

Jini ★★
()

кто и в какой индустрии на текущий момент использует Lisp как основной (или второй) язык разработки? Какие задачи на нем приходится решать, почему в вашем проекте уместен именно Lisp (CL, Clojure, Racket, ...), чем он лучше аналогов?

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

Для задач машинного обучения чаще всего применяются Python и R, поскольку для них есть наибольший выбор готовых библиотек и учебников с примерами на них. Освоив эту тему на их примерах, можно перейти к применению других обычных языков, например, Java (библиотеки и учебники есть, но выбор меньше). Lisp просто не нужен и трудно применим. Хотя из Clojure можно вызывать код на Java и следовательно, использовать готовые библиотеки. Но не вижу какого-то преимущества по сравнению с простым использованием Java.

Еще некоторые библиотеки машинного обучения имеют REST API, позволяющий вызывать их из любого языка, лишь бы тот поддерживал работу в сети. Это может помочь любителям повыпендриваться, применяя маргинальный язык. Но практического смысла применять Lisp всё же не вижу (разве что уже есть свои разработки, к которым хочется добавить машинное обучение). И не только я - при обсуждениях вопросов машинного обучения трудно встретить упоминания Lisp-а, Haskell-а и подобных средств выпендрёжа.

Partisan ★★★★★
()

Притаскивал Common Lisp на 3 работы. На двух начальство не заботилось, кто будет поддерживать, или это был временный код. На третьей притащил просто потому что это был способ справиться с задачами хоть когда-нибудь, а не через вечность. На лиспе можно писать очень многое, но у свободных реализаций качество не 100%. 4-я работа была с повышением з.п., чисто на лиспе, но она сейчас закончилась. Больше заниматься лиспом не планирую, впрочем, если предложат работу - рассмотрю. В том, что касается плюсов, он прекрасен - горячая замена кода позволяет разрабатывать быстро, задействуя краткосрочную память. Краткосрочная память длится 30 секунд. Во всех обычных технологиях, пока программа скомпилируется, краткосрочная память заведомо сбрасывается. Притом современные технологии просто эпически тормозные. Хелло-ворлды на голанге из VS Code запускаются всё равно медленно, хотя быстрота сборки является одним из рекламируемых преимуществ языка, а VS Code якобы быстрый, потому что не на жабе написан. Среды CL просто летают на этом фоне, гиперзвук. Поэтому при прочих равных программист на лиспе заметно умнее того же самого программиста, работающего на другом языке. Но минусы лиспа достаточно неприятны. Первый из них - то, что он непопулярен. Мало вакансий, мало специалистов. Т.е. вот я прямо в эти дни сижу и учу голанг, потому что я подал на единственную в мире вакансию по CL, к-рую я нашёл, и они там что-то спят, а семью кормить надо. Остальные недостатки на этом фоне малозначительны, но сами по себе не так уж малозначительны. Синтаксис с лишними скобками (там их действительно на 20-40% больше, чем надо), архаизмы в стандарте, большое количество багов в открытых реализациях, определённые проблемы в инфраструктуре. Один только EMACS чего стоит.

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

Ни в какой области не нужен и не используется

средств выпендрёжа

Средство выпендрёжа - это для тебя твой комментарий, который глуп и фактически неверен. Или это вброс такой. Применений лиспа, актуальных на сегодня, достаточно много, например, AllegroGraph и PRO/Engineer. Только вопрос был не про это. Да и тебя никто не спрашивал о том, где лисп не используется. Вопрос был о том, где лисп используется участниками форума. Ты перепутал.

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

потому что я подал на единственную в мире вакансию по CL, к-рую я нашёл, и они там что-то спят

Вот и ответ по теме что там с лиспом в индустрии. А mv на сишке пишет, даже в сшашке нет работы на лиспе, круто.

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

Ну не надо так. Будь толерантнее. У нас же свобода слова. Человек пришёл, сказать по теме нечего, но очень хочется тему поддержать. Причём если читать между строк то он практически не врёт - во многих различных сферах он не был и лиспа не видел. И это не удивительно:

Хотя из Clojure можно вызывать код на Java и следовательно, использовать готовые библиотеки. Но не вижу какого-то преимущества по сравнению с простым использованием Java.

Сомнительно что такой «профессионал» в множестве различных сфер создания ПО побывать сможет. Только замечательных историй на ЛОРе начитаться.

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

Если смотреть вакансии, а особенно топовые, то в мире остался один реакт, похоже. Технологии, где спрос и предложение сбалансированы или просто малы, могут быть не видны. Это не говорит об отсутствии использования, это говорит лишь об отсутствии развития. А что не развивается, то загибается, и с лиспом это в настоящий момент происходит. Кстати, по-моему, это относится и к Clojure. Мне кажется, количество вакансий уменьшилось, хотя я не следил. Во всяком случае, все Ъ лисперы Clojure не признают за лисп.

den73 ★★★★★
()
Последнее исправление: den73 (всего исправлений: 1)

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

Какие задачи на нем приходится решать, почему в вашем проекте уместен именно Lisp (CL, Clojure, Racket, ...), чем он лучше аналогов?

Самое главное это профессиональное компьюнити (колелги), хипстеров и макак сюда не занесёт. Чем лучше технически — да ничем, хороший инструмент это тот, которым умеешь пользоваться, остальное — детали

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

Вряд ли

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

Горячая замена кода? Какие преимущества перед тем же эликсиром? Ну помимо обилия смайликов в коде.

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

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

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

Я вобще за лисп, но тут ты не прав:

Эрланг очень медленный

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

Преимущества - хотя бы в том, что эликсир новый, а CL уже давно.

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

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

Касаемо горячей замены я краем уха слышал, что в эрланге она мощнее, чем в CL.

В основном разница в том что Эрланг может держать две копии модуля внутри и они обе могут работать параллельно, что дает немного гибкости при обновлении кода. Ну и весь процесс унифицирован «релизами», но это больше инфраструктура и в CL так можно сделать.

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

две копии модуля

Две версии*

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

Это очень спорно,

В момент, когда я начинал заниматься CL, эликсира не было - это факт, я говорил именно об этом :)

Смотря как его использовать - считать математику на нем не надо

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

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

Мне казалось, что в эрланге можно обновить работающий процесс прямо посреди его (как в вижуал бейсике, edit and continue). В лиспе единицей обновления является определение (функция, к примеру). Впрочем, это не столь важно. Эрланг я посмотрел - тоже вакансий не так уж много, хотя по сравнению с лиспом он очень даже живой. Но вот что странно, smalltalk гораздо живее CL, судя по количеству контрибьютеров, но вакансий по нему я вообще никогда не видел. Что бы это значило? Отдельные Боги поддерживают на нём свои частные миры и ржут над нами, проезжая мимо на «бентли»?

den73 ★★★★★
()

Clojure и Common Lisp для высоконагруженных NLP-систем. Разрабатывают системы на лиспах 15-20 человек в компании. Основное преимущество — интерактивная разработка. В случае когда проект стартует 5-10 минут это становится критически важным. А также remote REPL, удобство создания eDSLей, отсутствие необходимости писать специализированное IDE (программа и есть IDE), много библиотек (в случае Clojure).

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

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

В том, что касается плюсов, он прекрасен

Согласен, C++ прекрасен.

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

Мне казалось, что в эрланге можно обновить работающий процесс прямо посреди его (как в вижуал бейсике, edit and continue).

В лиспе единицей обновления является определение (функция, к примеру).

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

В Эрланге «стандартный шаблон» для процесса - gen_server - поддерживает отдельное сообщение для обновления кода, которое вызовется перед переходом модуля на новую версию чтобы обновить состояние для новой версии. Но это больше инфраструктура.

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

Эрланг может держать две копии модуля внутри и они обе могут работать параллельно

В CL и Clojure так же.

turtle_bazon ★★★★★
()

Lisp как основной (или второй) язык разработки

CL как что-то низкоуровневое и с большей кашей в коде, но быстрое и системное, clojure для веб и прочей ерунды. И интеграция между ними.

чем он лучше аналогов?

Технически ничем. В частности мне оно больше нравится. Мне нравятся эти смайлики в коде. Мало того, нравится, что я могу блочно эти смайлики таскать куда нужно. Во всяких явах со структурным редактированием тяжелее. Хотя, конечно, там тоже всё норм.

Какие задачи на нем приходится решать, почему в вашем проекте уместен именно Lisp (CL, Clojure, Racket, ...),

Clojure в частности как интерактивный яваскрипт (пример - https://youtu.be/VNRVKcSQQFc). Что на CL делаю - это низкий уровень для различных сетевых сервисов.

Наверняка-ведь, в проект его притащил один из технарей, и вряд ли руководство.

Да, сам и притащил.

Или наоборот - если вы выбрали деньги, то с каким коэффициентом понижения зп вы потенциально перешли бы на Lisp-работу?

Ну сомневаюсь, что кто-то пойдёт с понижением зп на какую-то работу, пусть даже Lisp. От хорошей жизни на понижение зп не идут.

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

Этот профессионал (Partisan) помешан на борьбе с маргинальными ЯП. Сам при этом - джава-юниор.

anonymous
()

У нас с++ апи к бд и интерпретатору запросов доступно через схему и питон. DSL для чатботов на схеме https://github.com/opencog/opencog/tree/master/opencog/ghost

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

Leron ★★
()

R по сути это scheme слегка засыпанная синтаксическим сахаром (позволяющим программировать «как на» питонефортране).

Так что везде где R, можно смело думать про scheme.

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

Я имею в виду, что лично я неоднократно выбирал работу по интересу, а не по зарплате. И я на 100% уверен, что я не один такой дурачок. Но давай не будем это обсуждать. Хотя не, вру. Я в выборе работы обычно ленью руководствовался. Когда я попал на работу по лиспу, жадность совпала с интересом. Но на самом деле я во многих случаях был готов идти работать на лиспе за меньшие деньги. Просто не было предложений. Теперь фанатизм закончился, да.

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

Тоже хотел про них написать. Хотя в их вакансиях я clojure видел.

hateyoufeel ★★★★★
()

А вообще cast lovesan. Без него этот тред будет неполным.

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

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

turtle_bazon ★★★★★
()

то с каким коэффициентом понижения зп вы потенциально перешли бы на Lisp-работу?

Понижения!? Я бы в этой мерзости согласился ковыряться только с повышением ЗП раза в 3.

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

Racket в качестве кроссплатформенных скриптов с графическим интерфейсом.

А предметная область какая?

Плюс на нём же сайт и внутренняя система обмена сообщениями.

А почему для сайта не выбрали какой-нибудь yii или flask / django или даже WP?

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

Ну и одно только наличие полноценных лямбд делает CL гораздо удобнее другого конкурента --- Python.

В сравнении python, наверное, самым большим преимуществом все же будет REPL и скорость вычислений без подключения сишных модулей?

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

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

Я так понимаю, это был Crossover? CL там для каких задач использовался или чисто легаси?

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

Common Lisp используется в Grammarly - онлайн сервисе для проверки английской грамматики.

О Grammarly в курсе. там и Clojure используется, и CL. У них предметная афаик это NLP.

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