Tôi biết chúng là phương ngữ của cùng một họ ngôn ngữ được gọi là ngọng, nhưng sự khác biệt chính xác là gì? Bạn có thể đưa ra một cái nhìn tổng quan, nếu có thể, bao gồm các chủ đề như cú pháp, đặc điểm, tính năng và tài nguyên.
Tôi biết chúng là phương ngữ của cùng một họ ngôn ngữ được gọi là ngọng, nhưng sự khác biệt chính xác là gì? Bạn có thể đưa ra một cái nhìn tổng quan, nếu có thể, bao gồm các chủ đề như cú pháp, đặc điểm, tính năng và tài nguyên.
Câu trả lời:
Tất cả chúng đều có nhiều điểm chung:
(function-name arg1 arg2)
Các tính năng khác biệt của Lisp chung:
Tính năng đặc biệt của vải clojure:
[]
và bản đồ {}
được sử dụng làm chuẩn ngoài danh sách chuẩn ()
- ngoài tính hữu dụng chung của vectơ và bản đồ, một số người tin rằng đây là một sự đổi mới giúp dễ đọc hơnLược đồ các tính năng đặc biệt:
Những người ở trên đã bỏ lỡ một vài điều
Lisp chung cũng có vectơ và bảng băm. Sự khác biệt là Common Lisp sử dụng # () cho vectơ và không có cú pháp cho bảng băm. Đề án có vectơ, tôi tin rằng
Common Lisp có các macro trình đọc, cho phép bạn sử dụng các dấu ngoặc mới (cũng như Racket, một hậu duệ của Scheme).
Scheme và Clojure có macro hợp vệ sinh, trái ngược với những macro không hợp vệ sinh của Common Lisp
Tất cả các ngôn ngữ đều hiện đại hoặc có nhiều dự án cải tạo. Common Lisp đã có được nhiều thư viện rộng lớn trong 5 năm qua (chủ yếu nhờ Quicklisp), Scheme có một số triển khai hiện đại (Racket, Chicken, Chez Scheme, v.v.) và Clojure được tạo ra tương đối gần đây
Common Lisp có một hệ thống OO tích hợp sẵn, mặc dù nó khá khác so với các hệ thống OO khác mà bạn có thể đã sử dụng. Đáng chú ý, nó không được thực thi - bạn không phải viết mã OO.
Các ngôn ngữ có triết lý thiết kế hơi khác nhau. Đề án được thiết kế như một phương ngữ tối thiểu để hiểu Mô hình diễn viên; nó sau đó được sử dụng cho sư phạm. Common Lisp được thiết kế để thống nhất vô số phương ngữ Lisp đã xuất hiện. Clojure được thiết kế cho đồng thời. Kết quả là, Scheme có tiếng là tối giản và thanh lịch, Common Lisp là mạnh mẽ và mô hình bất khả tri (chức năng, OO, bất cứ điều gì), và Clojure thiên về lập trình chức năng.
Gimp được viết bằng Scheme :)
Trên thực tế, việc phân bổ phần mềm mà một số người nghĩ rằng có thể được viết bằng C ++ có lẽ đã được thực hiện dưới sự bảo trợ của Lisp, thật khó để chọn ra những quả táo vàng ra khỏi chùm. Thực tế là C ++ không phải lúc nào cũng phổ biến, ngày nay nó chỉ có vẻ phổ biến do có lịch sử cập nhật. Trong nửa thế kỷ chưa đầy, C ++ thậm chí còn không sử dụng đa luồng, đó là nơi mà Python ngày nay là một đống mã keo lỗi vô dụng chưa được kiểm tra. Đơn giản hơn một chút và bây giờ chúng ta đang chứng kiến sự gia tăng trong lập trình chức năng, giống như thích nghi hoặc chết đi. Tôi nghĩ Java có nó đúng khi có liên quan đến phần thích ứng.
Đề án được thiết kế để đơn giản hóa ngôn ngữ Lisp, đó là mục đích duy nhất của nó ngoại trừ nó không bao giờ thực sự bắt kịp. Tôi nghĩ rằng Clojure làm một cái gì đó tương tự như nó có nghĩa là để đơn giản hóa Đề án cho JVM. Nó cũng giống như mọi ngôn ngữ JVM khác chỉ ở đó để nâng cao trải nghiệm người dùng, chỉ để đơn giản hóa việc ghi bảng soạn sẵn trong vùng đất Java.