Trải nghiệm Clojure
(tryclojure.org)- Try Clojure là một trang trải nghiệm 5 phút cho phép đánh giá trực tiếp biểu thức Clojure ngay trong trình duyệt
- Nội dung nhập vào REPL ở bên phải màn hình được thực thi theo vòng lặp read-eval-print loop
- Bạn có thể tự nhập các biểu thức ví dụ như
(+ 1 2), hoặc nhấp vào đoạn mã để tự động chèn - Dùng
(help)để xem các lệnh, và khi đã sẵn sàng, nhập(start)để bắt đầu trải nghiệm - Trang này được xây dựng bằng Clojurescript, với thông tin tác giả bao gồm Elia Scotto, Michiel Borkent và cộng đồng Clojure
Chạy Clojure ngay trong trình duyệt
- Try Clojure được thiết kế để bạn trải nghiệm nhanh Clojure với lời nhắc “Got 5 minutes?”
- Biểu thức ký hiệu Clojure do người dùng nhập vào REPL bên phải sẽ được đánh giá
- Luồng trải nghiệm rất đơn giản
- Tự nhập biểu thức như
(+ 1 2) - Nhấp vào đoạn mã để tự động chèn
- Dùng
(help)để xem lệnh - Bắt đầu bằng
(start)
- Tự nhập biểu thức như
Thông tin tác giả
- Trang có trích dẫn của Rich Hickey: “If you want everything to be familiar, you'll never learn anything new.”
- Try Clojure được xây dựng bằng Clojurescript, và Elia Scotto được hiển thị là người tạo ra trang
- Trang cũng kèm lời cảm ơn tới Michiel Borkent và community Clojure
1 bình luận
Các ý kiến trên Hacker News
Rất vui khi thấy cái này quay trở lại. Một phiên bản có từ rất lâu trước đây đã giúp tôi thử Clojure, và lựa chọn đó trở thành quyết định có ảnh hưởng lớn nhất đến sự nghiệp của tôi
Đến giờ tôi vẫn dùng Clojure gần như hằng ngày ở công ty và ở nhà; đôi khi là Clojure tiêu chuẩn, đôi khi là Babashka rất tuyệt vời để thay thế các task runner kiểu Make hoặc script Zsh
Go cũng là lựa chọn thứ hai mạnh mẽ khi cần biên dịch thành một binary duy nhất, nhưng Clojure khiến tôi thấy thoải mái nhất nhờ quy trình phát triển dựa trên REPL, cho cảm giác như đang trò chuyện với chương trình hơn là vòng lặp viết-biên dịch-chạy thông thường
Cộng thêm việc chạy trên JVM, nó trở thành một bộ công cụ giúp hoàn thành công việc một cách vui vẻ. Nếu bạn có chút hứng thú nào với Lisp và lập trình hàm, tôi thật sự khuyên nên thử; nếu dùng VSCode thì plugin Calva sẽ giúp ích rất nhiều
Chuyển sang một ngôn ngữ kém biểu đạt hơn từng rất đau đớn và khó chịu với tôi; tôi nhớ khi chuyển từ Python sang Java 5, đoạn mã để diễn đạt cùng một nội dung dài gấp 3–5 lần
Có lẽ mấu chốt là với các ngôn ngữ kém biểu đạt, chỉ nên viết những thứ nhỏ như shell script, các hàm C nhỏ cho hiệu năng hoặc giao diện hàm ngoại, hay các tiện ích Go nhỏ
Nếu bạn mới tiếp xúc với Clojure và muốn thử nghiệm thứ gì đó hữu dụng ngay, tôi rất khuyến nghị runtime Babashka cho scripting: https://babashka.org
Nó thú vị, dễ tiếp cận, và là một trong những phần được trau chuốt hơn của hệ sinh thái Clojure
Khác với Clojure đầy đủ trên JVM, thời gian khởi động của nó rất nhanh nên là điểm vào tốt; người mới có thể làm việc theo kiểu gần như tương tác bằng các công cụ theo dõi file/tải lại vốn đã quen thuộc, chẳng hạn như nodemon
Về sau thì nên chuyển sang cấu hình tương tác đầy đủ với kết nối REPL từ trình biên tập, nhưng với người mới thì luồng làm việc đó khá lạ và việc thiết lập cũng có thể phiền phức
Tôi đã dùng nó cùng HTMX để tạo một UI nhỏ hiển thị thống kê của ứng dụng công việc, và đó là một trải nghiệm rất tốt
Babashka gần như tích hợp sẵn mọi thứ cần cho một web app cơ bản, và với HTMX bạn có thể tải nội dung động trên trang mà không phải xử lý frontend JavaScript
Ngoài ra, bạn có thể chạy nREPL bằng
bb --nrepl-serverrồi kết nối một trình biên tập như Calva để phát triển script theo cách tương tác, nên nếu cần một UI web đơn giản thì rất đáng xem thửMột trang cùng hướng tương tự là https://www.maria.cloud/
Nó được định hướng nhiều hơn cho việc dạy lập trình cho người mới hoàn toàn, nhưng tôi cho rằng các thao tác cơ bản kiểu paredit và cách đánh giá theo từng form gần với phát triển dựa trên REPL trong thực tế hơn nhiều
Gõ trực tiếp vào cửa sổ terminal REPL có ergonomics rất tệ, và thực tế hơn thường là dùng thứ như Calva của VSCode hoặc CIDER của Emacs để gửi form dưới con trỏ tới một tiến trình REPL nào đó
Lý do tốt nhất để học Clojure là Reagent, và tôi cho rằng đây chắc chắn là cách tốt nhất để dùng React: https://reagent-project.github.io/
shadow-cljs giúp việc dùng các thư viện npm trở nên dễ dàng: https://github.com/thheller/shadow-cljs
Với cấu hình cơ bản, tôi đã ổn định với backend Go và frontend Reagent: https://github.com/nathants/aws-gocljs
Tôi muốn thấy rõ hơn chuyện gì đang diễn ra bên trong, và muốn tương tác đơn giản hơn với các component React native
Có vẻ nó đang bắt kịp phần hỗ trợ thử nghiệm cho React 18, nhưng Reagent đã tụt lại so với dòng chảy React mới nhất và có thể không nhận được toàn bộ lợi ích tối ưu hiệu năng
Nó vẫn dùng class component chứ không dùng hook, và cũng có lo ngại rằng việc chuyển đổi Hiccup lúc runtime có thể làm giảm hiệu năng
Tuy vậy, trong phần lớn trường hợp có lẽ không phải vấn đề cảm nhận được, và nếu không làm gì quá cầu kỳ thì vẫn ổn. Tôi nhớ mô hình UI-as-data của Hiccup, nên biết đâu một ngày nào đó sẽ quay lại Reagent
Về quản lý trạng thái, tôi rất khuyên dùng re-frame: https://day8.github.io/re-frame/
Ban đầu có thể trông hơi nặng nề, nhưng tài liệu rất xuất sắc, và khi đã hiểu thì mô hình rất rõ ràng
Cũng có các lựa chọn thay thế như Helix(https://github.com/lilactown/helix) hoặc UIx(https://github.com/pitch-io/uix), và cả refx(https://github.com/ferdinand-beyer/refx) gần như loại bỏ phụ thuộc vào Reagent
Hoặc có thể thêm mã tương tác vào UIx/Helix để gắn re-frame vào: https://github.com/pitch-io/uix/blob/master/docs/interop-wit...
Năm 2024 thì không thể gửi xuống một file HTML trống được, vì điều đó sẽ phá hỏng tối ưu hóa tìm kiếm; nếu không phải vậy thì tôi muốn thử
Quãng thời gian dùng Clojure của tôi thật sự rất tuyệt và tôi rất khuyến nghị: https://eli.thegreenplace.net/2017/clojure-the-perfect-langu...
Clojure for the Brave and True của Daniel Higginbotham là một tài liệu thực sự tuyệt vời để học Clojure, tôi rất khuyến nghị
Có thể đọc miễn phí trên mạng: https://www.braveclojure.com/clojure-for-the-brave-and-true
Vấn đề thực sự của cuốn sách này không phải là Clojure, mà là nó bắt đầu bằng việc dạy Emacs
Ngày nay chắc có nhiều người mới đến từ VSCode, và với họ đó là một sự phân tâm lớn
Vài năm trước, một đồng nghiệp khuyên tôi dù không thử Clojure thì cũng nên đọc History of Clojure, nhưng tôi đã trì hoãn: https://dl.acm.org/doi/pdf/10.1145/3386321
Rồi sau khi xem Rich Hickey - Greatest Hits https://changelog.com/posts/rich-hickeys-greatest-hits, tôi đọc History of Clojure và bắt đầu học ngay
Clojure là một trong những ngôn ngữ thú vị nhất để xây dựng thứ gì đó, và cũng là một trong những ngôn ngữ đẹp nhất
Không hẳn ở bản thân cú pháp, mà ở cách nó cho phép biểu đạt suy nghĩ thông qua thiết kế tốt và sự kết hợp, khiến đầu óc được kích thích một cách dễ chịu
Nếu bạn vẫn đang tìm một công cụ sáng bóng vừa vặn mà chưa thứ gì thật sự chạm đến mình, Clojure đáng để thử. Trong số các ngôn ngữ tôi từng thấy, nó thuộc nhóm cô đọng nhất mà vẫn mạnh mẽ nhất
Tôi tò mò liệu học Clojure có đem lại thêm điều gì ngoài những thứ đó không, hay nhìn chung cũng tương tự
Tôi tò mò liệu có phiên bản Clojure nào được biên dịch bằng thứ như LLVM không
Cảm giác khá giống với điều mà Scala Native ban đầu định làm, nhưng thực tế thì nó đã không thực sự đứng vững theo hướng đó
Tôi thích lập trình hàm, nhưng vào năm 2024, hệ sinh thái Java có cảm giác quá cũ kỹ đến mức khó chịu nổi
Có thể xem tại https://jank-lang.org/
Vẫn chưa đạt mức tương đương tính năng hoàn toàn với JVM Clojure, nhưng tôi đang theo dõi sát quá trình phát triển
Thực ra đó có lẽ cũng không phải vấn đề lớn
Các liên kết liên quan:
Try Clojure – An interactive tutorial in the browser - https://news.ycombinator.com/item?id=30423856 - tháng 2 năm 2022, 93 bình luận
Try Clojure in your browser - https://news.ycombinator.com/item?id=3366526 - tháng 12 năm 2011, 26 bình luận
Try Clojure - https://news.ycombinator.com/item?id=1359682 - tháng 5 năm 2010, 60 bình luận
Clojure đang trở nên phổ biến ở Mexico, và tôi nghĩ Brazil cũng có xu hướng tương tự nhờ Nubank
Đó là nơi các nhà khoa học máy tính muốn đến làm việc, và có vẻ họ chủ yếu làm bằng Clojure
Hình như họ đã tuyển một số thành viên cốt lõi của ngôn ngữ này, và tôi nhớ là vào một thời điểm nào đó họ cũng đã mua lại công ty của José Valim, người tạo ra Elixir
Dù vậy, nhìn chung đây vẫn có vẻ là một công ty chủ yếu dùng Clojure
Thương vụ sau là để có được chuyên môn quản lý dự án của Platformatec (https://building.nubank.com.br/tech-perspectives-behind-nuba...), và theo tôi biết thì không có mã Elixir nào đang chạy ở Nubank
Ở “phía bên kia” của pipeline ETL có Python, nhưng ở phần hướng tới người dùng thì theo tôi biết backend là Clojure, còn ứng dụng Android và iOS là TypeScript
Tôi tò mò liệu Clojure ở Trung Quốc cũng có một xu hướng đáng kể hay không