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

В чем основные отличия между CLISP, ECL и SBCL?

Я хочу сделать некоторые моделирования с помощью ACT-R, и мне понадобится реализация Common Lisp. У меня есть три доступные версии Common Lisp: (1) CLISP [1], (2) ECL [1] и (3) SBCL [1 ]. Как вы могли бы собрать из ссылок, я прочитал немного обо всех трех из них в Википедии. Но мне хотелось бы мнение некоторых опытных пользователей. В частности, я хотел бы знать:

(i) В чем основные отличия между тремя реализациями (например: что они лучше всего подходят?). Кто-нибудь из них используется только для определенных целей и поэтому не может быть подходящим для конкретных задач?)?

(ii) Есть ли очевидный выбор либо на основании того, что я буду использовать ACT-R, либо по общим причинам?


Поскольку это можно было бы интерпретировать как субъективный вопрос Я проверил Какие темы я могу задать здесь и Какие типы вопросов я должен избегать?, и если я правильно прочитайте, он не должен квалифицироваться как запретный плод.

4b9b3361

Ответ 1

Я написал приложение с умеренным размером и запустил его в SBCL, CCL, ECL, CLISP, ABCL и LispWorks. Для моего приложения SBCL является самым быстрым, и он получил довольно хороший отладчик. Это немного строгие в отношении некоторых предупреждений - вы можете в конечном итоге кодировать несколько более упорядоченным способом или отключить одно или несколько предупреждений.

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

Поскольку SBCL компилируется так агрессивно, время от времени stacktrace в отладчике менее информативен, чем мне хотелось бы. Вероятно, это можно контролировать с помощью параметров, но я просто повторно запускаю один и тот же код в одной из других реализаций. Например, ABCL имеет информативную стекловидную структуру, например, как я помню. (Он также очень медленный, но если вам нужна реальная общая Lisp и совместимость с Java, это единственный вариант.)

Одна из приятных вещей в Common Lisp заключается в количестве высококачественных реализаций, большинство из которых бесплатны.

Для неформального использования - например. для изучения Common Lisp, CCL или CLISP могут быть лучшим выбором, чем SBCL.

Я никогда не пытался скомпилировать C с использованием ECL. Возможно, что он будет бить SBCL на скорости для некоторых приложений. Я понятия не имею.

CLISP и LispWorks не будут обрабатывать сколь угодно длинные списки аргументов (если это не было исправлено за последние пару лет, но я сомневаюсь в этом). Это оказалось проблемой для моего приложения, но для большинства программ это не проблема.

Не выходит ли ACT-R из Карнеги-Меллона? Что его авторы используют? Мое предположение было бы CMUCL или SBCL, который был получен из CMUCL. (Я только немного пробовал CMUCL, его интерпретатор очень медленный, но я предполагаю, что скомпилированный код очень быстрый. Я думаю, что большинство людей выбирают SBCL над CMUCL.)

(Возможно, этот вопрос принадлежит программистам .SE.)

Ответ 2

В общем случае SBCL является выбором по умолчанию среди open-source Lisps. Он прочный, хорошо поддерживается, производит быстрый код и предоставляет множество преимуществ, помимо стандартных мандатов (concurrency примитивов, профилирования и т.д.). Другая реализация со схожими свойствами - CCL.

CLISP более подходит, если вы не инженер, или хотите быстро показать Lisp кому-то не инженеру. Это довольно простая реализация, но быстро запускается и удобна для пользователя. A Lisp -калькулятор:)

ECL Основная цель продажи заключается в том, что она внедряется, т.е. довольно легко заставить ее работать внутри некоторого приложения C, например, веб-сервера и т.д. Это хороший выбор для вундеркиндов, которые хотят исследовать решения на границе из Lisp и внешнего мира. Если вы не заинтересованы в таком случае использования, я бы не рекомендовал вам попробовать его, тем более, что он не активно поддерживается на данный момент.

Ответ 3

Их имена, их ошибки и их нестандартные дополнения (с их помощью заблокируют вас)

Я использую CLISP как REPL и тестирование во время dev и обычно SBCL для производства. ECL я никогда не использовал.

Я рекомендую вам протестировать ваш код более чем с одной версией.