Какую реализацию Common Lisp использовать? [закрыто]

45

Кажется, есть непосредственная проблема с началом разработки в Common Lisp: выбор реализации. Что следует учитывать и какой вес он должен иметь при рассмотрении реализации CL?

Должно ли оно соответствовать стандарту ANSI? Должно ли оно поддерживаться SLIME? В некоторых реализациях отсутствуют хорошие библиотеки, документация и т. Д.?

анонимный
источник
Интересный вопрос: я сейчас читаю «Практический Common Lisp» и пробую свои примеры на CLISP, но я предполагаю, что любая реализация соответствует стандарту: Common Lisp мне кажется очень зрелым и стабильным языком.
Джорджио

Ответы:

25

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

SBCL довольно быстр и хорош в обработке чисел. Так что, если вы зависите от сложных числовых вычислений, это может быть правильной реализацией для вас. Кроме того, он имеет приличный вывод типа (для реализации на Лиспе).

CLISP - это относительно небольшая реализация с байтовой компиляцией, которая может быть интересна для сценариев.

Несколько лет назад я попробовал CCL и придерживался его, потому что я предпочел его сообщения об ошибках и трассировки стека по сравнению с другими реализациями, а также его относительно низкое время компиляции. Для меня простота интерактивного использования является чем-то очень важным. Если его скорость необходима, я все еще мог бы переключиться на SBCL для развернутой программы. (Тем не менее, никогда не нужно.) Кроме того, есть возможность коммерческой поддержки.

Если вы хотите развернуть на JVM, есть ABCL.

Для встроенного использования ECL.

У Allegro есть AllegroGraph, AllegroStore, простой в использовании визуальный конструктор GUI и многое другое, но не всем нравятся их условия лицензирования.

LispWorks, кажется, вполне пригоден для разработки приложений для конечных пользователей с хорошим кроссплатформенным инструментарием графического интерфейса пользователя и условиями лицензирования, которые могут подойти для небольших команд и отдельных программистов лучше, чем у Allegro. (По крайней мере это то, что я бы предпочел.)

Конечно, это только широкие категории и впечатления. Я бы посоветовал поближе взглянуть на SBCL, CCL и CLISP, так как это IMHO наиболее часто используемые и поддерживаемые реализации с открытым исходным кодом, а затем выбрать одну из них. То есть, если ваши потребности не совпадают с тем, что могут предложить ABCL или ECL.

Должно ли оно соответствовать стандарту ASNI?

Это не будет реализация CL, если это не так. (Конечно, на практике может быть несколько отклонений, но целью должно быть как минимум соответствие).

Должно ли оно поддерживаться SLIME?

Конечно - если вы используете SLIME. (На мой взгляд, это лучшая на данный момент среда на Лиспе, но у каждого своя.)

В некоторых реализациях отсутствуют хорошие библиотеки, документация и т. Д.?

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

danlei
источник
22

Дэн Вайнреб (к сожалению, он скончался в прошлом году) написал обзор:

Lisp Survey

Есть много различий между реализациями CL. Невозможно покрыть все различные потребности (скорость, размер, лицензия, цена, совместимость, поддержка операционной системы, ...) пользователей для системы Lisp в одной реализации. Нужно найти локальный оптимум, используя одну или несколько доступных реализаций, которые следуют определенной философии:

  • бесплатно, бесплатно, на основе C (таким образом, широко портированы): ECL , CLISP

  • бесплатно, бесплатно, на основе JVM: ABCL

  • бесплатная, бесплатная, обширная нативная реализация: SBCL , CCL , CMUCL

  • проприетарная, коммерческая, очень обширная нативная реализация, отличная поддержка приложений на основе графического интерфейса: Allegro CL , LispWorks

по ОС / платформе:

Райнер Йосвиг
источник