Apa skema atau implementasi LISP terbaik untuk OS X?

87

Saya mencari versi Skema atau bahkan LISP yang dapat saya gunakan untuk memulihkan beberapa keterampilan pengembangan Lisp yang hilang. Beberapa kemampuan web akan bagus tetapi tidak penting.

Saya telah melihat skema Plt dan MIT dan, meskipun keduanya terlihat cukup bagus, Plt tampaknya lebih kaya fitur. Saya juga telah melihat implementasi Lisp tetapi semuanya tampak cukup mahal.

Saya menyukai implementasi yang gratis / tidak mahal karena kemungkinan besar ini hanyalah pemrograman hobi sesekali. Rekomendasi apa yang akan Anda miliki?

Mark Brittingham
sumber
7
Perhatikan bahwa Skema PLT berubah nama menjadi Racket.
soegaard
pertanyaan yang sangat terkait: stackoverflow.com/questions/2485859
pnkfelix
2
Mengapa pertanyaan ini belum ditutup dan hampir semua pertanyaan seperti ini sudah ditutup?
Erik Kaplun

Jawaban:

71

Saya akan pergi dengan Racket. Ini mungkin tidak secepat SBCL, tetapi memiliki perpustakaan dan dokumentasi yang sangat baik, serta lingkungan terintegrasi yang dirancang untuk membantu Anda mengembangkan dan menjalankan program Skema langsung dari gerbang. Apa yang saya sangat suka tentang IDE Racket, DrRacket, adalah apa yang tidak perlu Anda lakukan — Anda tidak perlu mempelajari Emacs, Anda tidak harus mempelajari SLIME, Anda tidak perlu khawatir tentang mencari ketiga- perpustakaan partai, karena hampir semua perpustakaan yang dimaksudkan untuk Racket dapat ditemukan dalam paket . Secara keseluruhan, ini benar-benar mengurangi kurva pembelajaran dan memungkinkan Anda untuk fokus pada tugas aktual yang ada: menulis kode yang hebat.

Juga, ia hadir dengan server web jika Anda ingin membuat situs web yang didukung Racket (yang saat ini saya cari).

Kyle Cronin
sumber
1
Saya telah memilih PLT kurang lebih secara acak beberapa minggu yang lalu, dan sejauh ini saya sangat senang dengan pilihan saya. Seperti yang Anda katakan, banyak pustaka dan dokumentasi, beberapa alat yang berguna.
Slartibartfast
Terima kasih, um, tidak ada. Saya lebih fokus pada alat dan dokumentasi daripada kecepatan jadi saya menggunakan PLT.
Mark Brittingham
1
Tentu. DrScheme dibuat dengan mempertimbangkan pendidikan, yang memiliki beberapa kelebihan (mudah digunakan dan didokumentasikan) tetapi juga memiliki beberapa kelemahan; kecuali jika Anda melalui HtDP ( htdp.org ) sebaiknya abaikan bahasa pengajaran dan gunakan Module untuk semuanya.
Kyle Cronin
Selain sekarang dinamai Racket, sekarang ada sistem paket dan katalog paket baru yang sekarang lebih disukai daripada Planet untuk sebagian besar kasus penggunaan.
Jack
22

Saya melakukan sedikit percobaan dengan ini.

Clozure Common Lisp (née Open MCL) sejauh ini adalah yang tercepat; 25-30 persen lebih cepat dari pesaing berikutnya di intel Mac Mini saya.

Skema MIT bekerja dengan cukup baik di Mac. Saya pikir saya akhirnya mengkompilasi sendiri, tetapi ada binari di situs itu. Skema PLT juga bagus, dan mungkin sedikit lebih terintegrasi dengan dunia Mac. (Skema PLT sekarang dikenal sebagai Raket , tetapi saya belum bereksperimen dengannya setelah perubahan.)

Charlie Martin
sumber
2
hampir semua yang saya coba; Umumnya itu adalah manipulasi daftar yang berat dan penggunaan loopmakro yang berat.
Charlie Martin
1
Mungkin ingin dicatat bahwa CCL tampaknya tidak berjalan pada Intel 32-bit, jadi Mac Mini saya agak tua untuk itu.
David Thornley
16

Saya penggemar berat Clojure, SBCL, dan Clozure CL. Mereka semua fantastis, tetapi mereka juga berlebihan jika yang ingin Anda lakukan hanyalah menyegarkan daging Lisping Anda. Mereka semua membutuhkan perburuan info yang tidak masuk akal, pencarian milis, penginstalan paket, irc mengintai, dll.

Skema Dr hanya menginstal dan menjalankan. Saya menyelesaikan 3 bab pertama SICP empat setengah tahun lalu menggunakan Dr Scheme. Tidak ada yang lebih mendalam daripada mendefinisikan evaluator Skema itu sendiri. Setelah Anda menyadari bahwa Anda akan memiliki lebih banyak kesabaran untuk saudara-saudara kekuatan industri.

dnolen
sumber
3
Sebenarnya saya tidak membutuhkan yang lain untuk pengaturan Ubuntu-SBCL-SLIME-stumpwm saya. Sebagai permulaan, Practical Common Lisp dan CLHS adalah semua yang Anda butuhkan, dan itu memberi Anda jalan panjang.
Svante
15

Untuk Skema, DrRacket luar biasa (termasuk dalam Racket ).

Untuk Common Lisp, Ready Lisp sangat bagus. Satu dmg dengan SBCL, Aquamacs, dan Slime bekerja di luar kotak.

Dari situs web:

Ready Lisp adalah gabungan dari beberapa paket Common Lisp yang populer terutama untuk Mac OS X, termasuk: Aquamacs, SBCL dan SLIME. Setelah diunduh, Anda akan memiliki satu bundel aplikasi yang dapat Anda klik dua kali - dan temukan diri Anda dalam Common Lisp REPL yang dikonfigurasi sepenuhnya.

Ini ideal untuk pengguna OS X yang ingin mencoba keindahan Common Lisp dengan sedikit kerumitan. Ini juga dapat digunakan oleh guru untuk memberi siswa Mac mereka lingkungan Common Lisp yang lengkap dan gratis untuk dibawa pulang bersama mereka. Persyaratan

Versi Ready Lisp adalah 20090127 dan memerlukan Mac OS X 10.5 (Leopard).

Ini mencakup versi perangkat lunak komponen berikut:

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
Sébastien RoccaSerra
sumber
5

Saya baru saja mulai bermain dengan Clojure . Ini rupanya memiliki kerangka web yang bagus , dan dikompilasi ke bytecode JVM.

Saya juga cukup sering menggunakan DrScheme . Ini adalah IDE yang sederhana namun berguna.

Matthew Schinckel
sumber
5

Tergantung bagaimana Anda mendefinisikan "Lisp", Clojure mungkin sesuai dengan kebutuhan Anda. Ini berjalan di OS X dengan baik (berjalan di mana saja JVM berjalan). Ini memiliki kemampuan web dan gratis.

Ini juga memiliki keuntungan menjadi baru dan segar dan menyenangkan untuk digunakan. Mungkin ideal untuk pemrograman hobi. Sangat mudah untuk menulis aplikasi web atau aplikasi GUI (menggunakan Java's Swing atau bahkan Qt).

Brian Carper
sumber
4

Saya sendiri belum pernah menggunakannya, tapi Steel Bank Common Lisp telah menerima beberapa kabar baik di reddit. Ini open source dan gratis jadi harganya cocok untuk beberapa hobi pemrograman.

Di masa lalu, saya memiliki GNU Common Lisp yang berjalan di macbook pro saya.

Dana
sumber
4

Jika Anda mencari Skema, Anda dapat melihat JazzScheme yang baru saja dirilis .

Marko
sumber
4

Saya merekomendasikan Racket untuk pendatang baru, karena ini menyediakan salah satu IDE terbaik untuk pemula Skema (atau lebih tepatnya, pemula pemrograman yang kebetulan menggunakan Skema, atau lebih baik lagi, bekerja melalui HtDP).

http://racket-lang.org/

Pilihan lain, bagi orang-orang yang lebih tertarik pada sistem Skema kecil untuk memodifikasi sendiri atau membaca kode sumbernya, adalah Skema Larceny, yang menarik terutama karena kompiler JIT-nya, Twobit, sendiri diimplementasikan sepenuhnya dalam Skema.

http://www.larcenists.org/


Pembaruan: Selain itu, Skema Chez baru-baru ini telah bersumber terbuka:

https://github.com/cisco/ChezScheme

(Ini mungkin tidak sekecil Larceny, tetapi ia memiliki kompiler pengoptimalan yang sangat agresif.)

pnkfelix.dll
sumber
di situs web, mereka sepertinya hanya menyebutkan kompilator asli, kompilator ke-C, dan implementasi CLR — di mana JIT?
Erik Kaplun
Kompiler asli adalah JIT.
pnkfelix
(yaitu, secara dinamis mengkompilasi setiap ekspresi Skema yang Anda masukkan melalui 'load' atau REPL ke dalam kode mesin x86. JIT di sini adalah untuk "tepat waktu"; ini tidak terkait dengan Java dan JVM, jika itu yang Anda pikir yang saya maksud dengan JIT)
pnkfelix
Saya tidak berpikir itu ada hubungannya dengan Java; hanya saja halaman beranda mengatakan "mengkompilasi langsung ke kode mesin asli" , dan itu bukan penjelasan VM / interpreter yang mengkompilasi JIT.
Erik Kaplun
1
Untuk menjawab pertanyaan Anda, Anda tidak bisa benar-benar mendapatkan biner mandiri dari Larceny seperti yang ada sekarang. Anda dapat memuat sumber Skema Anda dan kemudian membuat serialisasi heapnya (dengan kode yang dikompilasi) menjadi gambar heap, tetapi meskipun demikian Anda masih harus mendistribusikan ulang file heap dan biner runtime sebagai file terpisah. Saya telah mempertimbangkan untuk mencoba membuatnya lebih mudah untuk menggabungkan keduanya menjadi satu gambar biner, tetapi tidak pernah mengambil risiko.
pnkfelix
3

Anda mungkin ingin melihat apa yang ada di Association of Lisp Users atau Common Lisp Wiki untuk melihat apa yang ada di sana. Saya mengatur diri saya dengan Steel Bank Common Lisp dan Emacs, tetapi sejauh ini hanya sedikit yang saya lakukan.

David Thornley
sumber
2

Jika Anda hanya hobi pemrograman, LispWorks memiliki versi pribadi gratis yang cukup kuat dan canggih. Masalah terbesarnya adalah batas waktu berjalan beberapa jam. Jadi, Anda tidak akan menulis server yang berjalan lama di dalamnya, tetapi itu tidak berarti itu bukan alat yang berguna.

CLISP berjalan di hampir semua hal, dan sebenarnya cukup bagus, CLISP tidak melakukan utas. (Penting jika Anda ingin menulis server yang sebenarnya, tetapi seperti yang ditunjukkan PHP dan Perl kepada kita, Apache + [masukkan bahasa] adalah platform yang sangat layak.)

Will Hartung
sumber
2

Saya telah menemukan bahwa Chicken bekerja dengan baik untuk Scheme dan tersedia melalui homebrew.

brew install chicken

Sebagian besar kode dari SICP berfungsi dengan sedikit modifikasi.

Justin Meiners
sumber
1

Saya telah menanyakan diri saya pertanyaan yang sama belakangan ini. Setelah menggunakan DrScheme di OS X, ini akan menjadi pilihan distribusi Skema pertama saya untuk platform apa pun. IDE yang sangat bagus, fitur debugging, dan kumpulan library / framework yang bagus (termasuk toolkit GUI yang sangat bagus yang 'hanya berfungsi ... bahkan di Mac' ;-))

Namun, sekarang saya sedang mencari lingkungan yang sama nyamannya untuk Common Lisp. Itu turun ke CCL (OpenMCL) versus SBCL. SBCL tampaknya menjadi pilihan yang populer tetapi saya membaca bahwa di OS X tidak mendukung threading. (Apakah ini benar-benar menjadi masalah?). Clozure CL, di sisi lain, menawarkan dukungan yang baik untuk utas asli, jembatan obcj, dll ...

Saya menemukan CCL agak aneh tetapi saya akan tetap menggunakannya untuk sementara waktu - Ini masih terlihat seperti pilihan logis untuk integrasi.

Saya menggunakan Emacs 23 (dibangun dari sumber menggunakan --with-ns) dan Slime sebagai lingkungan dan ini bekerja dengan baik untuk saya. :-)


sumber
0

Pergilah dengan Racket . Saya sangat senang dengan itu!

Jaro
sumber