LINUX.ORG.RU

Racket VS Common Lisp

 , , , ,


8

10

Добрый день дорогие аналитики L0R'a. Ковыряю ракет, пишу на нем клиентскую программу - а пока хочется вот что спросить. Все же что лучше - Racket или Common Lisp? Что более перспективно? Ну и естественно, какие у одного недостатки/преимущества по сравнению с другим?

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

Ни одного job offer'а по рекету не нашел. По CL они хотя бы есть.

даже в россии я знаю как минимум пару контор, которые пишут на схеме.

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

Кстати, да. Даже в отсталой рашке вакансии нашлись.

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

Кстати, да. Даже в отсталой рашке вакансии нашлись.

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

Там же выше специально я ссылку кинул на живые проекты.

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

2. Есть ли жизнь в связке vim + lisp? Или под лисп только емакс?

Вообще-то в Емаксе уже давно vim реализовали, осталось только клавиши в Slime переназначить.

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

Там же выше специально я ссылку кинул на живые проекты.

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

Потому что CL испорчен фундаментально. Его просто надо выкинуть и закопать, а не стандарты переделывать.

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

видел, а как это связано с

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

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

потому что коммунити комонлисперов - это тихое болото консерваторов-старперов.

любые нововведения встречаются словами НИНУЖНА!11

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

Это вброс, тоже личное мнение. Если бы я должен был выразить истину, то у меня бы не получилось, ее нет

vertexua ★★★★★
()

для информации, я последнее время много пишу на F#, вот чего мне не хватает из CL:

  • пред/после методов при инициализации объекта
  • динамики, когда мне все равно что возвращает ф-ция, но я вынужден делать «правильную» относительно типов ф-цию
  • макросов, особенно в сочетании с динамикой, для сокращения кода и ДСЛей
  • перегрузки типов операторов для обычных ф-ций и лямбд, что в КЛ не нужно так как динамика

    ------------------------------

    что бы мне не хватало в КЛ из фшарпа, если бы я решал на нем текущие задачи -

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

    ----------------

    это первое что приходит в голову

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

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

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

паттерн матчинга из коробки

Зачем в CL что бы то ни было «из коробки», когда есть макросы?!?

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

чтобы не тратить время на написание макроса? Или ты имеешь ввиду, что если в КЛ добавить что-то из коробки, то это убьет его основное преимущество - однообразный синтаксис?

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

чтобы не тратить время на написание макроса? Или ты имеешь ввиду, что если в КЛ добавить что-то из коробки, то это убьет его основное преимущество - однообразный синтаксис?

Зачем «из коробки», когда есть макросы, и на этих макросах уже давно все написали. Бери любую готовую реализацию pattern matching и пользуйся. А коробку раздувать не надо, она и так жирная.

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

Правда JVM тоже не нужен.

есть подозрения, что жабкины GC «уделывают» по всем параметрам схемные и CL-кие (свободные) вместе взятые. Особенно последние - из 7-ки. Так что идеальной vm до сих пор нет :(

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

есть подозрения, что жабкины GC «уделывают» по всем параметрам схемные и CL-кие

Да ну ты брось. В жабке же как раз очень тормозные гц.

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

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

А если так — http://laurent.le-brun.eu/site/index.php/2009/10/17/52-dynamic-lookup-operato... ?

Например

let foo a = if a = 2 then 3 :> obj else "5" :> obj // Сам тип не хочет поднимать (как Scala), поэтому :> obj
quasimoto ★★★★
()

http://community.schemewiki.org/?scheme-vs-common-lisp актуальность не потеряла и по сей день. Если у тебя нет религиозных предрассудков - то смотри где есть нужные тебе библиотеки, т.к. множество батареек ни к одному их них не является строгим подмножеством батареек к другому.

С точки зрения языка, я бы взял CL, но это просто субъективное мнение без доказательства.

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

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

anonymous
()

Очередное непонимание слова «батарейки». Чтобы понять, что такое «батарейки», советую взглянуть на ванильный Tcl/Tk и ActiveTcl.

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

много текста, а по теме лишь это:

На схеме решал только упражнения из СИКП, но могу точно сказать, > что мне не хватало бы CLOS-а, если конечно ему нет аналога в схеме.

в racket кстати хороший ООП вида message-passing. И да, мультиметоды тоже есть.

x4DA ★★★★★
()
Ответ на: комментарий от pseudo-cat

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

с чего ты решил что единственно правильный способ обработки текста - как в emacs?

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

scheme - не ракет => сравнение неприменимо к racket.

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

Понимания могут быть разные.

Всеобщее понимание батареек - обширная стандартная библиотека, как в python, например.

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

это сравнение не имеет отношение к racket

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

Ух ты, крутой сахар! я обычно, когда деваться некуда, привожу тип к obj и потом пишу что-то типо

match a with | :? SomeType as a -> a.gone() :> obj | _ -> throw wtf ...

pseudo-cat ★★★
()
Ответ на: комментарий от x4DA

Ну вообще http://c2.com/cgi/wiki?IsSchemeLisp, а так просто [default] lisp == common lisp, онтопик на comp.lang.lisp это CL, например (а у схемы есть comp.lang.scheme), и вообще часто можно слышать и видеть как нативные спикеры говорят и пишут просто lisp, подразумевая CL.

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

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

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

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

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

mv ★★★★★
()
Ответ на: комментарий от pseudo-cat

паттерн матчинга из коробки

Тыщи библиотек.

сахара для карринга

Карринг в динамическом языке, с нефиксированной сигнатурой функций?

параллельности как первокласных сущностей языка

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

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

я и не спорю. карринг от values c матчингом по списку values как вариант?)) я не столько о карринге как просто об удобстве обработки значения после его записи.

pseudo-cat ★★★
()

чего не хватает в CL (любом, включая коммерческие)

1. Продолжений. А также всего, что из них следует: генераторы/потоки, сопрограммы, green threads... cl-cont адски тормозит и не позволяет его применять к стандартным функциям (нельзя сохранить продолжение из cl:mapcar). Проблема фатальная и я решения не знаю.

2. Нормальной системы библиотек типа Racket modules+units. На readtable можно навелосипедить, но нестандартно => неудобно применять.

3. Макросов в стиле syntax-id-rules. Опять же, велосипедится через readtable.

Чего не хватает в Racket (сравниваю с SBCL+SLIME):

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

2. Нормальной интроспекции типа (describe ...), (inspect ...). Теоретически, большую часть можно вытащить через неймспейсы, но сильно напоминает удаление гланд через жопу.

3. Оптимизации. Дизассемблера встроенного нет. Оптимизирует иногда странно: Typed Racket. Что я делаю не так?

4. Сообщества. Может, конечно, я не прав. Но на CL есть hu.dwim, cffi, iterate, cl-ppcre, биндинги к qt, gtk, sdl, ... разрабатываемые сообществом. В racket на planet не очень много (на фоне common-lisp.net), а на github 90% проектов --- студенческие «ещё один пролог/алгол на схеме».

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

Dr.Racket нельзя написать под CL. Рантайм у общелиспа слабоват.

Хм... а какую именно функцию DrRacket нельзя реализовать в CL? Проверку синтаксиса — можно, дебаггер — можно, автодополнение — тоже, что там ещё есть?

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

По идее, Racket больше батареек имеет, нежели тот же SBCL

Смотря что считать батарейками. Если, как нормальные пользователи SBCL, таковыми считать quicklisp, то на SBCL будет больше (навскидку, биндинги к Qt, Gtk, Tk, SDL, posix).

Зато в Racket выбирать проще. Нету библиотек с почти одинаковым функционалом типа *-utils.

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

Рантайм у общелиспа слабоват.

В каком месте?

Я так понимаю, намёк на отсутствие продолжений.

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