2010-03-04 3 views
10

Trong reddit interview with Peter Norvig, ông nóiLISP cộng đồng và web framework

“Vì những lý do khác nhau tập các web thư viện và các giao thức đã chậm hơn để phát triển trong LISP hơn trong ngôn ngữ khác”

và do đó việc sử dụng dịch vụ lisp trong cộng đồng web đã giảm và mọi người đã theo dõi ngôn ngữ với các bộ thư viện phong phú hơn.

Có lý do nào cho sự chậm chạp này trong việc xây dựng khung web bởi cộng đồng LISP không?

Trả lời

11

Nhận xét của Norvig dường như với tôi lịch sử hơn là đánh giá tình hình hiện tại. Có lẽ vào giữa những năm 90, các thư viện liên quan đến web đã không xuất hiện nhanh như trong Common Lisp như trong các ngôn ngữ khác như Java.

Nhưng chắc chắn ngày nay không phải như vậy. Tôi có thể đặt tên không ít hơn năm máy chủ web Lisp phổ biến trên đầu của tôi (CL-HTTP, Hunchentoot, S-HTTP-Server, Araneida, AllegroServe), chưa kể đến mod-lisp cho Apache. Phải có gần một chục khung công tác web khác nhau (KPAX, Weblocks, UncommonWeb, et al). Và có những thư viện lisp phổ biến cho mỗi từ viết tắt web mà bạn có thể đặt tên: SOAP, XML, XLST, FTP, XML-RPC, S3, AJAX .... ad infinitum. Và có những công cụ không có tương tự trong các ngôn ngữ khác, như kỳ quan của ParenScript kỳ diệu.

Xem Common Lisp Directory cho một danh sách chất béo của các thư viện web: http://www.cl-user.net, nhiều trong số đó được duy trì ở http://www.common-lisp.net

5

Tôi không biết ý anh ấy là gì. Đoán của tôi là nó có lẽ chủ yếu chỉ là một ví dụ của các chung chung "thiếu các thư viện thường gặp Lisp" khiếu nại (mà tôi tìm được chủ yếu là giường, nhưng bất cứ điều gì).

Thật thú vị khi note that:

HTTP đầu tiên 1.1 compliant máy chủ và [một] được sử dụng bởi W3C để gỡ lỗi HTTP thực hiện 1.1 tham khảo

được viết bằng Lisp.

2

"Cộng đồng Lisp" có vẻ là một thuật ngữ rộng. Nhưng đối với Common Lisp bạn có Hunchentoot mà rất nhiều người sử dụng. tàu với các cơ sở web TS Đề án được xây dựng trong.

ưa thích của tôi, Clojure có nhiều mát mẻ thư viện tích cực phát triển để xây dựng các ứng dụng web, Ring, Compojure, Enlive, Clutch, để đặt tên chỉ là một vài mà là thú vị.

+0

Hunchentoot là tuyệt vời, nhưng nó dựa trên TBNL và lấy cảm hứng từ Aserve, có entry changelog sớm nhất là 1999. Trong khi đó, AOLserver (nee NaviServer) đang sử dụng C/Tcl vào năm 1994. Perl, Java và PHP folks cũng đang đưa những thứ trên web vào giữa những năm 1990. Clojure đã không đến hiện trường cho đến năm 2007. Tôi nghĩ rằng đáp ứng các tiêu chí cho "chậm phát triển". :-) – Ken

8

Tôi nghĩ rằng một thư viện lý do chính có thể là một chút chậm phát triển trong Lisp so với nhiều ngôn ngữ khác là nó đơn giản quá dễ. Các thư viện được viết bằng Lisp thường không cảm thấy xứng đáng với tên. Họ chỉ là một vài dòng mã, và cụ thể cho nhiệm vụ trong tầm tay. Một vài phút nữa sẽ dẫn đến một thư viện đa năng, nhưng dường như không ai muốn nó khi nó chỉ là một vài dòng mã nhỏ.

Khoảng một năm trước, tôi phải đọc và viết CSV ở Clojure. Lời khuyên chuẩn là sử dụng bất kỳ một số thư viện Java nổi tiếng, được kiểm thử tốt. Tôi thấy khó xác định thư viện nào phù hợp nhất và học API của nó hơn là chỉ đơn giản là write my own trong Clojure. Đó là 50 dòng, và nó xử lý trường hợp sử dụng dự định của tôi một cách đẹp mắt.Nó không chính xác là một thư viện CSV tốt mặc dù; có rất nhiều trường hợp nó không hỗ trợ, vì vậy tôi đã không đóng gói nó lên như một thư viện, đặt nó trên Clojars hoặc tương tự. Tôi cho rằng tôi là một phần của vấn đề.

Một nửa hướng dẫn thực hành Lisp gần đây trên web hiện nay bao gồm ví dụ về macro tạo HTML. Hầu hết trong số đó là chất lượng sản xuất và ít hơn một màn hình mã. Điều đó hầu như không có giá trị bao bì lên và gọi một thư viện; đó là mã tầm thường bất kỳ lập trình viên Lisp phong nha có thể viết trong một vài phút. Nó tất nhiên có giá trị đóng gói như một thư viện và Edi Weitz đã phát hành một loạt mã dọc theo các dòng đó.