Wydaje się, że istnieje natychmiastowy problem z rozpoczęciem opracowywania w Common Lisp: wybór implementacji. Co należy wziąć pod uwagę i jak dużą wagę należy wziąć pod uwagę przy wdrażaniu CL?
Czy powinien być zgodny ze standardem ANSI? Czy powinien być obsługiwany przez SLIME? Czy w niektórych implementacjach brakuje dobrych bibliotek, dokumentacji itp.?
lisp
implementations
common-lisp
anonimowy
źródło
źródło
Odpowiedzi:
To zależy od twoich konkretnych potrzeb oraz mocnych i słabych stron poszczególnych wdrożeń. To powiedziawszy, oto pierwsze, co przychodzi mi do głowy, gdy myślę o różnych implementacjach:
SBCL jest dość szybki i dobrze radzi sobie z numerowaniem. Zatem jeśli zależysz od intensywnych obliczeń numerycznych, może to być odpowiednia implementacja dla Ciebie. Ma też przyzwoite wnioskowanie o typie (dla implementacji Lisp).
CLISP to stosunkowo niewielka implementacja kompilująca bajty, która może być interesująca dla skryptów.
Kilka lat temu wypróbowałem CCL i trzymałem się go, ponieważ wolałem komunikaty o błędach i ślady stosu od innych implementacji, a także stosunkowo krótki czas kompilacji. Dla mnie łatwość interaktywnego użytkowania jest czymś o bardzo wysokim priorytecie. Jeśli potrzebna jest jego szybkość, nadal mogę przejść na SBCL dla wdrożonego programu. (Nigdy nie było to konieczne). Istnieje również opcja komercyjnego wsparcia.
Jeśli chcesz wdrożyć na JVM, jest ABCL.
Do wbudowania, ECL.
Allegro ma AllegroGraph, AllegroStore, prosty w obsłudze wizualny konstruktor GUI i wiele więcej, ale nie wszystkim podobają się warunki licencji.
LispWorks wydaje się całkiem dobrze nadawać do programowania aplikacji dla użytkowników końcowych dzięki ładnemu wieloplatformowemu zestawowi narzędzi GUI i warunkom licencyjnym, które mogą pasować do małych zespołów i pojedynczych programistów lepiej niż Allegro. (Przynajmniej tak wolałbym.)
Oczywiście są to tylko ogólne kategorie i wrażenia. Proponuję przyjrzeć się bliżej SBCL, CCL i CLISP, ponieważ są to najczęściej używane i najlepiej obsługiwane implementacje open source IMHO, a następnie wybranie jednej z nich. To znaczy, chyba że twoje potrzeby odpowiadają temu, co ABCL lub ECL mają do zaoferowania.
Gdyby nie to, nie byłaby to implementacja CL. (Oczywiście może być kilka odchyleń w praktyce, ale zgodność powinna przynajmniej być celem.)
Jasne - jeśli używasz SLIME. (Moim zdaniem jest to najlepsze dostępne obecnie środowisko Lisp, ale dla każdego z nich.)
Przynajmniej SBCL, CCL, Allegro i LispWorks powinny być dobrze obsługiwane przez większość powszechnie używanych bibliotek. CLISP jest wyposażony w całkiem niezłą kolekcję bibliotek i powinien być w większości obsługiwany.
źródło
Dan Weinreb (niestety zmarł w zeszłym roku) napisał przegląd:
Ankieta Lisp
Istnieje wiele różnic między implementacjami CL. Nie jest możliwe pokrycie wszystkich różnych potrzeb (szybkość, rozmiar, licencja, cena, kompatybilność, obsługa systemu operacyjnego, ...) użytkowników systemu Lisp w jednym wdrożeniu. Należy znaleźć lokalne optimum, używając jednej lub więcej dostępnych implementacji, które są zgodne z pewną filozofią:
darmowy, bezpłatny, oparty na C (tak szeroko rozpowszechniony): ECL , CLISP
bezpłatny, bezpłatny, oparty na JVM: ABCL
darmowa, bezpłatna, rozbudowana natywna implementacja: SBCL , CCL , CMUCL
zastrzeżona, komercyjna, bardzo rozbudowana natywna implementacja, doskonałe wsparcie dla aplikacji opartych na GUI: Allegro CL , LispWorks
według systemu operacyjnego / platformy:
źródło