Подтвердить что ты не робот

Как различаются различные реализации ANSI CL?

Когда я начал изучать CL из Practical Common Lisp, как сказано в книге, я начал с компилятора Allegro CL. Я прекратил использовать его, поскольку его коммерческий, но свободный бит меня не впечатлил. Для некоторых продуктов лицензирования требовалось подключение к удаленному серверу.

Я переключился на "clisp" и использую его. Теперь я слышал о SBCL и планирую начать использовать его также.

Итак, возникает вопрос: как различаются различные реализации ANSI CL? Любой практический опыт использования одного над другим?

Спасибо.

4b9b3361

Ответ 1

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

Кроме того, обратите внимание на вещи, которые важны для среды выполнения, но не определены на языке: такие вещи, как потоки, многопроцессорность и сбор мусора, будут существенно различаться по производительности и надежности.

Я обнаружил, что SBCL - самая простая реализация для работы в Linux; он имеет хорошую поддержку для потоковой передачи в Linux. Я не могу сказать много о сборщике мусора, потому что это еще не имело для меня значения.

В Windows лучшим вариантом будет, вероятно, Allegro или LispWorks, хотя у меня был некоторый успех с clisp в Windows. Порт Windows SBCL прогрессирует, но я его не использовал, поэтому я не могу комментировать.

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

Ответ 3

Если вы находитесь на машине, которая может запускать SBCL, вы должны ее использовать. Это самый быстрый бесплатный компилятор Lisp (он может генерировать код так же быстро как Haskell, OCaml, Java, C и С++, которые все очень быстрые, особенно по сравнению с Python и Ruby). Он также является довольно полным реализации и поддерживает большинство функций Swank (для SLIME), что хорошо при разработке.

Как упоминают некоторые другие комментарии, вы не заметите никаких когда вы впервые начинаете. Все свободные CL реализация "достаточно быстро" и поддерживает все функции, которые вам понадобятся. Но если вы начнете писать вы по достоинству оцените возможности SBCL. OTOH, на самом деле нет причин не переключаться сейчас.

Ответ 4

Я рассматривал решения Win32 по тому же вопросу. В качестве бесплатных реализаций Lisp в Windows я настоятельно рекомендую Clozure CL (CCL). На это есть несколько причин. Во-первых, Clozure поддерживает 32- и 64-разрядные двоичные файлы. Это очень быстро и несколько компактно. Но самое главное, это последовательное и правильное. Я считаю, что это очень зрелый Lisp, после работы с Lispworks (который я пропустил) в течение нескольких лет. CCL выполняет очень приятную работу с потоками ОС, сокетами и некоторыми другими элементами, которые не являются частью спецификации CL. Его реализация CLOS представляется чрезвычайно тщательной. И это GC и управление памятью превосходны. Я сравнивал CCL с SBCL на Win32, и, хотя SBCL был немного быстрее на нескольких тестах, он намного увеличился, и его изображение продолжало расти и расти даже после нескольких принудительных GC. Между тем, CCL был последовательным, маленьким, быстрым и прекрасным в использовании. И если вы хотите, чтобы платформа, совместимая с Windows, Mac и Linux, поддерживала 32-разрядную и 64-разрядную поддержку, не смотрите дальше.

Я попробовал CormanLisp на Win32, и было много вещей, которые мне понравились. Но он не работает должным образом на 64-битных платформах Windows и ограничен Win32. Это также не бесплатно, и как-то я его обрушился на меня, когда я набросил на него какой-то код мусора. Я также легко смог сбой SBCL. Не так с CCL. Scala. Действительно, эти ребята сделали удивительную работу и в конечном итоге помогут сохранить Lisp в живых.

Что касается SLIME, я не пытался заставить SLIME работать с SBCL, но я действительно хорошо работал с CCL. Независимо от того, какова ваша фантазия, я советую людям писать код, чтобы быть легко переносимым. Цель для Windows, Mac и Linux, а также для 64-битных. Если вы считаете это, тогда CCL - ваш лучший выбор.

Последняя попытка ответить на это - рассмотреть, что не так с другими. Вот что я нашел:

  • CLISP хорош, но намного медленнее, чем SBCL или CCL. Я вижу небольшой потенциал
  • SBCL кажется бедной на Win32. Размер изображения может стать большим.
  • CormanLisp хорошо работает на Win32, но не переносится и не поддерживает Windows x64. Также кажется, что Роджер Корман не активно развивает CormanLisp, который позор, но это реальность.
  • Clojure (с "j" ) не является общим Lisp. Как ни крути, я думаю, что если вы уже знаете CL, то это не стоит накладных расходов на обучение Clojure 's много различий. Я уверен, что некоторые из них могут забрать их быстро, но я, конечно, этого не сделал. (Если Java-совместимый код - это то, что вам нужно, тогда посмотрите на ABCL).

Дэйва

Ответ 5

Я не знаю достаточно, чтобы дать вам подробный ответ, но я заметил, что SBCL был значительно быстрее, чем Clisp, когда я работал с CL для моего класса AI. Если у вас нет веских оснований, я бы посоветовал пойти с SBCL.

Я слышал, что Clisp проще установить и более портативен, чем SBCL (у которого много оптимизаций для конкретных процессоров), но если вы используете Linux, они оба достаточно легки для извлечения из диспетчера пакетов.

Ответ 6

Я нашел сообщения об ошибках в clisp более дружелюбными и помог мне быстрее найти проблему.

Ответ 7

Кажется, что SBCL REPL не дружелюбен по сравнению с clisp? НАПРИМЕР. Я могу использовать клавишу TAB для автоматического заполнения ввода в виде clisp.

поэтому clisp лучше для новичков lisp.

Ответ 8

В зависимости от выбранной ОС

  • Windows - используйте ecl или abcl
  • Linux - используйте sbcl или ecl или abcl или cmucl
  • Mac - ccl или ecl или sbcl
  • Другое - abcl или ecl или sbcl

ИЗМЕНИТЬ:

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

ecl намного лучший выбор для кросс-платформенных lisps, его набор функций стабилен на всех основных платформах.

ИЗМЕНИТЬ 2011-10: Окна Sbcl теперь поддерживают потоки. Он еще не полностью слит в mainiline, но есть вилка, которая довольно стабильна, у которой есть потоки и другие специфические свойства Windows.

Ответ 9

Мне очень повезло с установкой clisp, используя cygwin, если вы находитесь под окнами.