2009-01-31 19 views
19

Ok, vì vậy tôi rất lo lắng về một danh sách khác. Tôi có bản sao cuốn sách lập trình Clojure beta ...Học Clojure mà không có Kiến thức Java

Và một điều tôi chú ý nhất là giả sử tôi biết ... giống như tất cả các lớp java chính.

Ngoại trừ, nói chung, tôi không thực sự quan tâm đến Java. Tôi chỉ muốn có đủ kiến ​​thức về nó để Clojure trở thành một lựa chọn cho tôi.

Bất kỳ đề xuất nào về cách tìm hiểu chính xác những gì tôi cần?

Trả lời

19

Đề xuất chính của tôi cho bạn, bạn đã hoàn thành bằng cách mua Lập trình Clojure. Tôi đã tránh và ghê tởm Java trong nhiều năm và nhiều năm, và (Lập trình) Clojure đã phục hồi đủ để ngôn ngữ này kích thích tôi. Ai đã nghĩ rằng một hệ thống công khai nổi tiếng sẽ cho phép bạn tương tác (map #(.getName %) (.getMethods (class "")))? Xem qua "Làm việc với Java, 3.5 Thêm các dự án và nhiệm vụ của Ant vào Lancet" để khám phá theo kiểu mà tôi quen thuộc từ Ruby.

Nếu bạn đang ở Freenode #clojure, cũng tham gia ## java. Nhận Java API documentation và giữ nó tiện dụng. Tìm kiếm trên web cho một số điện thoại Java answer tới nội dung bạn muốn thực hiện và dịch trực tiếp nhiều hơn hoặc ít hơn to Clojure.

EDIT: Tại CLJ:

user=> (use 'clojure.contrib.javadoc) 
nil 
user=> (keys (ns-publics 'clojure.contrib.javadoc)) 
(*remote-javadocs* javadoc find-javadoc-url add-remote-javadoc 
*core-java-api* add-local-javadoc *local-javadocs*) 
user=> (javadoc "this is a java.lang.String") 
true (browses to http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html) 
user=> (javadoc java.net.ServerSocket) 
true (...) 
user=> 
-1

Nếu bạn không quan tâm đến tất cả các khía cạnh Java của Clojure, có lẽ bạn nên học tốt hơn một phương ngữ khác của Lisp, chẳng hạn như Common Lisp hoặc Scheme. Clojure được thiết kế để tương thích tốt trong môi trường Java.

+0

Tôi biết cả hai, và có ý kiến, cả tốt và xấu, trong những liên quan. Bạn có gợi ý rằng cách duy nhất tôi có thể học Clojure là đi vào trò chơi với một sự hiểu biết mạnh mẽ của Java hoặc học Java đầu tiên? – user54650

+0

Ok, tôi không biết bạn có quen thuộc với các tùy chọn Lisp khác không. Những gì tôi gợi ý là đến từ một nền tảng Lisp hiện có, Clojure sẽ không cung cấp cho bạn nhiều mới nếu bạn không quan tâm đến các tính năng tương thích Java. Có lẽ bạn có thể giải thích thêm về những gì bạn đang tìm kiếm. –

+0

Tôi đang tìm một Lisp mạnh mẽ, chuẩn hóa, không có nền tảng. Lisp thường chỉ hút cho trình biên dịch Windows, trừ khi bạn thổi tiền vào những thứ hàng đầu. Đề án thiếu một tiêu chuẩn đủ mạnh, với chủ nghĩa tối giản là một điểm yếu cho nó. – user54650

1

Bạn sẽ có thể nhận những gì bạn cần tốt thông qua Google và StackOverflow, nhưng hy vọng sẽ truy cập cả hai cho đến khi bạn cảm thấy tốt cho các thư viện chuẩn của Java. Giống như Greg nói mặc dù, Clojure được xây dựng để được với Java, và trừ khi bạn muốn thực sự nhận được vào hệ thống bộ nhớ giao dịch phần mềm của Clojure, tôi muốn nói để kiểm tra một Lisp khác nhau. Java là chắc chắn không cần thiết, nhưng nó là một chân lớn lên không phải học các thư viện chuẩn trên thư viện chuẩn của Clojure.

8

Không vi phạm đến Greg, nhưng tôi không đồng ý. Học Clojure là một cơ hội hoàn hảo để nắm bắt một chút về thế giới Java. Tôi chưa bao giờ lập trình Java trong một ngày trong cuộc đời mình và tôi đang học Clojure và yêu mỗi phút của nó. Tất nhiên tôi không biết tất cả các lớp học, nhưng tôi không nhìn thấy nơi mà cuốn sách giả định bạn biết tất cả. Dù bằng cách nào, Java không phải là một yêu cầu để tìm hiểu Clojure.

0

Như Greg trên chỉ ra, ngôn ngữ như Clojure và Groovy nhắm mục tiêu các JVM vì một lý do chính, vì vậy các nhà phát triển Java có thể có tốt nhất của cả thế giới . Vì vậy, nếu bạn muốn tìm hiểu Lisp, Đề án hoặc Common Lisp sẽ là một khởi đầu tuyệt vời!

+1

Như tôi đã trả lời ở trên, tôi đã biết Common Lisp và Scheme.Tôi có khiếu nại về mức độ hợp nhất và chất lượng của các trình biên dịch miễn phí. Clojure biên dịch sang JVM, trong một số trường hợp, vượt trội hơn nhiều so với việc phát hành mã ... Tôi đã bắt đầu cố gắng tìm hiểu Java gần đây. – user54650

21

Umm, trên thực tế, mặc dù Clojure được phát triển với các nhà phát triển Java được xem xét, nó không được viết cho lập trình Java.

Clojure được thiết kế để tương thích tốt trong môi trường Java.

Mặc dù vậy, đây không phải là nó được thiết kế cho (ít nhất không phải trong phần ngôn ngữ của "môi trường Java"). Và "môi trường Java" ngụ ý rằng ngôn ngữ và JVM được kết nối với nhau theo một cách nào đó khiến chúng trở thành một. Họ không phải. Conjure là một ngôn ngữ JVM bản địa (không giống như Jython hoặc JRuby), và nó sử dụng một máy ảo rất được xây dựng để sống bên trong.

Như Greg đã nói, Clojure được xây dựng bằng Java và trừ khi bạn muốn thực sự truy cập vào hệ thống bộ nhớ giao dịch phần mềm của Clojure, tôi muốn kiểm tra một Lisp khác.

Không, xin lỗi. Clojure không phải là "xây dựng được với Java". Nó được xây dựng cho JVM. Bạn có thể sử dụng các thư viện Java nếu bạn thích, nhưng nó không được yêu cầu (mặc dù nó rất hữu ích). Và theo như lời khuyên để sử dụng một Lisp khác nếu bạn không muốn học Java. Điều đó thật lố bịch. Clojure không có nghĩa là Java; nó có nghĩa là một Lisp cấp 1. Và một, bằng cách này, có nghĩa là để tăng cường Lisp trong những cách nhất định, để làm cho nó hiện đại hơn và chức năng. Đó là khả năng làm việc tốt với Java nên được coi là một tiền thưởng, không phải là một trách nhiệm pháp lý.

Như Greg ở trên chỉ ra, các ngôn ngữ như Clojure và Groovy nhắm mục tiêu JVM vì một lý do chính, để các nhà phát triển Java có thể sử dụng tốt nhất cả hai thế giới.

Cũng sai. Vì những lý do nêu trên. Chúng không được viết cho các nhà phát triển Java. Xin lỗi vì đã cùn ở đây, nhưng tôi chưa thấy một bài đăng được giáo dục trên Clojure trong những câu trả lời này, và tôi vừa mới biết về Clojure hôm nay! Nó chỉ là bực bội để xem loại lời khuyên có hại như vậy một cách dễ dàng nhất định.

Tôi chỉ sẽ kết thúc với một trích dẫn bởi Rick Hickey (chàng người đã viết Clojure):

"Bạn có thể ghét Java và như JVM."

Anh ấy tiếp tục nói rằng đó là nơi anh ấy đứng.

1

Bạn có thể tìm hiểu Clojure mà không cần học Java nhưng bạn nên biết một chút thông tin cơ bản. Bạn có thể sử dụng Clojurecademy để tìm hiểu Clojure có mô hình giảng dạy tương tác (Hands-On) như Codecademy.

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