- Ruby không phải là một “ngôn ngữ không nghiêm túc”; ngược lại, đây là một ngôn ngữ khiến việc lập trình trở nên nhân văn và thú vị hơn
- Cộng đồng Ruby thời kỳ đầu khởi đầu như một cuộc nổi loạn nhỏ nhưng đầy vui nhộn, coi trọng sự rõ ràng và khả năng tiếp cận hơn là sự phức tạp
- Các dịch vụ quy mô lớn như Shopify, Doximity, GitHub đã thực sự vận hành bằng Ruby, cho thấy thành quả thực tế
- Cốt lõi của Ruby nằm ở trải nghiệm của người viết mã và văn hóa phát triển bền vững, và đó không phải là hoài niệm đơn thuần mà là một thái độ biết ơn và tôn trọng
- Trong tương lai của phát triển phần mềm, tính dễ đọc, khả năng bảo trì và niềm vui sẽ càng trở nên quan trọng hơn, và giá trị của Ruby vẫn sẽ là một điểm tham chiếu có ý nghĩa
Ruby và khái niệm “nghiêm túc”
- Câu hỏi “Ruby có phải là một ngôn ngữ nghiêm túc không?” cho thấy sự khác biệt trong nhận thức về lập trình nên mang lại cảm xúc gì
- Một số người xem công cụ dễ dùng và thú vị là “không nghiêm túc”, nhưng Ruby không chấp nhận định nghĩa đó
- Những ngày đầu của Ruby tràn đầy một cộng đồng nhỏ và nguồn năng lượng tinh nghịch, cho thấy lập trình không nhất thiết phải mang tính áp lực hay đáng sợ
- Khi đó, những người chỉ trích chủ yếu là các kiến trúc sư Java hoặc nhà phát triển doanh nghiệp truyền thống, còn cộng đồng Ruby thì không bận tâm và tập trung vào việc xây dựng sản phẩm thực tế
Ngôn ngữ coi trọng khả năng tiếp cận và năng suất
- Ruby theo đuổi không phải sự đơn giản thuần túy mà là khả năng tiếp cận (approachability), giúp người mới và các nhóm nhỏ có thể phát triển nhanh chóng
- Thay vì lý thuyết phức tạp, Ruby đề cao đà tiến triển và sự rõ ràng, giúp việc phát triển tiếp diễn mà không bị đè nặng bởi cảm giác bất an
- Nhờ những đặc tính này, các bootcamp và startup đã chọn Ruby, vì nó phù hợp với môi trường đề cao tốc độ và sự sáng tạo
- Như trường hợp của Twitter, Ruby đã đóng góp đủ nhiều để giúp công ty tăng trưởng, và việc sau đó chuyển sang công nghệ khác được xem là kết quả của thành công
Độ tin cậy trong thực tiễn và các ví dụ thực tế
- Trong hàng chục năm kinh nghiệm tư vấn, không có đội ngũ nào thất bại vì chọn Ruby; ngược lại, nguyên nhân thất bại thường là sự phức tạp, do dự và thái độ “quá nghiêm túc”
- Ruby được đánh giá là một ngôn ngữ không cản trở nhà phát triển, giúp họ tập trung vào công việc cốt lõi
- Các dịch vụ lớn như Shopify, Doximity, GitHub đang vận hành bằng Ruby, và đó được đưa ra như bằng chứng thực tế (proof) chứ không phải cảm tính
Văn hóa Ruby và triết lý phát triển lấy con người làm trung tâm
- Ruby thu hút những người coi trọng cảm giác khi viết mã và trải nghiệm khi đọc mã, và đó không phải là hoài niệm mà là một phương thức xây dựng phần mềm bền vững
- Cộng đồng Ruby đề cao tính biểu đạt và tính lấy con người làm trung tâm, nhắc nhở rằng lập trình là một hoạt động dành cho con người
- Sự khác biệt với những người thích ngôn ngữ khác là vấn đề sở thích, và Ruby không cố thuyết phục tất cả mọi người
Tương lai của lập trình và vai trò của Ruby
- Tương lai của phát triển phần mềm sẽ không bị chi phối bởi một ngôn ngữ, một mô hình hay một hệ tư tưởng duy nhất, mà sẽ diễn ra theo dạng pha trộn và linh hoạt
- Trong thời đại AI viết mã, tính dễ đọc và khả năng bảo trì càng trở nên quan trọng hơn, và trong môi trường nơi burnout đã trở thành điều thường nhật, niềm vui sẽ nổi lên như một giá trị cốt lõi
- Các giá trị của Ruby như sự rõ ràng, đồng cảm và tính nhân văn không phải là di sản của quá khứ mà sẽ trở thành một chuẩn tham chiếu cho tương lai
Mã nguồn tạo sự cộng hưởng, hơn là “nghiêm túc”
- Xã hội và kinh doanh thưởng cho sự cộng hưởng (resonance), sự rõ ràng và tính nhân văn nhiều hơn là “sự nghiêm túc”
- Những ứng viên, nhạc sĩ, nghệ sĩ, startup hay kỹ sư “nghiêm túc” không phải lúc nào cũng thành công
- Ruby hướng đến mã nguồn cho tập thể, lập trình vì con người, và cách tiếp cận đó giúp ngành công nghiệp giữ được tính nhân văn hơn
- Những nhà phát triển tò mò và vui tính sẽ đóng vai trò quan trọng trong hệ sinh thái công nghệ tương lai, và Ruby vẫn sẽ là một ngôn ngữ có ý nghĩa trong dòng chảy đó
Kết luận
- Câu hỏi “Ruby có phải là một ngôn ngữ nghiêm túc không?” là một câu hỏi sai
- Câu hỏi phù hợp hơn là: “Ruby liệu còn có thể đóng góp có ý nghĩa cho thế hệ phần mềm tiếp theo hay không?”, và câu trả lời là có
- Nếu điều đó có nghĩa là “không nghiêm túc”, thì chính điểm ấy lại là lý do Ruby nên có mặt trong cuộc đối thoại
2 bình luận
Phản hồi về “Ruby không phải là một ngôn ngữ lập trình nghiêm túc”
Ý kiến trên Hacker News
Ngay cả khi Ruby đúng là nguyên nhân, thì chính lựa chọn đó cũng đã giúp doanh nghiệp khởi đầu và đạt được thành công đầu tiên
Vấn đề của Twitter không phải do ngôn ngữ, mà do một tình huống đặc thù là fan-out ở quy mô lớn (tweet của người nổi tiếng → hàng triệu người theo dõi)
Ngoài ra, chẳng ai nhắc đến những startup đã thất bại dù dùng các ngôn ngữ “có thể mở rộng ngay từ đầu” — đó là thiên lệch sống sót điển hình
Nhìn vào trang tác giả đó trên Wired, có vẻ như họ chủ động viết theo kiểu gây tranh cãi như một chiến lược
Tôi vẫn sẽ quay lại làm một trong số đông im lặng vẫn đang tạo ra phần mềm hữu ích bằng Ruby
Chỉ đơn thuần liệt kê những giới hạn trong quá khứ, và rất có thể vấn đề thực ra nằm ở codebase mà họ từng phụ trách
Trọng tâm của bài đầu tiên là “không có lý do gì để chọn Ruby mới vào năm 2025”, và đó lẽ ra mới phải là trung tâm của cuộc thảo luận
Bài lần này lại đi theo hướng kêu gọi cảm xúc, và trớ trêu thay, tự nó lại chứng minh cho lập luận ở bài trước rằng Ruby vận hành bằng cảm tính
Nhiều người thích Elixir xem Ruby là ‘không nghiêm túc’, nhưng bản thân Elixir cũng chịu ảnh hưởng rất mạnh từ Ruby
Nhiều người bị thu hút bởi Elixir vì nó kết hợp cú pháp quen thuộc của Ruby với nền tảng hàm
Đặc biệt, nhờ runtime BEAM mà đặc tính vận hành hoàn toàn khác
BEAM tạo cảm giác không chỉ là một ngôn ngữ, mà là một hệ thống dành cho hệ thống — mọi thứ đều có thể được theo dõi, khởi động lại và quan sát
Tuy vậy, Crystal còn gặp vấn đề thiếu độ phổ biến nghiêm trọng hơn cả Elixir
Theo xếp hạng TIOBE, Elixir vẫn nằm trong top 50
Bài đầu chỉ nói về thống kê StackOverflow và chuyện Twitter, còn bài thứ hai thì chỉ toàn hoài niệm và thẩm mỹ
Việc đây không phải bài do LLM viết mà do con người viết ra lại càng khiến tôi thấy chán nản hơn
mà là “tôi có muốn hệ thống đang vận hành được viết bằng ngôn ngữ này không”
Không nhiều người có cùng câu trả lời cho cả hai câu hỏi đó
Tôi thích Ocaml, nhưng hệ sinh thái yếu và khó tuyển người nên không muốn dùng nó cho hệ thống vận hành
Python có chú thích kiểu và công cụ kiểm tra thì dễ bảo trì, còn nếu không có thì văn hóa tài liệu hóa là bắt buộc
Nếu là trường hợp đầu thì COBOL, còn nếu là trường hợp sau thì những lựa chọn khác sẽ trở nên thú vị hơn
Không phải vì cảm tính, mà đơn giản là vì niềm vui khi viết rất lớn — đặc biệt là vui hơn JavaScript rất nhiều
Những bài viết công kích Ruby luôn tạo cảm giác kỳ lạ
Có những câu chuyện thành công như Github, Twitter, Coinbase, Shopify, và vấn đề mở rộng quy mô chỉ là sản phẩm phụ của thành công
Ruby là một công cụ tuyệt vời, và tôi khuyên mọi người hãy tự đánh giá xem nó có phù hợp với dự án tiếp theo của mình hay không
Nếu lập luận là “Ruby sẽ không bao giờ mở rộng tốt”, thì đa số ngôn ngữ khác cũng vậy
Rốt cuộc cả hai bài đều đồng ý ở điểm “Ruby sẽ không bao giờ hoạt động mãi mãi”
Điều thú vị là bài gốc hạ thấp Ruby vì xếp hạng StackOverflow của nó là 18,
trong khi thực tế năm 2024 là hạng 14, còn Scala mà tác giả khen thì lại thấp hơn 9 bậc
Liên kết khảo sát StackOverflow 2024
Mã Ruby tôi viết 10 năm trước, ví dụ như trình biên dịch offlineasm của WebKit, đến giờ vẫn chạy tốt
Ruby có cú pháp gọn gàng và khả năng biểu đạt tốt, nhưng lại khiến việc sử dụng trở nên khó hơn vì kiểu động và magic (hành vi ngầm)
Nó không hợp với tôi, nhưng lại là ngôn ngữ hoàn hảo với một số người khác
Người hâm mộ thấy điều đó đáng kinh ngạc và thú vị, nhưng với một số người thì nó lại đáng sợ
Flask của Python cũng tương tự khi dùng context local proxy
Trong khi đó, Zig và Go ra đời như một phản ứng kiểu “mọi thứ phải được tường minh”, còn Rust thì nằm đâu đó ở giữa
Rust nghiêm ngặt, nhưng vẫn cung cấp khả năng biểu đạt kiểu DSL một cách gọn gàng
Hiệu năng thuật toán tăng gấp 10 lần, số lỗi giảm nhờ tính bất biến, và hỗ trợ đồng thời cũng rất xuất sắc
Nhờ pattern matching và guard mà boilerplate biến mất, không có GIL và có GC theo từng process
Đường cong học tập có hơi dốc, nhưng Elixir mở rộng tốt hơn nhiều về lâu dài cũng như dưới tải cao
Cộng đồng Ruby vẫn rất tuyệt
Chỉ là tôi ước Elixir có thể được biên dịch thành tệp thực thi native hoặc chạy trong trình duyệt
Tôi vẫn “suy nghĩ theo Ruby”, nhưng các dự án cá nhân thì làm bằng Elixir/Erlang
Ở công ty tôi dùng Golang và Python nhưng không thấy vui
Script cá nhân thì tôi vẫn viết bằng Ruby
Thay vì độ phổ biến hay sự quen thuộc, tôi nghĩ những cuộc thảo luận phân tích lạnh lùng về ảnh hưởng của các đặc tính ngôn ngữ lên chất lượng mã nguồn mới thực sự có giá trị
Những cuộc thảo luận như vậy thường làm mọi người chùn bước vì các khái niệm như monad hay applicative, nhưng đó mới là tranh luận thật sự hữu ích
Càng nhiều kiểu và ràng buộc thì chất lượng càng cao, nhưng tốc độ phát triển và tính linh hoạt lại giảm
Những bài kiểu này là thứ độc tố gây ra các cuộc chiến ngôn ngữ trên HN
Không cần nghiêm túc tiếp nhận làm gì
Nhưng giờ Kotlin hợp với tôi hơn — nhờ kiểu tĩnh và thiết kế cú pháp mang tính ergonomic
Ruby càng bất an khi dự án càng lớn, nhưng vẫn là một ngôn ngữ rất đáng yêu cho những việc nhỏ
Có thể không phải lỗi của ngôn ngữ, nhưng ngôn ngữ càng ít rào chắn an toàn thì càng có xu hướng thu hút mã nguy hiểm
if.classthì hóa ra cũng không hoàn toàn như vậyDù vậy, trong số các ngôn ngữ phổ biến thì nó vẫn là thứ tiến gần nhất