Кажется, есть непосредственная проблема с началом разработки в Common Lisp: выбор реализации. Что следует учитывать и какой вес он должен иметь при рассмотрении реализации CL?
Должно ли оно соответствовать стандарту ANSI? Должно ли оно поддерживаться SLIME? В некоторых реализациях отсутствуют хорошие библиотеки, документация и т. Д.?
lisp
implementations
common-lisp
анонимный
источник
источник
Ответы:
Это зависит от ваших конкретных потребностей, а также от сильных и слабых сторон конкретных реализаций. Тем не менее, вот что первое, что приходит мне в голову, когда я думаю о различных реализациях:
SBCL довольно быстр и хорош в обработке чисел. Так что, если вы зависите от сложных числовых вычислений, это может быть правильной реализацией для вас. Кроме того, он имеет приличный вывод типа (для реализации на Лиспе).
CLISP - это относительно небольшая реализация с байтовой компиляцией, которая может быть интересна для сценариев.
Несколько лет назад я попробовал CCL и придерживался его, потому что я предпочел его сообщения об ошибках и трассировки стека по сравнению с другими реализациями, а также его относительно низкое время компиляции. Для меня простота интерактивного использования является чем-то очень важным. Если его скорость необходима, я все еще мог бы переключиться на SBCL для развернутой программы. (Тем не менее, никогда не нужно.) Кроме того, есть возможность коммерческой поддержки.
Если вы хотите развернуть на JVM, есть ABCL.
Для встроенного использования ECL.
У Allegro есть AllegroGraph, AllegroStore, простой в использовании визуальный конструктор GUI и многое другое, но не всем нравятся их условия лицензирования.
LispWorks, кажется, вполне пригоден для разработки приложений для конечных пользователей с хорошим кроссплатформенным инструментарием графического интерфейса пользователя и условиями лицензирования, которые могут подойти для небольших команд и отдельных программистов лучше, чем у Allegro. (По крайней мере это то, что я бы предпочел.)
Конечно, это только широкие категории и впечатления. Я бы посоветовал поближе взглянуть на SBCL, CCL и CLISP, так как это IMHO наиболее часто используемые и поддерживаемые реализации с открытым исходным кодом, а затем выбрать одну из них. То есть, если ваши потребности не совпадают с тем, что могут предложить ABCL или ECL.
Это не будет реализация CL, если это не так. (Конечно, на практике может быть несколько отклонений, но целью должно быть как минимум соответствие).
Конечно - если вы используете SLIME. (На мой взгляд, это лучшая на данный момент среда на Лиспе, но у каждого своя.)
По крайней мере, SBCL, CCL, Allegro и LispWorks должны хорошо поддерживаться большинством широко используемых библиотек. CLISP поставляется с довольно симпатичной библиотекой, и его также следует поддерживать в основном.
источник
Дэн Вайнреб (к сожалению, он скончался в прошлом году) написал обзор:
Lisp Survey
Есть много различий между реализациями CL. Невозможно покрыть все различные потребности (скорость, размер, лицензия, цена, совместимость, поддержка операционной системы, ...) пользователей для системы Lisp в одной реализации. Нужно найти локальный оптимум, используя одну или несколько доступных реализаций, которые следуют определенной философии:
бесплатно, бесплатно, на основе C (таким образом, широко портированы): ECL , CLISP
бесплатно, бесплатно, на основе JVM: ABCL
бесплатная, бесплатная, обширная нативная реализация: SBCL , CCL , CMUCL
проприетарная, коммерческая, очень обширная нативная реализация, отличная поддержка приложений на основе графического интерфейса: Allegro CL , LispWorks
по ОС / платформе:
источник