Tampaknya ada masalah langsung dengan mulai berkembang di Common Lisp: memilih implementasi. Apa yang harus diperhitungkan, dan berapa berat yang harus ditanggung ketika mempertimbangkan implementasi CL?
Apakah harus sesuai dengan standar ANSI? Haruskah ini didukung oleh SLIME? Apakah implementasi tertentu kekurangan perpustakaan, dokumentasi, dll?
lisp
implementations
common-lisp
anonim, tanpa nama
sumber
sumber
Jawaban:
Itu tergantung pada kebutuhan spesifik Anda, dan kekuatan dan kelemahan implementasi tertentu. Yang mengatakan, inilah yang pertama terlintas di pikiran saya ketika berpikir tentang implementasi yang berbeda:
SBCL cukup cepat, dan bagus dalam angka-angka. Jadi, jika Anda bergantung pada perhitungan angka yang berat, itu mungkin implementasi yang tepat untuk Anda. Juga, memiliki inferensi tipe yang layak (untuk implementasi Lisp).
CLISP adalah implementasi byte-compiling yang relatif kecil yang mungkin menarik untuk skrip.
Beberapa tahun yang lalu, saya mencoba CCL dan tetap menggunakannya, karena saya lebih suka pesan kesalahan dan tumpukan jejak untuk yang dari implementasi lain, serta waktu kompilasi yang relatif rendah. Bagi saya, kemudahan penggunaan interaktif adalah sesuatu yang sangat diprioritaskan. Jika kecepatannya diperlukan, saya mungkin masih beralih ke SBCL untuk program yang digunakan. (Namun, tidak perlu melakukannya.) Juga, ada opsi dukungan komersial.
Jika Anda ingin menggunakan JVM, ada ABCL.
Untuk penggunaan tertanam, ECL.
Allegro memiliki AllegroGraph, AllegroStore, pembangun GUI visual yang mudah digunakan, dan banyak lagi, tetapi tidak semua orang menyukai ketentuan lisensi mereka.
LispWorks, tampaknya memberikan dukungan yang cukup baik untuk pemrograman aplikasi pengguna akhir dengan toolkit GUI lintas-platform yang bagus dan persyaratan lisensi yang mungkin cocok untuk tim kecil dan pemrogram tunggal lebih baik daripada Allegro. (Setidaknya itu yang saya inginkan.)
Tentu saja, ini hanya kategori dan tayangan luas. Saya sarankan untuk melihat lebih dekat pada SBCL, CCL, dan CLISP, karena itu adalah IMHO implementasi open source yang paling banyak digunakan dan paling didukung, kemudian memilih salah satunya. Yaitu, kecuali jika kebutuhan Anda sesuai dengan apa yang ditawarkan ABCL atau ECL.
Ini tidak akan menjadi implementasi CL, jika tidak. (Tentu saja, mungkin ada beberapa penyimpangan dalam praktik, tetapi kesesuaian setidaknya harus menjadi tujuannya.)
Tentu - jika Anda menggunakan SLIME. (Menurut saya, ini adalah lingkungan Lisp terbaik yang tersedia saat ini, tetapi untuk masing-masing lingkungannya.)
Setidaknya SBCL, CCL, Allegro, dan LispWorks harus didukung dengan baik oleh sebagian besar perpustakaan yang biasa digunakan. CLISP hadir dengan koleksi perpustakaan yang cukup bagus, dan sebagian besar juga harus didukung.
sumber
Dan Weinreb (sayangnya dia meninggal tahun lalu) menulis tinjauan:
Survei Lisp
Ada banyak perbedaan antara implementasi CL. Tidak mungkin untuk memenuhi semua kebutuhan yang berbeda (kecepatan, ukuran, lisensi, harga, kompatibilitas, dukungan sistem operasi, ...) pengguna untuk sistem Lisp dalam satu implementasi. Kita harus menemukan optimal lokal dengan menggunakan satu atau lebih implementasi yang tersedia, yang mengikuti filosofi tertentu:
gratis, tanpa biaya, berbasis-C (dengan demikian banyak porting): ECL , CLISP
gratis, tanpa biaya, berbasis JVM: ABCL
implementasi asli gratis, gratis, luas: SBCL , CCL , CMUCL
kepemilikan, komersial, implementasi asli yang sangat luas, dukungan yang sangat baik untuk aplikasi berbasis GUI: Allegro CL , LispWorks
oleh OS / Platform:
sumber