- Công bố video phim tài liệu chính thức dài 1 giờ, nói về quá trình Clojure phát triển thành ngôn ngữ hạ tầng của các công ty fintech toàn cầu
- Giới thiệu hành trình truy dấu nguồn gốc độc đáo của Clojure, cộng đồng lấy giá trị làm trung tâm, và ảnh hưởng của nó tới tư duy phần mềm
- Liên kết YouTube: Một dự án thú cưng của lập trình viên đã thay đổi cách chúng ta nghĩ về phần mềm như thế nào
- Show notes tổng hợp các bài báo nền tảng, sách, bài nói chuyện và các trường hợp doanh nghiệp làm cơ sở cho Clojure
- Đồng thời giới thiệu các runtime như Clojure, ClojureScript, ClojureCLR và các dự án mở rộng như Babashka, Jank, ClojureDart
- Trang chính thức đóng vai trò là trung tâm tổng hợp của hệ sinh thái Clojure, bao quát cả công cụ AI, data science, tích hợp editor và các kênh cộng đồng
Tổng quan về phim tài liệu
- Phim tài liệu Clojure bắt đầu từ 2 năm nghỉ phép của Rich Hickey và một ý tưởng đầy kiên định, rồi theo dấu hành trình để cuối cùng trở thành nền tảng vận hành stack kỹ thuật của một trong những công ty fintech lớn nhất thế giới
- Các nhân vật chủ chốt như Rich Hickey, Alex Miller, Stuart Halloway xuất hiện, cùng khám phá nguồn gốc phi truyền thống của Clojure, cộng đồng định hướng giá trị, và ảnh hưởng của nó tới tư duy phần mềm
- Phim tài liệu được sản xuất với sự tài trợ của Nubank
Show notes
-
Các bài báo nghiên cứu nền tảng
- Out of the Tarpit (2006) — Ben Moseley & Peter Marks, chỉ ra rằng trạng thái có thể thay đổi trong phần mềm là nguyên nhân chính của độ phức tạp ngẫu phát
- Ideal Hash Trees — Phil Bagwell, nghiên cứu về Hash Array Mapped Tries (HAMTs), tạo cảm hứng trực tiếp cho cấu trúc dữ liệu persistent của Clojure
- Composable Memory Transactions (2005) — Tim Harris và cộng sự, đề xuất khái niệm Software Transactional Memory (STM), ảnh hưởng đến mô hình đồng thời của Clojure
- Paper Bibliography — danh sách các bài báo mà Rich Hickey tham khảo khi phát triển Clojure, do Michael Fogus tổng hợp
-
Các cuốn sách có ảnh hưởng
- On Lisp — Paul Graham, tác phẩm tiêu biểu về các kỹ thuật Lisp nâng cao, được cung cấp miễn phí trực tuyến
- Programming Clojure (4th ed.) — đồng tác giả Alex Miller, Stuart Halloway, Aaron Bedra; bản đầu tiên được xuất bản cùng với Clojure 1.0
- The Joy of Clojure — Michael Fogus & Chris Houser
-
Các bài nói chuyện tiêu biểu của Rich Hickey
- Simple Made Easy (2011) — bài nói chuyện nổi tiếng định nghĩa sự khác biệt giữa "simple" và "easy"
- Clojure at LispNYC (2007) — buổi công bố Clojure đầu tiên
- Are We There Yet? (2009) — phân tích mô hình trạng thái của Clojure và khái niệm thời gian trong lập trình
- Hammock Driven Development (2010) — nhấn mạnh cách tiếp cận suy nghĩ sâu về vấn đề trước khi viết mã
- The Value of Values (2012) — nhấn mạnh tầm quan trọng của immutable values
- Writing Datomic in Clojure (2012) — giải thích lý do Datomic được viết bằng Clojure
- Effective Programs - 10 Years of Clojure (2017) — nhìn lại 10 năm phát triển của Clojure và cách ưu tiên tính năng xoay quanh việc giải quyết vấn đề thực tế
- Talk Transcripts — kho lưu trữ bản chép lại các bài nói chuyện của Rich Hickey và cộng đồng
- Rich Hickey Talks — playlist tổng hợp video các bài nói chuyện của Rich
-
Các bài luận của Paul Graham
-
Các công ty và dự án tiêu biểu
- Cognitect — công ty tư vấn đã duy trì Clojure trong thời gian dài
- Nubank — ngân hàng số độc lập lớn nhất thế giới, vận hành hạ tầng cốt lõi bằng Clojure và Datomic; sau khi mua lại Cognitect vào năm 2020, công ty dẫn dắt việc phát triển Clojure
- Datomic — cơ sở dữ liệu phân tán dựa trên immutable facts, do Rich Hickey và Cognitect thiết kế
-
Tài liệu cộng đồng và lưu trữ
- Java.next Blog Series (2008) — loạt bài blog của Stuart Halloway về xu hướng ngôn ngữ trên JVM
- Clojure IRC Log Archive — bản lưu trữ các cuộc trò chuyện trên kênh IRC Clojure thời kỳ đầu
- Clojure Etiquette — hướng dẫn ứng xử cộng đồng bắt nguồn từ các bài viết của Rich trên mailing list
Các phương ngữ và runtime của Clojure
-
Cốt lõi
- Clojure — chạy trên JVM, có hướng dẫn bắt đầu chính thức và sách nhập môn miễn phí Brave Clojure
- ClojureScript — biên dịch sang JavaScript, hỗ trợ các thư viện frontend như Reagent, Re-frame
- ClojureCLR — Clojure chạy trên .NET CLR
-
Mở rộng
- Babashka — hỗ trợ scripting nhanh mà không có thời gian khởi động JVM
- Jank — trình biên dịch native nhắm tới LLVM
- ClojureDart — dành cho phát triển ứng dụng di động dựa trên Flutter
- Squint / Cherry — biến thể ClojureScript biên dịch thành ES module
- Other Clojure-like projects — cung cấp danh sách các dự án tương tự khác
-
Data science
- libpython-clj — gọi trực tiếp các thư viện Python như NumPy, pandas, scikit-learn từ Clojure
- Noj — bộ công cụ data science native cho Clojure do SciCloj phát triển, tích hợp dataframe, trực quan hóa và machine learning
- Tablecloth — kết hợp tích hợp Python với dataframe trong Clojure
-
Clojure và AI
- ECA (Editor Code Assistant) — công cụ hỗ trợ chỉnh sửa mã
- Backseat Driver — công cụ Clojure cho Copilot
- ClojureMCP — máy chủ MCP kết nối AI assistant và REPL như Claude, Codex, Gemini
- MCP-nREPL — máy chủ MCP tối giản dựa trên Babashka, cung cấp truy cập nREPL cho coding agent
- clojure-mcp-light — công cụ CLI gọn nhẹ cho trợ lý lập trình LLM
- #ai-assisted-coding (Clojurians Slack) — kênh cộng đồng sôi nổi về AI và phát triển Clojure
Bắt đầu
- Trải nghiệm đầy đủ — có hướng dẫn chính thức kèm video cài đặt cho macOS, Linux, Windows, sử dụng Calva trên VS Code
- Con đường nhanh nhất — cài Babashka để có thể bắt đầu scripting ngay, không cần thiết lập JVM
- Web/frontend — bắt đầu với ClojureScript + Shadow CLJS
- Ứng dụng di động — phát triển ứng dụng Flutter với ClojureDart
- Người dùng Python — gọi trực tiếp thư viện Python bằng libpython-clj
- Editor — Calva hỗ trợ REPL, chỉnh sửa có cấu trúc, và tích hợp AI (Backseat Driver) trong VS Code; tham khảo hướng dẫn editor
Thuật ngữ
- Lisp — họ ngôn ngữ biểu diễn mã dưới dạng các danh sách lồng nhau được bao quanh bởi dấu ngoặc; Clojure là một phương ngữ của Lisp
- REPL — Read-Eval-Print Loop, phiên tương tác đọc biểu thức, đánh giá rồi in kết quả
- Lập trình hàm — phong cách lập trình tập trung vào hàm, giảm thiểu trạng thái có thể thay đổi và tác dụng phụ
- Giá trị (Value) — dữ liệu không thay đổi sau khi được tạo; Clojure mặc định sử dụng các giá trị bất biến
- Cấu trúc dữ liệu persistent (Persistent Data Structure) — collection bảo toàn phiên bản trước đó khi được sửa đổi; "persistent" ở đây mang nghĩa bảo toàn phiên bản
- Độ phức tạp ngẫu phát (Accidental Complexity) — sự phức tạp phát sinh không phải từ bản thân vấn đề mà từ công cụ hoặc lựa chọn thiết kế
- STM (Software Transactional Memory) — mô hình đồng thời điều phối thay đổi trạng thái dùng chung bằng transaction thay vì lock
- Ngôn ngữ hosted (Hosted Language) — ngôn ngữ chạy trên một nền tảng sẵn có thay vì có runtime riêng; Clojure chạy trên JVM, ClojureScript trên JS, ClojureCLR trên .NET
Theo dõi Clojure và cộng đồng
- Vận hành các kênh chính thức như YouTube, Reddit, Slack, LinkedIn
- Clojure/Conj Conference 2026 — dự kiến diễn ra tại Charlotte, North Carolina, Mỹ từ ngày 30/9 đến 2/10/2026
6 bình luận
Clojure ra đời đã khá lâu rồi, nên tôi thấy tò mò vì sao giờ lại có người nhắc đến Clojure một lần nữa.
Tôi từng có kinh nghiệm review một cuốn sách vào giai đoạn đầu khi Clojure mới xuất hiện. Sau đó tôi cũng thấy một vài công ty thử áp dụng nó, nhưng kết luận là không dễ để dùng trong môi trường doanh nghiệp. Rồi tưởng như nó đã chìm vào quên lãng, nên tôi lại càng thắc mắc vì sao bây giờ nó được nhắc đến trở lại.
Dù tôi đã dùng Java từ rất sớm và trong thời gian dài, JVM vẫn còn được dùng nhiều vì các tập đoàn lớn đã phát triển rất nhiều phần mềm bằng Java, (ở Mỹ) phần lớn nhân lực từ Ấn Độ đều dùng Java, và Java còn được dạy từ cấp phổ thông đến đại học, v.v. Tuy vậy, theo quan điểm cá nhân, tôi nghĩ nó không còn phù hợp với thời đại hiện nay nữa. Tôi thích Lisp, nhưng trong bài viết ở trên tôi không thấy được điểm gì khiến một ngôn ngữ khá ngách như vậy, lại còn chạy trên mô hình JVM đang dần đi xuống, lại được nhắc đến trở lại trong thời đại AI như bây giờ.
Mình chưa từng học bài bản về ngôn ngữ lập trình hàm, nên đang nghĩ hay là bắt đầu với Clojure. Mình nên học như thế nào? Rất mong nhận được nhiều lời khuyên từ các anh chị developer.
Theo trải nghiệm của tôi và kết luận của nhiều người, cách bài bản là nên học ngôn ngữ hàm bằng một ngôn ngữ hàm thuần túy.
Đó là câu chuyện được nhắc đến vào thời điểm ngôn ngữ hàm bắt đầu nổi lên và cả giai đoạn nó nhận được nhiều sự quan tâm, và tôi cũng đồng cảm với điều đó. Tôi đã học bằng Erlang vào giai đoạn đầu khi nó xuất hiện, và khi đó đó là một trải nghiệm khá gây sốc và đầy kinh ngạc.
Vậy thì, bạn đã học ngôn ngữ lập trình hàm thuần như thế nào? Từ trước đến nay tôi học các ngôn ngữ lập trình (C, Go, Python, v.v.) bằng sách chuyên về phát triển phần mềm + dự án phụ, vậy với ngôn ngữ lập trình hàm thì đi theo hướng học như vậy cũng ổn chứ?
Mỗi người có thể khác nhau, nhưng tôi nghĩ việc học trong lĩnh vực máy tính thì chẳng phải ai cũng thường làm theo cách bạn nói sao. Dạo này cũng có thêm lựa chọn học bằng video, nên cứ chọn phương pháp học phù hợp với bản thân là được.
Ý kiến trên Hacker News
Clojure là điều tuyệt vời nhất từng xảy ra trong sự nghiệp của tôi
Nhờ ngôn ngữ này mà lương của tôi tăng gấp đôi, và tôi có thể chuyển sang một ngành ổn định hơn
Bầu không khí hòa nhập tại hội nghị Heart of Clojure thật sự đáng kinh ngạc. Cộng đồng đến giờ vẫn rất sôi động, đặc biệt là nhiệt huyết của cộng đồng Jank, nơi đang tạo ra một phương ngữ Clojure cho công việc mức thấp, khiến tôi rất ấn tượng
Vấn đề là phần lớn công ty coi trọng khả năng thay thế lập trình viên hơn là tính ổn định hay sự chân thực của ngôn ngữ. Cuối cùng điều đó làm giảm chất lượng, rồi họ lại tìm cách thay thế bằng AI và tự đưa công ty vào vòng luẩn quẩn đi xuống
Điều khiến tôi ngạc nhiên khi dùng Clojure trong môi trường thương mại là rất nhiều lập trình viên thậm chí còn không biết triết lý của ngôn ngữ, các bài nói chuyện của Rich Hickey, hay cả cách dùng REPL. Vậy mà họ lại ở vị trí quản lý codebase Clojure, điều này thật khó hiểu
Lý do tôi chuyển sang Clojure chính là vòng phản hồi ngắn, nên nếu không tận dụng điều đó thì tôi không hiểu vì sao lại dùng ngôn ngữ này
Nhờ Clojure mà suốt 10 năm qua tôi có thể vận hành một doanh nghiệp bền vững với tư cách nhà sáng lập solo
Vì client và server chia sẻ phần lớn logic nghiệp vụ, nên ngay cả codebase phức tạp cũng dễ quản lý
Trên hết, ngôn ngữ và môi trường này đặt trọng tâm vào tính ổn định, nên không có chuyện cứ vài năm lại thấy nền móng dưới chân rung chuyển như ở các ngôn ngữ khác
Clojure không phải ngôn ngữ mới mẻ hay hào nhoáng, nhưng là người bạn đồng hành đáng tin cậy trong dài hạn
Trước đây tôi viết code bằng Clojure mỗi ngày, và còn nhớ đã từng ăn tối cùng Rich Hickey ở Clojure/Conj
Startup đầu tiên của tôi cũng được làm hoàn toàn bằng Clojure, và hồi AWS còn rất ít dịch vụ, tôi là một người thử nghiệm sớm khi biên dịch Clojure sang JS rồi chạy trên Lambda
Ngay cả bây giờ tôi vẫn thấy hào hứng khi nghĩ đến việc xem video liên quan
Tôi đã dùng Clojure từ năm 2013, và đó là một ngôn ngữ có ảnh hưởng rất tích cực đến cuộc đời tôi
Tôi là kiểu người dùng khá không chính thống, phần lớn các tác phẩm nghệ thuật của tôi đều được tạo bằng Clojure
Khi điều hành startup, Clojure cũng giúp tôi tránh bị kiệt sức
Việc tham gia cộng đồng cũng là một niềm vui lớn, và tôi biết ơn sự cống hiến của rất nhiều người
Clojure là một ngôn ngữ và hệ sinh thái tuyệt vời
Thuở ban đầu tôi từng quyên góp cho dự án của Rich, và đã kiếm tiền từ phát triển Clojure trong vài năm
Bây giờ tôi không còn dùng thường xuyên nữa, nhưng chỉ hai giờ trước thôi tôi vẫn đang vui vẻ cập nhật các ví dụ trong một cuốn sách Clojure cũ
Ngoài ra, bạn có nghĩ Clojure phù hợp cho ứng dụng ML/AI không, và dù interop với Python khá tốt thì tại sao nó vẫn chưa được dùng rộng rãi hơn?
Trên JVM, Clojure là ngôn ngữ thay thế tôi thích nhất
Nó kế thừa truyền thống Lisp, nhưng thay vì nói những điều viển vông như sẽ xây lại JVM, nó có một triết lý hấp dẫn là ôm lấy nền tảng chủ
Zig cũng có cách tiếp cận tương tự, và tôi cảm thấy triết lý tích hợp này là điểm mấu chốt để tăng mức độ chấp nhận và tính thực dụng
Thật sự rất tuyệt. Chỉ tiếc là không có borkdude
Cách diễn đạt “stable long-term companion” của jwr khiến tôi nhớ mãi
Những công ty tôi từng làm mà chỉ chạy theo cái mới cuối cùng đều dành nhiều thời gian hơn cho việc migration
Tính ổn định nghe có vẻ nhàm chán, nhưng đó là cách duy nhất để một nhóm nhỏ tồn tại lâu dài
Tôi rất thích dùng Clojure, nhưng phần lớn công việc của tôi đòi hỏi tương tác với ngôn ngữ C, nên khó dùng nó làm ngôn ngữ chính
Tôi không biết Datomic giờ đã miễn phí bản quyền. Trước đây tôi không dùng vì chi phí quá cao, giờ thấy khá thú vị
Ví dụ: Datalevin, Datahike, Asami
Còn XTDB cũng có, nhưng đã bỏ Datalog và đi theo hướng khác
Cũng có một trang so sánh: Clojurelog (hơi cũ)