Mà thực hiện Lisp thường sử dụng? [đóng cửa]


45

Dường như có một vấn đề ngay lập tức khi bắt đầu phát triển trong Common Lisp: chọn một triển khai. Những gì người ta nên tính đến, và nó nên chịu bao nhiêu cân khi xem xét thực hiện CL?

Nó có nên phù hợp với tiêu chuẩn ANSI? Nó có nên được hỗ trợ bởi SLIME? Do một số triển khai nhất định thiếu thư viện tốt, tài liệu, vv?


Câu hỏi thú vị: Tôi đang đọc "Thực tế chung Lisp" ngay bây giờ và tôi thử các ví dụ của mình trong CLISP, nhưng tôi đoán bất kỳ triển khai nào phù hợp với tiêu chuẩn: Lisp thông thường có vẻ là một ngôn ngữ rất trưởng thành và ổn định đối với tôi.
Giorgio

Câu trả lời:


25

Nó phụ thuộc vào nhu cầu cụ thể của bạn, và những điểm mạnh và điểm yếu của việc triển khai cụ thể. Điều đó nói rằng, đây là những gì đầu tiên tôi nghĩ đến khi nghĩ về các triển khai khác nhau:

SBCL là khá nhanh, và tốt về số giòn. Vì vậy, nếu bạn phụ thuộc vào tính toán số nặng, đó có thể là cách thực hiện phù hợp với bạn. Ngoài ra, nó có kiểu suy luận khá (đối với việc triển khai Lisp).

CLISP là một triển khai biên dịch byte tương đối nhỏ, có thể thú vị cho kịch bản.

Một vài năm trước, tôi đã thử CCL và bị mắc kẹt bởi vì tôi thích các thông báo lỗi của nó và theo dõi các dấu vết của các triển khai khác, cũng như thời gian biên dịch tương đối thấp. Đối với tôi, dễ sử dụng tương tác là một cái gì đó được ưu tiên rất cao. Nếu cần tốc độ của nó, tôi vẫn có thể chuyển sang SBCL cho chương trình đã triển khai. (Mặc dù không bao giờ cần thiết.) Ngoài ra, có tùy chọn hỗ trợ thương mại.

Nếu bạn muốn triển khai trên JVM, có ABCL.

Để sử dụng nhúng, ECL.

Allegro có AllegroGraph, AllegroStore, một trình xây dựng GUI trực quan đơn giản và hơn thế nữa, nhưng không phải ai cũng thích các điều khoản cấp phép của họ.

LispWorks, dường như cho vay khá tốt cho lập trình ứng dụng người dùng cuối với bộ công cụ GUI đa nền tảng đẹp và các điều khoản cấp phép có thể phù hợp với các nhóm nhỏ và lập trình viên đơn tốt hơn Allegro. (Ít nhất đó là những gì tôi thích.)

Tất nhiên, đây chỉ là những phạm trù rộng lớn và ấn tượng. Tôi khuyên bạn nên xem xét kỹ hơn về SBCL, CCL và CLISP, vì đó là những triển khai nguồn mở được sử dụng nhiều nhất và được hỗ trợ tốt nhất, sau đó chọn một trong số đó. Đó là, trừ khi nhu cầu của bạn phù hợp với những gì ABCL hoặc ECL phải cung cấp.

Nó có nên phù hợp với tiêu chuẩn ASNI?

Nó sẽ không phải là một triển khai CL, nếu nó không. (Tất nhiên, có thể có một vài sai lệch trong thực tế, nhưng sự phù hợp ít nhất phải là mục tiêu.)

Nó có nên được hỗ trợ bởi SLIME?

Chắc chắn - nếu bạn sử dụng SLIME. (Theo tôi, đó là môi trường Lisp tốt nhất hiện có, nhưng với từng môi trường của riêng anh ấy.)

Do một số triển khai nhất định thiếu thư viện tốt, tài liệu, vv?

Ít nhất SBCL, CCL, Allegro và LispWorks phải được hỗ trợ tốt bởi hầu hết các thư viện thường được sử dụng. CLISP đi kèm với một bộ sưu tập thư viện khá đẹp, và cũng nên được hỗ trợ chủ yếu.


22

Dan Weinreb (không may ông qua đời năm ngoái) đã viết một cái nhìn tổng quan:

Khảo sát Lisp

Có nhiều sự khác biệt giữa các triển khai CL. Không thể đáp ứng tất cả các nhu cầu khác nhau (tốc độ, kích thước, giấy phép, giá cả, khả năng tương thích, hỗ trợ hệ điều hành, ...) của người dùng cho một hệ thống Lisp trong một lần thực hiện. Người ta phải tìm một tối ưu cục bộ bằng cách sử dụng một hoặc nhiều triển khai có sẵn, theo một triết lý nhất định:

  • miễn phí, miễn phí, dựa trên C (được chuyển rộng rãi): ECL , CLISP

  • miễn phí, miễn phí, dựa trên JVM: ABCL

  • miễn phí, miễn phí, triển khai bản địa rộng rãi: SBCL , CCL , CMUCL

  • độc quyền, thương mại, triển khai riêng rộng rãi, hỗ trợ tuyệt vời cho các ứng dụng dựa trên GUI: Allegro CL , LispWorks

bởi HĐH / Nền tảng:

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.