LINUX.ORG.RU

Common Lisp VS Racket

 , , ,


2

7

Комрады. Очень давно тыкал в Cl/SBCL, не так давно написал пару сервисов для этого вашего web’a на Racket.

Вопрос - Common Lisp VS Racket, что более живо для написания web’a, что имеет больше батареек, какая IDE лучше (кроме Emacs), etc.

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

У clojure классный синтаксис, реально крутой и продуманный.

На самом деле нет. Кое-кто просто не любит скобки, и не понимает смысл Lisp2.

Интероп с миллиардом джава либ и (что более важно) на ней легко написать lispy-обертку для какого-нибудь специфического джава-фреймворка.

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

Всем основные проблемы clojure от jvm - отсутствие хвостовой рекурсии и нормальных рестартов.

Не только. Хотя и то - какой нахрен функциональный язык без оптимизации хвостовых вызовов(и не надо про recur, это только частный случай - простенький цикл. Взаимную рекурсию итд, он никак не обрабатывает).

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

Ридер-макросы от туда убрали специально, и вот в конкретно этом случае это хорошее решение.

На самом деле рич хики просто не осилил.

lovesan ★★
()

Борщелисп.

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

У clojure классный синтаксис, реально крутой и продуманный.

На самом деле нет. Кое-кто просто не любит скобки, и не понимает смысл Lisp2.

Можно писать все только на круглых скобках, ничто не мешает. Без { и [. Но так удобнее и красивше. Если бы это было не так, никто бы этот синтаксис и не использовал, но он *объективно* менее многословный. На счет Lisp-2 там аргумент обычно в стиле - неудобно писать макросы, вынужденная гигиента итд. Но так в кложуре такой же (почти, чуть удобнее) defmacro как и в CL, и racket есть defmacro аналогичный. Какие преимущества Lisp-2, кроме того, что можно давать одинаковые имена ф-циям и аргументам?

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

Чем лучше? Чем плохо интероп кложи?

Проблемы с производительностью, с интерактивностью

Производительность принципиально там упирается в две составляющие - jvm и ее возможности и ленивость / немутабельность кложуровских структур (и то там весьма неплохо это порешали). Что с интерактивностью не так кроме рестартов?

, и прочим, этим проблемам просто нет числа.

Ты назвал только производительность (которая достаточно высокая для языков подобного уровня и семантики) и «интерактивность», repl там есть, нет рестартов нормальных, но можно куцие эмулировать. Какие еще проблемы, которым «нет числа»?

Ридер-макросы от туда убрали специально, и вот в конкретно этом случае это хорошее решение.

На самом деле рич хики просто не осилил.

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

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

Какие преимущества Lisp-2, кроме того, что можно давать одинаковые имена ф-циям и аргументам?

Собственно это основной смысл. И поэтому же в схеме макросы сплошь и рядом гигиеничные. Потому что в lisp1 с полноценными макросами постоянно встает проблема перекрытия имен. Это не только переменных и функций касается. А и классов, и прочего.

Чем лучше? Чем плохо интероп кложи?

Лучше тем что в CL нормальная мутабельность и прочее, и по семантике он ближе к языкам типа Java. В Clojure java-интероп это кровь-кишки, с нарушением всех STM, иммутабельной семантики и прочего. Натурально как UnsafePerformIO в цацкеле, только еще менее удобный.

Что с интерактивностью не так кроме рестартов?

Интерактивность это не только про рестарты. В CL, в случае например SLIME, у тебя вся IDE, любой текстовый файл, это REPL. Clojure ближе к «обычным» языкам, в том числе из-за жабомашины.

Какие еще проблемы, которым «нет числа»? Да куча кривых палок и костылей, я про это как-то на митапе однажды рассказывал, возможно надо будет статью написать.

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

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

Не классный. А не осилил потому, что в случае ридер-макросов мы упираемся в необходимость image-based решения, что на жабке ессно невыполнимо.

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

Какие преимущества Lisp-2, кроме того, что можно давать одинаковые имена ф-циям и аргументам?

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

В CL lisp-N и defmacro, в кложе lisp-1 и defmacro, в racket lisp-1 и defmacro. И какая связь?

Чем лучше? Чем плохо интероп кложи?

Лучше тем что в CL нормальная мутабельность и прочее, и по семантике он ближе к языкам типа Java.

И как это делает интероп кложи с джавой плохим? Ну используешь java-метод из кложи, как обычную кложе-функцию, только со спецсинтаксисом типа точки и CamelCase, тоже мне проблема.

В Clojure java-интероп это кровь-кишки, с нарушением всех STM, иммутабельной семантики и прочего.

Совершенно не обязательно.

Интерактивность это не только про рестарты. В CL, в случае например SLIME, у тебя вся IDE, любой текстовый файл, это REPL.

Чем отличается emacs/cider от emacs/slime принципиально? Может, каких-то ф-ций не хватает, не дописали, потому что проект более молодой (лет на 10 младше). В cider тоже текстовый файл это репл, не понял вообще претензии.

Clojure ближе к «обычным» языкам, в том числе из-за жабомашины.

Так про жабомашину обсудили раньше, что там с интерактивной разработкой такого ужасного кроме отсутствия рестартов? (для моих задач например, это критично), а в остальном что?

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

Ну скинь ссылку на митап, интересно послушать.

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

Опять претензии к jvm и его рантайму. В CLR, кстати, как я понимаю, есть оптимизация хвостовой рекурсии, а рестарты там нормальные можно реализовать технически?

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

Не классный. А не осилил потому, что в случае ридер-макросов мы упираемся в необходимость image-based решения, что на жабке ессно невыполнимо.

Что конкретно невыполнимо в clojure в разрезе image-based с учетом того, что это язык стремящийся к немутабельности данных?

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

А в документации написано, что clisp 2.47 его не собирает. Хотя является ANSI CL.

Так и 2.44 ANSI CL, но его он собирает. Что-то специфичное, наверное. Не могу точно сказать.

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

У clojure классный синтаксис, реально крутой и продуманный. На самом деле нет. Кое-кто просто не любит скобки, и не понимает смысл Lisp2.

Там в clojure расширенный синтаксис квадратных скобок. ХЗ хорошо или нет. Меня не напрягает.

turtle_bazon ★★★★★
()

Я тут почитал тред немного и у меня возник вопрос: что же лучше выбрать новичку для вкатывания в лиспо-языки? Я посмотрел на ракету, крутые батарейки, подробный гайдик есть, все выглядит прикольно, так еще и удобный DrRacket. Потом полапал sbcl, нашел гайд на lisper.ru, но вот в чем это дело писать?

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

emacs+slime практически без вариантов. Ну можно ещё slime заменить на его форк. Забыл его имя. По сути то же самое.

turtle_bazon ★★★★★
()

Common Lisp VS Racket

chicken-scheme! Только придётся всё самому писать от и до

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от snake266

что же лучше выбрать новичку для вкатывания в лиспо-языки?

CL или clojure, наверное, clojure даже лучше. Потом CL. clojure лучше по таким причинам: порог входа ниже, вероятно, быстрее перейдешь к написанию практических проектов (web, bigdata, crawlers, ml... че там тебя интересует). CL - я бы оставил на курс advanced, но тоже мастрид - куча хороших книг.

так еще и удобный DrRacket

Он неудобный, надо юзать emacs, но аналог slime для ракетки кажется каким-то дохлым (последнее обновление N лет назад).

Потом полапал sbcl, нашел гайд на lisper.ru, но вот в чем это дело писать?

emacs + slime (стандарт), сейчас, наверное, даже лучше emacs + slimv (более фичастый slime). Для clojure emacs + cider - тоже живой и развивается.

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

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

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

По шестому пальцу на руках нужно. А всего пять.

ctrl меняешь на caps и можешь отрезать шестой палец в 99% случаев, в остальных просто жмешь хвостом.

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

На caps у меня переключение языка стоит.

У меня тоже, но в имаксе можно отдельно забиндить. Или ты часто переключаешь языки в коде с англ?

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

Или ты часто переключаешь языки в коде с англ?

Ну, смотря какой код.

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

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

Чем ты его зажимаешь, что тебе это не мешает набирать текст?

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

Большим пальцем. Не скажу, что очень комфортно. Но удобнее, чем переключаться.

turtle_bazon ★★★★★
()

Вздвачну clojure(script).

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

клавиатуры с педалями не для бедных.

Экономишь на продуктах Джетбрейнс и покупаешь педали к емаксу. Проверено, работает.

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

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

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

Нет, потому что они в состоянии сами решать на чём будут писать и пишут быстро и эффективно. :)

turtle_bazon ★★★★★
()
20 ноября 2021 г.
Ответ на: комментарий от lovesan

не понимает смысл Lisp2

И какой же в нем смысл, кроме геморроя и путаницы?

Да, я знаю, что некромантия запрещена на всей территории Империи, но интересно же.

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