LINUX.ORG.RU

Lisp в индустрии

 , , , ,


3

6

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

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

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

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

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

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

Обожаю этот аргумент, его особенно мощно форсит тут Зассанчик.
Тем временем Кложуру сам Пол Грэм рекомендует вместо CL.

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

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

Спроси у https://twitter.com/yogthos
Он бывший джавист, рассказывал, что ему надоело программировать,
но попробовал Кложуру и снова попёрло. Использовал его веб-фреймворк.

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

Вообще-то NDA, но не будет большим секретом сказать, что это G2.

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

А граммарли из страны-агрессора, оси зла и как его там... на удалёнку не берут ли лисперов? Я аж застеснялся резюме отправлять.

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

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

Наверное, да. Так-то в питоне тоже есть REPL, и я читал о нём восторженные отзывы от питонщиков, но сам не пробовал, поэтому сравнить не могу. А парой тем ниже рассказывают как ускорять питон до C, но подозреваю, что тогда REPL отвалится. Плюсы CL не только в количестве фич, но и в том, что они все интегрированы друг с другом, и компиляция в машинный код там работает вместе с REPL, перегрузками объектов, рестартами и прочим всем. И я всем этим пользуюсь, от макросов до метаобъектного протокола, так что важно всё.

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

На CL? Там сервер на TCP/UDP, который маршрутизирует и считает запросы, которые через него идут. Скукота, в общем.

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

Ближе к лисповскому реплу в Питоне будет скорее не IPython, а Jupyter ноутбуки. Пишешь, вычисляешь, смотришь результат. Только на ноутбуках сложно написать и поддерживать целое приложение, а в лиспе только так и делают.

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

Сам ты агрессор

Ну я и имел в виду, что это не граммарли из страны агрессора, а я из страны-агрессора. У меня только фамилия западенская и происхождение отчасти, а так москаль-москалём. Согласен, не вполне однозначно сформулировано. Жаль, если удалёнки нет, ехать работать в Киев или в США в обозримом будущем не планирую.

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

Да все норм, я не танцпола ради.

Удаленка как-то не прижилась, хотя раньше были контракторы, из РФ в том числе. Сейчас оставили только онсайт.

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

Понимаю вас, но и себя тоже понимаю :)

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

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

Так любая: web-морда к tc на Linux, читалка данных из АТС, обработка Excel на Windows, скрипты для бэкапа, скрипты для управления MS AD, вытаскивалка с сайта госслужбы, ...

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

В Racket можно писать:

(define (page ...)
  (send/suspend/dispatch 
   (lambda (embed/url)
    (response/xexpr
      ...
      (a ([href ,(embed/url (act user box param))]) "Выполнить действие")
      ...))))

И в сгенерированной страничке при щелчке по ссылке выполнится функция act с параметрами user box и param. И параметры могут быть любого типа вплоть до соединения с БД. При этом нет необходимости ни разбираться с HTTP параметрами ни явно указывать , что читать/писать в сессию.

Более того, можно реализовывать даже конструкции вида

(define-values (login password) (get-login))
(if (check-password login password)
    (main-page)
    (bad-password))
где get-login рисует страницу с запросом логина и пароля, получает их от пользователя, и возвращает полученное значение.

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

Интересно, а как это все в сравнении с Pharo?

У Pharo сложнее (если вообще возможно) раздавать полученные скрипты (которые должны запускаться без среды). И неясно как обрабатывать текст программ внешними инструментами. Мне 1С хватает с «единственно верным» IDE.

monk ★★★★★
()

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

Как же это скобочки надо любить.

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

Обожаю этот аргумент, его особенно мощно форсит тут Зассанчик.

Тем временем Кложуру сам Пол Грэм рекомендует вместо CL.

Грэм мог зашквариться за такой-то промежуток времени. Ё-мое, человек когда-то что-то сделал стоящее, и теперь с ним носиться, как с писаной торбой до конца дней, что ли?

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

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

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

хипстеров ... сюда не занесёт

Чем лучше технически — да ничем

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

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

Тем временем Кложуру сам Пол Грэм рекомендует вместо CL.

Грем CL не осилил, в чём сам и признавался. Поэтому и путает Кложуру с Лиспом)

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

Да, ты прав наверное. >20 лет прошло с тех пор всё таки.

Hertz ★★★★★
()

Кому эти пилят свой дшыз? Для какого нинужно и почему не разорились? Значит есть вероятность встретить не борщелишперов в природе в 21-м веке.

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

Умеют же некоторые в 3-х подряд сообщениях ничего не написать по сути.

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

Clojure не Lisp.

Уходи. Этот тред не для тебя.

Зато относится к вопросу афтара темы. Хотя я уже ответил. Clojure позволяет вызывать классы Java, а значит, использовать библиотеки машинного обучения, доступные для Java. Это преимущество по сравнению с другими Lisp-ами, хотя не вижу преимущества смеси Clojure с Java по сравнению с простым Java (для задач машинного обучения). Но афтара ещё интересовало: какая польза от Lisp-а (например, от Clojure). Отвечаю: в области машинного обучения - никакой (ИМХО).

Зато Lisp позволяет его знатокам демонстрировать свою крутизну - они знаю что-то, что другие не знают (ввиду ненужности).

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

По ссылке - эпичный (типичный?) бред неосилятора. Реальные проблемы clojure совсем в другом: отсутствие tco, которое так-сяк решается через recur, отсутствие нормальных рестартов - тоже там какие-то были попытки решения через библиотеки, java в качестве основного хост-языка (clr-версия загнулась), джавовская система типов хотя это и не огромный минус, но тем не менее. В clojure нет ридер-макросов - но это хотя бы имеет под собой какую-то аргументацию. Ну а так, все минусы в основном из-за того, что clojure на jvm.

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

Ну а так, все минусы в основном из-за того, что clojure на jvm.

и по сути jvm это единственное что даёт кложе жизнь

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

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

https://www.cliki.net/ABCL

https://www.gnu.org/software/kawa/Method-operations.html

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

Согласен. Хотя на мой взгляд лучше бы основной реализацией была clojure on .net, но в то время еще не было .net core :(

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

Знаешь, ты меня почти мотивировал перелезать с CL на racket, но есть вопрос - да вопрос глупый, да синдром утёнка...

https://docs.racket-lang.org/gui/windowing-overview.html#(part._.Creating_.Wi...

; Make a frame by instantiating the frame% class
(define frame (new frame% [label "Example"]))

Если в языке система пространств имён более совершенна чем в CL зачем в конце символа с классом ставить знак % ? Ладно там знак ! в конце деструктивных функций уже даже круто звучит, но после вот такого откровенного пёрла хочется послать эту ракету куда-нибудь далеко.

В CL у меня есть мода ставить приставку в виде символа ~ во flet-ах и macrolet-ах - но тут уже понятно из-за каких ограничений.

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

Дык вроде поеятно, что имя класса так выделили. Могли и Frame написать и frameE и даже просто frame мне каатся.

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

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

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

А зачем? Это та же схема на стероидах, про макросы только отдельно почитаешь и о парочке встроенных библиотек. Realm of Racket - хорошая книга.

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

Если в языке система пространств имён более совершенна чем в CL зачем в конце символа с классом ставить знак % ?

Для удобства чтения. И для возможности писать (define frame (new frame% ...)) вместо (define a-frame (new frame ...)).

Ладно там знак ! в конце деструктивных функций

Вот хороший аналог. Не вникая в тело и документацию можно понять, что area-update! — делает какой-то сайд-эффект, area? — предикат, area% — класс, area<%> — интерфейс.

Так же как в Си имя типа LPCSTR. И также как в Си следовать этому соглашению не обязательно.

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

CL бессмертен, расширяем ибо.

Не во все стороны расширяется. Статическую типизацию с типизированными коллекциями не сделать, call/cc не сделать, нормальные финализаторы не сделать, в рамках ANSI CL даже многопоточность и корутины не сделать.

Racket — правильный CL.

monk ★★★★★
()

Wolfram Mathematica, Maxima - пакеты, суть которых - лисп. Просто первый несколько маскируется, вводя инфиксные операторы и переставляя голову за скобку (anyExpr[[0]] возвращает голову).

Это к вопросу о том, где лиспом одержана уверенная победа: там, где и хотели использовать лисп - в символьных вычислениях. Тыщи учёных.

А вот с сайтеками и формочками немного незадача, хех. Влияние оказывает, но до уровня всяких (кошмарных в своей сути) питонов не дотягивает. И по-видимому, тому есть причины, о которых холиварят, наверно, с шестидесятых.

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

Меня monk мотивировал сползти с Кложуры и освоить Racket. Респект ему за это. Мне на Ракетке как-то проще живётся.

после вот такого откровенного пёрла

Тоже не понял сначала, потом наступила фаза «принятие».

Hertz ★★★★★
()
Последнее исправление: Hertz (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.