Triển khai Đề án hoặc LISP tốt nhất cho OS X là gì?


86

Tôi đang tìm kiếm một phiên bản của Scheme hoặc thậm chí LISP mà tôi có thể sử dụng để khôi phục một số kỹ năng phát triển Lisp bị mất. Một số tính năng web sẽ tốt nhưng không cần thiết.

Tôi đã xem xét sơ đồ Plt và MIT và mặc dù cả hai đều trông khá đẹp, nhưng Plt có vẻ phong phú hơn về tính năng. Tôi cũng đã xem xét triển khai Lisp nhưng tất cả đều có vẻ khá đắt.

Tôi ủng hộ các triển khai miễn phí / không tốn kém vì đây thực sự có khả năng chỉ là lập trình theo sở thích không thường xuyên. Bạn sẽ có những đề xuất nào?


6
Lưu ý rằng PLT Scheme đã đổi tên thành Racket.
soegaard 9/12/12

câu hỏi có liên quan mạnh: stackoverflow.com/questions/2485859
pnkfelix,

2
Tại sao câu hỏi này chưa được đóng lại và hầu như tất cả những người khác như thế này đều có?
Erik Kaplun

Câu trả lời:


71

Tôi muốn đi với Vợt. Nó có thể không nhanh như SBCL, nhưng nó có thư viện và tài liệu tuyệt vời, cũng như một môi trường tích hợp được thiết kế để giúp bạn phát triển và chạy các chương trình Scheme ngay lập tức. Điều tôi thực sự thích về IDE của Racket, DrRacket, là những gì bạn không phải làm — bạn không cần phải học Emacs, bạn không cần phải học SLIME, bạn không phải lo lắng về việc săn lùng thứ ba- thư viện bên, vì hầu như tất cả các thư viện dành cho Racket đều có thể được tìm thấy trong các gói . Nói chung, nó thực sự cắt giảm đường cong học tập và cho phép bạn tập trung vào nhiệm vụ thực tế trong tầm tay: viết mã tuyệt vời.

Ngoài ra, nó đi kèm với một máy chủ web nếu bạn muốn tạo các trang web hỗ trợ Racket (mà tôi hiện đang xem xét).


1
Tôi đã chọn PLT ít nhiều ngẫu nhiên vài tuần trước, và cho đến nay tôi rất hài lòng với lựa chọn của mình. Như bạn đã nói, rất nhiều thư viện và tài liệu, một số công cụ hữu ích.
Slartibartfast

Cảm ơn, ừm, không ai cả. Tôi tập trung vào các công cụ và tài liệu hơn là tốc độ, vì vậy tôi sẽ sử dụng PLT.
Mark Brittingham

1
Điều chắc chắn. DrScheme được tạo ra với mục đích giáo dục, có một số ưu điểm (đơn giản để sử dụng và được ghi chép lại) nhưng cũng có một số nhược điểm; trừ khi bạn đang xem qua HtDP ( htdp.org ), tốt nhất bạn nên bỏ qua các ngôn ngữ giảng dạy và sử dụng Mô-đun cho mọi thứ.
Kyle Cronin

Ngoài việc bây giờ được đặt tên là Racket, bây giờ có một hệ thống gói mới và danh mục gói hiện được ưu tiên hơn Planet cho hầu hết các trường hợp sử dụng.
Jack

22

Tôi đã thử nghiệm khá nhiều điều này.

Clozure Common Lisp (nhũ danh Open MCL) là nhanh nhất cho đến nay; Nhanh hơn 25-30 phần trăm so với đối thủ cạnh tranh tiếp theo trên Mac Mini intel của tôi.

MIT Scheme hoạt động khá tốt trên máy Mac. Tôi nghĩ rằng cuối cùng tôi đã tự biên soạn nó, nhưng có những tệp nhị phân tại trang web đó. PLT Scheme cũng rất hay và có thể được tích hợp tốt hơn một chút vào thế giới Mac. (PLT Scheme bây giờ được gọi là Racket , nhưng tôi chưa thử nghiệm nó sau khi thay đổi.)


2
khá nhiều thứ tôi đã thử; nói chung đó là thao tác danh sách nặng và sử dụng nhiều loopmacro.
Charlie Martin

1
Có thể muốn lưu ý rằng CCL dường như không chạy trên Intel 32-bit, vì vậy Mac Mini của tôi hơi cũ đối với nó.
David Thornley

16

Tôi là một fan cuồng nhiệt của Clojure, SBCL và Clozure CL. Tất cả chúng đều tuyệt vời, nhưng chúng cũng quá mức cần thiết nếu tất cả những gì bạn muốn làm là làm mới món Lisping của mình. Tất cả chúng đều yêu cầu một lượng lớn thông tin săn tìm, tìm kiếm danh sách gửi thư, cài đặt gói, ẩn nấp, v.v.

Dr Scheme chỉ cần cài đặt và chạy. Tôi đã hoàn thành 3 chương đầu tiên của SICP cách đây bốn năm rưỡi bằng cách sử dụng Đề án Tiến sĩ. Không có gì sâu sắc hơn việc định nghĩa một người đánh giá Đề án. Một khi bạn hiểu rằng bạn sẽ có nhiều kiên nhẫn hơn đối với những người anh em sức mạnh công nghiệp.


3
Trên thực tế, tôi không cần bất kỳ thứ gì khác cho thiết lập Ubuntu-SBCL-SLIME-stumpwm của mình. Đối với những người mới bắt đầu, Danh sách Chung Thực tế và CLHS là tất cả những gì bạn cần, và điều đó mang lại cho bạn một chặng đường dài.
Svante

15

Đối với Scheme, DrRacket thật tuyệt vời (bao gồm trong Racket ).

Đối với Common Lisp, Ready Lisp là rất tốt. Một dmg duy nhất với SBCL, Aquamacs và Slime hoạt động hiệu quả.

Từ trang Web:

Ready Lisp là sự liên kết với nhau của một số gói Common Lisp phổ biến đặc biệt dành cho Mac OS X, bao gồm: Aquamacs, SBCL và SLIME. Sau khi tải xuống, bạn sẽ có một gói ứng dụng duy nhất mà bạn có thể nhấp đúp vào - và thấy mình trong Common Lisp REPL được cấu hình đầy đủ.

Nó lý tưởng cho những người dùng OS X, những người muốn thử vẻ đẹp của Common Lisp mà ít gặp rắc rối. Nó cũng có thể được sử dụng bởi giáo viên để cung cấp cho học sinh Mac của họ một môi trường Common Lisp hoàn chỉnh, miễn phí để mang về nhà với họ. Yêu cầu

Phiên bản hiện tại của Ready Lisp là 20090127 và yêu cầu Mac OS X 10.5 (Leopard).

Nó bao gồm các phiên bản phần mềm thành phần sau:

Aquamacs  1.6
SBCL    1.0.24
SLIME   2009-01-23
CL-FAD  0.6.2
CL-PPCRE    2.0.1
LOCAL-TIME  0.9.3
SERIES  2.2.10
CL HyperSpec    7.0
paredit.el  20
redshank.el     1
cldoc.el    1.16


5

Tùy thuộc vào cách bạn xác định "Lisp", Clojure có thể phù hợp với hóa đơn. Nó chạy trên OS X tốt (nó chạy ở bất kỳ đâu mà JVM chạy). Nó có khả năng web và hoàn toàn miễn phí.

Nó cũng có lợi ích là luôn mới mẻ và thú vị khi sử dụng. Có thể là lý tưởng cho lập trình theo sở thích. Thật dễ dàng để viết ứng dụng web hoặc ứng dụng GUI (sử dụng Swing của Java hoặc thậm chí là Qt).


4

Bản thân tôi chưa sử dụng nó, nhưng Steel Bank Common Lisp đã nhận được một số tiếng vang tốt trên reddit. Nó là mã nguồn mở và miễn phí nên giá cả phù hợp cho một số lập trình theo sở thích.

Trước đây, tôi đã sử dụng GNU Common Lisp trên macbook pro của mình.


4

Nếu bạn đang tìm kiếm Đề án, bạn có thể xem JazzScheme vừa được phát hành .


4

Tôi khuyên bạn nên sử dụng Racket cho những người mới đến, vì nó cung cấp một trong những IDE đẹp nhất cho những người mới bắt đầu Scheme (hay đúng hơn là những người mới bắt đầu lập trình tình cờ sử dụng Scheme, hoặc tốt hơn nữa, đang làm việc theo cách của họ thông qua HtDP).

http://racket-lang.org/

Một lựa chọn khác, dành cho những người quan tâm hơn đến hệ thống Scheme nhỏ để tự sửa đổi hoặc đọc mã nguồn của nó, là Larceny Scheme, được quan tâm phần lớn vì trình biên dịch JIT của nó, Twobit, được thực hiện hoàn toàn trong Scheme.

http://www.larcenists.org/


Cập nhật: Ngoài ra, Chez Scheme gần đây đã được mở nguồn:

https://github.com/cisco/ChezScheme

(Nó có thể không "nhỏ" như Larceny, nhưng nó có một trình biên dịch tối ưu hóa rất tích cực.)


trên trang web, họ dường như chỉ đề cập đến trình biên dịch gốc, trình biên dịch to-C và triển khai CLR — đâu là JIT?
Erik Kaplun

Trình biên dịch gốc một JIT.
pnkfelix

(nghĩa là, nó tự động biên dịch mọi biểu thức Đề án mà bạn cung cấp nó thông qua 'tải' hoặc REPL thành mã máy x86. JIT ở đây là "đúng lúc"; nó không liên quan đến Java và JVM, trong trường hợp đó là những gì bạn tôi nghĩ ý tôi là JIT)
pnkfelix

Tôi không nghĩ nó có liên quan gì đến Java; chỉ là trang chủ cho biết "biên dịch trực tiếp sang mã máy gốc" và đó không phải là cách mà các máy ảo / trình thông dịch JIT biên dịch thường được mô tả.
Erik Kaplun,

1
Để trả lời câu hỏi của bạn, bạn không thể thực sự nhận được một tệp nhị phân độc lập từ Larceny như hiện tại. Bạn có thể tải nguồn Scheme của mình và sau đó tuần tự hóa heap của nó (với mã đã biên dịch) thành hình ảnh heap, nhưng ngay cả khi đó bạn vẫn phải phân phối lại tệp heap và tệp nhị phân thời gian chạy dưới dạng các tệp riêng biệt. Tôi đã cân nhắc việc cố gắng hợp nhất cả hai thành một hình ảnh nhị phân duy nhất dễ dàng hơn, nhưng chưa bao giờ lao vào.
pnkfelix


2

Nếu bạn chỉ là lập trình theo sở thích, LispWorks có một phiên bản cá nhân, miễn phí, khá mạnh mẽ và phức tạp. Vấn đề lớn nhất là giới hạn thời gian chạy trong vài giờ. Vì vậy, bạn sẽ không viết bất kỳ máy chủ chạy dài nào trong đó, nhưng điều đó không có nghĩa là nó không phải là một công cụ hữu ích.

CLISP chạy trên hầu hết mọi thứ và thực sự khá hay, nó không thực hiện các chuỗi. (Điều quan trọng nếu bạn muốn viết một máy chủ thực tế, nhưng như PHP và Perl đã cho chúng ta thấy, Apache + [insert language] là một nền tảng rất khả thi.)



1

Tôi đã tự hỏi mình câu hỏi tương tự gần đây. Đã sử dụng DrScheme trên OS X, đây sẽ là lựa chọn đầu tiên của tôi về phân phối Đề án cho bất kỳ nền tảng nào. IDE rất đẹp, các tính năng gỡ lỗi và một bộ thư viện / khung công tác tốt (bao gồm một bộ công cụ GUI rất đẹp 'chỉ hoạt động ... ngay cả trên Mac' ;-))

Tuy nhiên, tôi hiện đang tìm kiếm một môi trường thoải mái tương tự cho Common Lisp. Nó giảm xuống CCL (OpenMCL) so với SBCL. SBCL dường như là lựa chọn phổ biến nhưng tôi đọc rằng trên OS X không hỗ trợ phân luồng. (Đây có thực sự là một vấn đề?). Mặt khác, Clozure CL tự hào hỗ trợ tốt cho các luồng gốc, obcj-bridge, v.v.

Tôi thấy CCL hơi kỳ lạ nhưng tôi sẽ gắn bó với nó một thời gian - Nó vẫn có vẻ là sự lựa chọn hợp lý để tích hợp.

Tôi sử dụng Emacs 23 (được xây dựng từ nguồn sử dụng --with-ns) và Slime làm môi trường và điều này hoạt động tốt đối với tôi. :-)


1

Tôi nhận thấy rằng Chicken hoạt động tốt cho Scheme và có sẵn thông qua homebrew.

brew install chicken

Hầu hết mã từ SICP hoạt động với những sửa đổi nhỏ.


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.