- Hiệu ứng in dấu do ngôn ngữ đầu tiên để lại tạo nên tình cảm gắn bó rất đặc biệt với Ruby, khiến nhiều lập trình viên chấp nhận cả những khiếm khuyết của nó như thể đó là “cá tính”
- Khi tiếp cận Ruby muộn hơn, lớp vỏ hào nhoáng không còn che được những lỗ hổng của kiểu động, footgun và hiệu năng chậm; cảm giác đọng lại rất rõ là nó đang mắc kẹt ở một thế hệ trước
- Sự kiện Fail Whale của Twitter, việc chuyển sang Scala, cùng làn sóng rời bỏ Ruby xuyên suốt thập niên 2010 đã chứng minh nguyên vẹn giới hạn hiệu năng của ngôn ngữ này
- Rails từng thống trị cả một thời kỳ, nhưng giờ đây triết lý tích hợp của nó lại trở thành bức tường về khả năng mở rộng, không còn tự nhiên phù hợp trong bối cảnh web tăng trưởng bùng nổ
- Thứ đang nâng đỡ Ruby hiện nay chỉ còn là di sản Rails, sự trung thành mang tính cảm xúc của những lập trình viên đã bị “in dấu” từ sớm, và nỗi hoài niệm về một cái tên đẹp
Ngôn ngữ lập trình và sức mạnh của “in dấu”
- Khái niệm in dấu (imprinting) trong tâm lý học cũng vận hành khá giống trong lập trình
Giống như ngỗng con xem sinh vật đầu tiên nó thấy là cha mẹ, ngôn ngữ đầu tiên được học sẽ chi phối cảm quan của lập trình viên trong thời gian rất dài
- Ruby chính là một trong những bên hưởng lợi tiêu biểu nhất từ hiệu ứng in dấu đó
Nó gắn với “khoảnh khắc lần đầu tiên việc lập trình trở nên tự nhiên”, nên sự gắn bó với bản thân ngôn ngữ này còn đọng lại rất sâu
- Nếu học từ đầu, tình cảm yêu thích sẽ đi trước và làm mờ các khuyết điểm; nhưng nếu học muộn, không còn hiệu ứng làm mờ ấy và chỉ còn thấy rõ bản chất
Sự ra đời và đặc trưng của Ruby
- Năm 1995, lập trình viên Yukihiro Matsumoto (Matz) đến từ Osaka, Nhật Bản, đã tạo ra Ruby. Đây là ngôn ngữ lập trình lớn duy nhất ra đời ngoài khu vực phương Tây
- Cộng đồng có khẩu hiệu MINASWAN (Matz Is Nice And So We Are Nice), bắt nguồn từ tính cách thân thiện của Matz
- Với cú pháp ngắn gọn không cần dấu chấm phẩy hay ngoặc đơn, Ruby thậm chí còn giống tiếng Anh thông thường hơn cả Python
- Nó thường được nhắc đến như một ngôn ngữ mang lại cho người mới khoảnh khắc lập trình “trở nên dễ hiểu”
Bộ mặt thật lộ ra khi học Ruby muộn
- Khi đến với Ruby sau khi đã trải qua nhiều ngôn ngữ khác, thứ hiện ra trước tiên không phải “sự thanh nhã” như kỳ vọng mà là sự lỏng lẻo lỗi thời
- Đằng sau cú pháp được thiết kế để trông đẹp mắt, sự mơ hồ của kiểu động và các hành vi khó đoán vẫn còn nguyên
- Ruby là ngôn ngữ kiểu động, linh hoạt ở dự án nhỏ nhưng trong cấu trúc lớn lại dễ phát sinh vấn đề vì lỗi chỉ lộ ra khi chạy
- Python và JavaScript đã tiến bộ trong nhiều năm bằng cách tăng cường hệ công cụ kiểu và hệ sinh thái phân tích tĩnh (ví dụ: TypeScript, mypy, v.v.)
- Ruby lại thiếu những công cụ tương ứng, nên dễ tổn thương trước các yếu tố rủi ro thường được gọi là "footgun" (tính năng dễ khiến chính mình tự bắn vào chân)
- Ở quy mô nhỏ, nó có vẻ mượt mà, nhưng khi hệ thống lớn lên thì vẫn phải mang theo nguy cơ lỗi chỉ xuất hiện vào thời điểm thực thi
Giới hạn hiệu năng nhất quán của Ruby
- Trong các bảng so sánh hiệu năng giữa những ngôn ngữ lớn, Ruby gần như luôn nằm ở nhóm cuối
- Thời kỳ Fail Whale của Twitter (con cá voi xuất hiện khi có lỗi) là biểu tượng cho giới hạn của hạ tầng dựa trên Ruby, và khi sự cố diện rộng nổ ra trong World Cup 2010, giới hạn ấy đã lộ rõ
- Twitter đã chuyển sang Scala, rồi đến trận chung kết World Cup 2014 có thể xử lý 32 triệu tweet mà không gặp vấn đề, với backend mới nhanh hơn tới 100 lần so với trước đó
- Suốt thập niên 2010, nhiều công ty đã rời khỏi hạ tầng Ruby, và phần còn lại phần lớn cũng chỉ được duy trì như di sản legacy
Vị thế Ruby đã đánh mất
- Những đối thủ từng cạnh tranh với Ruby như Python, JavaScript và Perl đều đã tự xác lập được lãnh địa rõ ràng hơn
Python chiếm lĩnh AI, khoa học và giáo dục; JavaScript thống trị toàn bộ web
Perl thì đang suy tàn, nhưng cũng không có khoảng trống nào để Ruby thay thế
- Khi các lĩnh vực mà Ruby từng làm tốt một cách riêng biệt biến mất, nó bị đẩy vào một vùng trung gian mơ hồ
Rails như trụ đỡ cuối cùng
- Lý do lớn nhất khiến Ruby vẫn còn sống trong công việc thực tế chính là Rails
- Sau khi được DHH công bố năm 2004, Rails đã dẫn dắt thời đại Web 2.0 và khi đó cung cấp toàn bộ yếu tố của phát triển web trong một tầm nhìn tích hợp thống nhất
- Lập trình viên Đan Mạch David Heinemeier Hansson (DHH), trái ngược với Matz, được biết đến là một nhân vật gây tranh cãi nhưng đầy sức hút
- Trong giai đoạn đầu của Web 2.0, Rails được các startup ưa chuộng vì cung cấp gói all-in-one gồm cơ sở dữ liệu, frontend và backend
- Những công ty như Airbnb, GitHub, Twitter, Shopify và Stripe đều khởi đầu trên nền tảng Rails
- Nhưng khi quy mô web tăng trưởng bùng nổ, cấu trúc tích hợp của Rails lại trở thành vật cản cho khả năng mở rộng
Giống như những căn nhà Usonian của Frank Lloyd Wright: đẹp lúc ban đầu nhưng về sau gần như không thể cải tạo
Đà suy giảm của Ruby và sức mạnh còn sót lại
- Trong khảo sát nhà phát triển của Stack Overflow, Ruby đã rơi từ Top 10 năm 2013 xuống hạng 18 vào năm 2025, thậm chí xếp sau cả Assembly
- Các lập trình viên mới đang đổ về Python và JavaScript, còn Ruby trở thành ngôn ngữ của một bộ phận lập trình viên vẫn còn ký ức với quá khứ của nó
- Thứ đang chống đỡ Ruby hiện nay chỉ là di sản Rails, sự trung thành cảm xúc của những lập trình viên đã bị in dấu, và hình ảnh cảm tính về một “cú pháp đẹp, dễ đọc”
- Nhưng chỉ cảm xúc thì không thể kéo vị thế của một ngôn ngữ đi lên trở lại; thực tế đã chuyển sang những công cụ nhanh hơn, an toàn hơn và mở rộng tốt hơn Ruby
3 bình luận
Bài viết này có cơ sở quá yếu nên đọc mà thấy ngỡ ngàng...
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
Liên kết thay thế là archive.is/O7rEl
Những lập luận được đưa ra trong bài kiểu như “không thích”, “ghét vì kiểu động”, “Twitter ngày xưa từng bị sập”, “chậm”, “chỉ lọt top 20 trong khảo sát Stack Overflow” nên cảm thấy khá yếu
Ngôn ngữ đầu tiên của tôi là BASIC, ngôn ngữ thứ hai là assembly cho Z80A và 6502, ngôn ngữ thứ ba là Pascal. Nhưng không ngôn ngữ nào cố định gu của tôi mãi mãi
Trái lại, trải nghiệm thực sự mang tính định hình là khi một giáo sư ở đại học nói rằng “ai học BASIC thì sẽ là một lập trình viên hỏng cả đời”. Khi đó tôi học được rằng ngay cả người có thẩm quyền cũng có thể làm hỏng người khác bằng thành kiến
Cuối cùng thì bài này giống như một nỗ lực để tác giả phô trương mình thông minh đến mức nào. Có thể đọc nó như đọc bài của Steve Yegge cho vui, nhưng ít nhất Yegge vẫn có nhiều điều để nói hơn
Nếu lập luận của ông ấy đúng, thì đã không cần phải viết một bài công kích như thế. Việc Ruby thực sự tạo ra rất nhiều sản phẩm và ngôn ngữ này vẫn đang tiếp tục phát triển chính là phản bác
Tôi cũng không hoàn toàn phản đối nội dung bài viết, nhưng với tiêu chí như vậy thì hoàn toàn có thể viết y hệt lời chê cho hầu hết các “ngôn ngữ chuyên nghiệp” như Python, JS, C++
“Điện toán là văn hóa đại chúng” vẫn còn đúng, và việc một bài như thế được đăng trên Wired chính là bằng chứng
Tôi đã đọc đến cuối nhưng không thấy có lý do thực chất nào để không dùng Ruby.
Nội dung tạo cảm giác như một tác phẩm báo chí thất bại được làm bằng ChatGPT trong vài giờ. Có lẽ codebase Ruby đầu tiên mà tác giả gặp phải đặc biệt tệ
Hình như đã từng có thời Wired là một tạp chí đáng đọc, nhưng giờ tôi thậm chí không còn nhớ nổi
Tôi không nghĩ việc rewrite sang Scala là một quyết định tốt về mặt kinh doanh. Sau 15 năm, độ phổ biến của Scala thấp hơn Ruby rất nhiều. Giờ thì tôi cũng không biết họ đang dùng gì nữa
Đây đúng là một bài clickbait để khóa sau paywall
Nhờ vậy mà tôi nhớ ra mình nên hủy gói đăng ký Wired đã quên bẵng