2011-01-21 28 views
7

Tôi đang suy nghĩ nghiêm túc về việc tạo ra Clojure ngôn ngữ hack mới của tôi kể từ khi tôi yêu Lisp nhưng có một số vấn đề với CL và Scheme. Tôi chưa bao giờ làm việc trong môi trường Java trước đây và trải nghiệm lisp của tôi bị giới hạn khi làm việc thông qua "SICP" và "The Little Schemer".Học Clojure đến từ Lisp

Tôi cần biết điều gì? Có bất kỳ tài nguyên nào tốt trên "Cách Clojure không?" Bất kỳ tài nguyên nào về phong cách Clojure? Tôi đã tìm thấy trang tuyệt vời của Mark Volkmann, nhưng những cuốn sách mà tôi đã xem qua có vẻ hơi thiếu sót.

Ngoài ra, tôi cần biết gì về Java? Tôi không muốn học Java chỉ để học Clojure, nhưng tôi tưởng tượng tôi sẽ phải biết ít nhất một chút. Ngoài ra, quy trình làm việc như thế nào? Kinh nghiệm của tôi bị giới hạn ở các ngôn ngữ động, vì vậy tôi không biết mình phải làm gì để phân phối một ứng dụng mà không có nguồn trên JVM.

Tôi đã googled điều này rõ ràng, nhưng có một lượng lớn thông tin và không phải là rất nhiều "clojure cụ thể" công cụ.

Tôi đoán tôi đang tìm kiếm một số đề xuất hợp lý về loại tài liệu tôi nên đọc trong một số loại trình tự logic.

+1

vẻ thông thái, Clojure là một Lisp. –

+0

Lol, tôi nhận ra rằng bài đăng của tôi khiến tôi có vẻ như tôi không biết điều đó. Đó là lý do tôi chọn chiếc áo choàng. Bởi vì nó lisp. –

Trả lời

15

Bạn không thể xem sai số lượng Clojure videos on Blip.tv khi bạn có thể xử lý, đặc biệt là những người của Rich Hickey. Đây thực sự giúp lái xe về nhà các điểm khái niệm và các khía cạnh độc đáo để Clojure.

Nếu bạn đã quen thuộc với khái niệm Lisp, ban đầu bạn có thể tập trung vào việc tìm hiểu cách Clojure "ánh xạ" với Lisps bạn đã chơi cùng. Xem video của Rich Hickey trên "Clojure for Lisp Programmers."

Bạn cần phải có một số điểm quen thuộc với Java, vì Clojure không ngại sử dụng nó. Nó không phải bằng cách nào đó không phải Clojurey (theo như tôi có thể nói) để sử dụng Java, nơi nó thông minh. Tôi ít nhất là lướt qua các API docs cho các gói java.langjava.io, bởi vì java.lang tự động có sẵn trong các chương trình Clojure của bạn và java.io được sử dụng thường xuyên.

Với từ điển Clojure-to-Lisp trong đầu và các khái niệm cơ bản về Java của tôi phía sau tôi, tôi sẽ chọn một dự án nhỏ để làm việc trên. Giữ các tài liệu API Clojure và Clojure-contrib tiện dụng (hoặc trên web hoặc sử dụng lệnh (doc) từ REPL), và xem xét nhiều, nhiều blog Clojure ở đó. Hai mục yêu thích của tôi là http://nakkaya.com/http://stuartsierra.com/. Nếu bạn sử dụng Diigo, toàn bộ các blog đã được đánh dấu vào clojure group.

LƯU Ý: không bị treo trên môi trường dev của bạn. Có vô số tùy chọn được liệt kê trên Getting Started wiki page. Đối với việc học Clojure và các dự án nhỏ đầu tiên của bạn, tôi chỉ chọn trình soạn thảo văn bản thuần túy của bạn, tìm hiểu và sử dụng các khái niệm cơ bản của Leiningen để thiết lập thư mục dự án tốt đẹp với tất cả đường dẫn và phụ thuộc của bạn, sau đó sử dụng lệnh " lein repl "để khởi động REPL với tất cả các phụ thuộc của bạn được tải và có sẵn. Giả sử bạn sử dụng Emacs (dựa trên trải nghiệm Lisp trước đó), bạn có thể describe-variable của mình là lein repl và chỉ bắt đầu Emacs từ gốc của dự án mẫu của bạn để mọi thứ hoạt động tự động.

sách bạn có thể đọc, đáng chú ý là Niềm vui của Clojure, Lập trình Clojure và Clojure thực tế. Hai cái sau là "thực tế" hơn so với cái đầu tiên, đó là "triết học" hơn (lý do tổng quát hóa). Clojure thực tế được cập nhật với Clojure 1.2, trong khi chương trình Clojure cũ hơn một chút.

Cuối cùng, tham gia vào kênh IRC#clojure và sử dụng nhóm Clojure Google, bởi vì có một nhóm dân gian thông minh, thân thiện thích giúp đỡ người khác.

+1

Đối với emacs tôi thích swank-clojure trên giao diện kém lisp-lisp. Ngoài ra, paredit là điều cần thiết cho bất kỳ emacs lisp chỉnh sửa IMO. Không có gì khác để thêm vào phản hồi tốt đẹp này :) – bsteuber

+0

Tôi cũng muốn giới thiệu Clojure in Action, có sẵn thông qua MEAP, như The Joy of Clojure. Cuốn sách này chứa nhiều ví dụ, so sánh với Clojure thực tế và cũng cập nhật, so sánh với Lập trình Clojure –

+0

Đã đi và mua MEAP của Clojure đang hoạt động; trong khi nó có đầy đủ các tài liệu rất thú vị và khám phá một số vấn đề duy nhất, tôi không thấy nó được đánh bóng như những MEAP khác mà tôi đã đọc, và đôi khi tác giả không thấy một khái niệm hoặc ví dụ cho đến kết luận của nó đủ chi tiết. Điều đó nói rằng, các chương về lưu trữ dữ liệu, xử lý, web và nhắn tin đáng đọc. – semperos

2

Chỉ cần một cái nhìn nhanh chóng từ một người đến Clojure từ một hướng khác (Java -> Clojure)

  • Tôi thực sự tìm thấy những phần lispy của Clojure dễ học một khi tôi nhận của tôi xung quanh cú pháp và phổ biến thành ngữ. Tôi hy vọng rằng sẽ dễ dàng hơn cho bạn.
  • Bạn không thực sự cần nhiều kiến ​​thức về Java để thực hiện hầu hết mọi thứ - bạn có thể thực hiện khá nhiều thứ trong Clojure tinh khiết nếu bạn muốn.
  • Có thể chỉ khi bạn bắt đầu muốn sử dụng các thư viện Java mà bạn sẽ cần phải đi sâu vào Java interop. May mắn thay, interop rất đơn giản - đó là phong cách LISP hơn phong cách Java, vì vậy điều duy nhất bạn sẽ cần phải tìm ra là làm thế nào để hiểu các giao diện Java và thực hiện cuộc gọi thích hợp từ phía Clojure.

Đối với môi trường của tôi, tôi sử dụng Eclipse + Counterclockwise. Điều này hoạt động đặc biệt tốt nếu bạn thích IDE và/hoặc nghĩ rằng cuối cùng bạn có thể muốn làm một số công việc trong Java là tốt. Nó không yêu cầu thêm phụ thuộc, cung cấp cho bạn một trình gỡ rối tuyệt vời, có một REPL đầy đủ (một nhúng nREPL tôi tin), thực hiện tất cả quản lý tệp dự án (Git, SVN, v.v.) và tự động xử lý những thứ như thiết lập đường dẫn lớp Java cho bạn (có thể là một trở ngại lớn cho người mới đến Java!). Tôi khuyên bạn nên kiểm tra nó ra nếu bạn nghĩ rằng có thể phù hợp với phong cách của bạn, tôi cũng đã nghe những điều tốt đẹp về Enclojure là tốt.

Nếu bạn không tham gia IDE, có lẽ bạn nên sử dụng công cụ biên tập văn bản yêu thích và công cụ dòng lệnh như semperos trong câu trả lời tuyệt vời của mình.

0

Tôi tạo ra trang web được gọi Clojurecademy cho người mới bắt đầu học Clojure, mà là một nền tảng tương tác mà dạy Clojure, nó giống như Codecademy cho Clojure

Các vấn đề liên quan