Яку загальну реалізацію Lisp використовувати? [зачинено]


45

Здається, існує безпосередня проблема з початком розвитку в Common Lisp: вибір реалізації. Що слід враховувати та яку вагу він повинен мати при розгляді впровадження програми CL?

Чи повинен він відповідати стандарту ANSI? Чи повинна вона підтримуватися SLIME? Чи не мають певних реалізацій хороші бібліотеки, документація тощо?


Цікаве запитання: я зараз читаю "Практичний звичайний Lisp" і пробую свої приклади в CLISP, але я думаю, що будь-яка реалізація відповідає стандарту: Common Lisp здається мені дуже зрілою та стабільною мовою.
Джорджіо

Відповіді:


25

Це залежить від ваших конкретних потреб та сильних та слабких сторін конкретних реалізацій. З цього приводу, ось що мені в першу чергу спадає на думку про різні реалізації:

SBCL досить швидкий і хороший в кількості хрускіт. Отже, якщо ви залежите від важких чисельних обчислень, це може бути правильною реалізацією для вас. Крім того, він має гідний висновок типу (для реалізації Lisp).

CLISP - це порівняно невелика реалізація байтових програм, яка може бути цікавою для сценаріїв.

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

Якщо ви хочете розгорнути JVM, є ABCL.

Для вбудованого використання, ECL.

Allegro має AllegroGraph, AllegroStore, простий у використанні візуальний конструктор графічного інтерфейсу та багато іншого, але не всім подобаються їх ліцензійні умови.

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

Звичайно, це просто широкі категорії та враження. Я б запропонував детальніше ознайомитися з SBCL, CCL та CLISP, оскільки це ІМХО - найбільш використовувані та найкраще підтримувані реалізації з відкритим кодом, а потім вибрати одну з них. Тобто, якщо ваші потреби не відповідають тому, що можуть запропонувати ABCL або ECL.

Чи повинен він відповідати стандарту ASNI?

Це не було б реалізацією CL, якби не. (Звичайно, на практиці може бути декілька відхилень, але відповідність має бути, принаймні, метою.)

Чи повинна вона підтримуватися SLIME?

Звичайно - якщо ви використовуєте SLIME. (На мою думку, це найкраще на даний момент середовище Lisp, але для кожного своє.)

Чи не мають певних реалізацій хороші бібліотеки, документація тощо?

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


22

Ден Вайнреб (на жаль, він минув минулого року) написав огляд:

Опитування Ліспа

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

  • безкоштовно, без витрат, на базі С (таким чином, широко перенесений): ECL , CLISP

  • безкоштовно, без витрат, на базі JVM: ABCL

  • безкоштовна, безцільна , широка внутрішня реалізація: SBCL , CCL , CMUCL

  • власницька, комерційна, дуже широка внутрішня реалізація, відмінна підтримка додатків на основі GUI: Allegro CL , LispWorks

від ОС / Платформи:

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.