Bạn có sử dụng phương ngữ LISP cho chương trình sản xuất không?
Chắc chắn rồi
Những loại chương trình và tại sao?
Lisp là một ngôn ngữ năng động mục đích chung. Ngày nay, nó có những khó khăn cơ bản giống như các ngôn ngữ động có mục đích chung khác không được Microsoft xuất bản: Chủ đề gốc, tích hợp GUI, hoạt động xác định của GC và dấu chân bộ nhớ nhỏ.
Chủ đề gốc được LispWorks và SBCL đạt được, tôi tin. Có thể là những người khác? Tôi chưa điều tra đầy đủ.
LispWorks và Franz Common Lisp - sản phẩm thương mại - tích hợp vào GUI để đạt được mức độ thành công. Không có $$ để mua chúng, tôi không biết nó hoạt động tốt như thế nào. Tôi nghi ngờ họ làm việc khá tốt ...
Một hoạt động GC xác định có thể được thực hiện (nó được thực hiện trong Java đến một mức độ thành công nào đó), nhưng tôi không biết liệu các hệ thống Lisp hiện tại (các hệ thống được duy trì) có bất kỳ mã nào để làm điều đó không.
Dấu chân bộ nhớ nhỏ tôi tin là đạt được bởi một số Lisps.
Quan điểm cơ bản của tôi là, Common Lisp đã sẵn sàng về mặt kỹ thuật để tạo ra các hệ thống sản xuất. Và nó làm .
Phần lớn các nhà phát triển bị bối rối bởi (chọn một) ngôn ngữ động, macro, dấu ngoặc đơn, thiếu IDE yêu thích, kinh nghiệm tồi ở trường đại học, không có nhiều công việc trong đó, và sau đó không sử dụng nó.
Cá nhân tôi sẽ nhảy vào xây dựng một hệ thống sản xuất chính thức ở Common Lisp từ cơ sở trong môi trường nhóm.
chỉnh sửa: Tôi đã không thực sự trả lời tại sao Lisp trái ngược với các ngôn ngữ khác.
Theo kinh nghiệm Lisp của tôi - không đáng kể, nhưng đáng kể hơn 'xin chào thế giới' - tôi đã tìm thấy ngôn ngữ cực kỳ có thể sử dụng được sau cơn đau "ngôn ngữ mới Argh" đầu tiên. Phần lớn ngôn ngữ khớp với nhau theo một cách rất đều đặn và khá rõ ràng mà tôi không thực sự tìm thấy các ngôn ngữ khác để vận hành như thế nào. Một phần của việc này là sự hợp nhất của các biểu thức và tuyên bố. Một phần của đây là kiểu dữ liệu danh sách cốt lõi. Một phần của hệ thống này là hệ thống. Một phần của hệ thống này là hệ thống vĩ mô. Đừng hiểu lầm tôi, mặc dù, có những điểm đau. Nhưng họ không đá vào mặt tôi nhiều như những điểm đau của các ngôn ngữ khác.
Một ví dụ đơn giản là thói quen danh sách dài của Python. Cách tiếp cận Python là gọi len(mysequence)
. Nhưng, nếu chúng ta nghĩ về nó, độ dài là một thuộc tính của một chuỗi. Vì vậy, mysequence.len()
là một ý tưởng phù hợp hơn. Lisp về cơ bản loại bỏ sự phân biệt cú pháp đó. (length thing)
là cả cú pháp gọi hàm và cú pháp phương thức. Tất nhiên, một số người thấy rằng bực bội và muốn sự khác biệt cú pháp. Tôi thà có sự đều đặn.
edit2: Tôi đã chuyển đổi một phần của luận án MS chạy trên máy tính để bàn thành Common Lisp và thật vui khi làm việc cho đến nay.