Jelas dimungkinkan untuk menulis hampir semua jenis aplikasi di hampir semua bahasa pemrograman, terutama dalam bahasa yang kuat seperti Lisp (baik itu Skema atau Lisp Umum). Tapi apakah praktis menggunakannya untuk pengembangan web? Jika ya, apa yang seharusnya menjadi titik awal yang baik? Di manakah dapat ditemukan sumber daya yang tepat (alat, perpustakaan, dokumentasi, praktik terbaik, contoh, dll.) Untuk proyek semacam ini?
100
Jawaban:
Ya, pengembangan web adalah salah satu kekuatan Common Lisp saat ini.
Sebagai server web, gunakan Hunchentoot , sebelumnya dikenal sebagai tbnl, oleh Dr. Edmund Weitz.
Anda dapat menjalankannya sebagai back-end ke Apache menggunakan mod_proxy sebagai proxy terbalik, atau sebagai server yang berdiri sendiri.
Berbagai solusi pembuatan HTML tersedia, dari template gaya PHP hingga peretasan makro Lisp hingga XSLT. Silakan pilih.
HTML-TEMPLATE adalah salah satu contohnya.
Closure XML tersedia untuk parsing XML, serialisasi, XPath 1.0, XSLT 1.0. Ada juga HTML Penutupan untuk penguraian sup tag HTML.
(Pengungkapan penuh: Saya adalah pengelola Closure XML dan Closure HTML.)
Jika Anda suka, Parenscript dapat membuat pengalaman JavaScript Anda lebih keren, tetapi Anda juga dapat menulis JavaScript lama sendiri, tentunya.
Solusi peningkatan JavaScript keren lainnya di jwacs , yang ditulis dalam Common Lisp dan mengubah JavaScript untuk menambahkan dukungan lanjutan.
Proyek layanan web mungkin memerlukan klien HTTP selain server.
Drakma adalah perpustakaan yang digunakan untuk hari ini.
PURI berguna untuk manipulasi URI.
Dan masih ada lagi! Salah satu titik awal adalah cliki, misalnya cliki.net/web .
Di web, tidak ada yang tahu server Anda ditulis dalam Common Lisp :-)
sumber
Pengembangan web di Common Lisp efektif dan menyenangkan.
Beberapa contoh:
CL-WHO memungkinkan Anda untuk menulis HTML tanpa melupakan tag penutup lagi.
Weblocks memungkinkan Anda menentukan formulir secara deklaratif dengan validasi bawaan :
Ini juga mendukung AJAX dengan cara yang sepenuhnya otomatis, kembali ke tautan normal jika browser tidak mendukungnya.
cl-prevalence adalah alternatif yang sangat sederhana untuk SQL.
Cukup banyak orang yang menggunakan teknologi ini akhir-akhir ini untuk aplikasi yang sangat penting - dengan sukses.
Proyek open-source CL yang paling penting sebenarnya memiliki dukungan komunitas yang sangat baik.
sumber
Ada beberapa kerangka web di luar sana untuk pengembangan web. Lihat di:
Jika Anda ingin alat cadel yang didukung dengan baik maka Anda harus membayarnya. Tidak ada komunitas yang sangat besar di sekitar alat sumber terbuka sehingga mereka tidak memiliki tingkat dokumentasi / adopsi yang sama seperti, katakanlah, Django pada Python.
Berikut beberapa produk cadel komersial:
Perlu juga dicatat bahwa Reddit awalnya dibangun di Lisp, tetapi penulis kemudian bermigrasi ke Python, mengutip kurangnya pustaka yang digunakan dan didokumentasikan dengan baik. ( tautan )
sumber
Saya tidak dapat berbicara dengan kerangka kerja lain, tetapi saya sangat beruntung menggunakan Hunchentoot untuk server web (ini berfungsi dengan baik sendiri, atau Anda dapat meletakkannya di belakang Apache ). Apa yang benar-benar membuatnya bersinar (ini mungkin akan mengejutkan beberapa orang) adalah perpustakaannya!
Apa yang saya sangat suka tentang menggunakan CL untuk web adalah Anda dapat menyesuaikan semuanya saat sedang berjalan. Anda selalu memiliki REPL dan menjalankan kode server Anda, Anda kemudian dapat terhubung ke REPL itu dan mengubah atau memeriksa cara kerja kode, semua tanpa harus menghentikan apa pun. Saya telah mendefinisikan ulang fungsi saat situs berjalan, saat berikutnya fungsi tersebut dipanggil, ia hanya mengambil kode baru dan berfungsi.
sumber
Untuk lebih membantu menghilangkan mitos bahwa tidak ada kerangka kerja Lisp web, berikut adalah yang belum disebutkan:
Jelas banyak orang tampaknya berpikir Lisp cukup baik untuk menulis banyak kerangka web.
Saya tidak menggunakan atau mendukung kerangka web apa pun. Saya lebih suka membangun aplikasi web dengan menggabungkan bersama alat ortogonal (David Lichteblau telah menyebutkan beberapa yang bagus) menggunakan pola desain dengan cara yang benar-benar sesuai dengan aplikasi yang Anda bangun, dan itulah pendekatan yang saya rekomendasikan. Common Lisp menyediakan banyak alat seperti itu, dan kemampuan yang tak tertandingi untuk menggabungkannya.
Adam Petersen menerbitkan tutorial pengantar yang sangat baik tentang cara mulai membangun aplikasi web Lisp dengan gaya ini tahun lalu:
http://www.adampetersen.se/articles/lispweb.htm
sumber
Saya pikir orang bisa mengatakan ya tanpa banyak terpesona.
salah satu server HTTP pertama adalah cl-http
Skema yang dilakukan orang-orang di sekitar DrScheme telah menghabiskan banyak waktu untuk itu:
www.franz.com berjalan di Webserver (AllegroServer) dan webframework (webactions) mereka sendiri
Jika Anda ragu, periksa paket cadel umum dari Edi Weitz. Mereka biasanya bekerja.
Jadi ya, seseorang dapat melakukan pemrograman web "serius" dengan Common Lisp. Saya sendiri saat ini ragu-ragu untuk mengikuti beberapa rute Common Lisp atau Ruby on Rails. Saya lebih suka keduanya daripada apa pun. NET ....
sumber
Perusahaan Paul Graham, Viaweb, menulis produk di Common Lisp yang kemudian menjadi Yahoo Shops. Rupanya Yahoo kemudian menulis ulang dalam C ++. Ada beberapa sumber daya web untuk pemrograman Lisp.
sumber
Anda dapat menemukan beberapa hal tentang perkakas untuk aplikasi web Lisp di pertanyaan ini .
Mungkin juga layak untuk mendengarkan Stack Overflow Podcast 27 di mana orang-orang Reddit berbicara sedikit tentang pengalaman mereka menjalankan situs web di Lisp (dan peralihan mereka ke Python).
sumber
Pendapatnya beragam. Kebijaksanaan umum adalah: Lebih baik gunakan bahasa yang berbeda, atau lebih tepatnya tumpukan web yang berbeda, seperti LAMP, .NET, Ruby on Rails, Java. Proyek web sukses yang terkenal di cadel adalah ViaWeb milik Paul Graham . Reddit awalnya diimplementasikan dalam cadel, tetapi kemudian dialihkan ke python . Jika Anda memutuskan untuk menggunakan cadel, cobalah buku Seibel: Practical Common Lisp .
sumber
Sepertinya banyak Orbitz telah atau ditulis dalam LISP .
sumber
Lihat Allegro Common Lisp. Ini memiliki beberapa perpustakaan, termasuk server web, khusus untuk pengembangan web.
sumber