Как различаются различные реализации ANSI CL?
Когда я начал изучать CL из Practical Common Lisp, как сказано в книге, я начал с компилятора Allegro CL. Я прекратил использовать его, поскольку его коммерческий, но свободный бит меня не впечатлил. Для некоторых продуктов лицензирования требовалось подключение к удаленному серверу.
Я переключился на "clisp" и использую его. Теперь я слышал о SBCL и планирую начать использовать его также.
Итак, возникает вопрос: как различаются различные реализации ANSI CL? Любой практический опыт использования одного над другим?
Спасибо.
Ответы
Ответ 1
Есть части ANSI CL, которые оставляют определенные детали до определений, которые нужно определить; вы обнаружите, что для тех частей стандарта каждая реализация будет иметь свои собственные причуды.
Кроме того, обратите внимание на вещи, которые важны для среды выполнения, но не определены на языке: такие вещи, как потоки, многопроцессорность и сбор мусора, будут существенно различаться по производительности и надежности.
Я обнаружил, что SBCL - самая простая реализация для работы в Linux; он имеет хорошую поддержку для потоковой передачи в Linux. Я не могу сказать много о сборщике мусора, потому что это еще не имело для меня значения.
В Windows лучшим вариантом будет, вероятно, Allegro или LispWorks, хотя у меня был некоторый успех с clisp в Windows. Порт Windows SBCL прогрессирует, но я его не использовал, поэтому я не могу комментировать.
Вообще говоря, понимание таких вещей, которые трудно получить посредством исследований или анализа; он приходит через опыт. Просто выберите достойную реализацию, с которой вам удобно, и приступайте к работе. Вы поймете сложный материал, когда идете.
Ответ 2
См. Общие реализации Lisp: опрос Даниэля Вайнреба.
Ответ 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, если вы находитесь под окнами.