8 điểm bởi GN⁺ 2023-12-19 | 1 bình luận | Chia sẻ qua WhatsApp

Theo đuổi hạnh phúc của lập trình viên

  • Ruby là một ngôn ngữ theo đuổi hạnh phúc của lập trình viên, và điều này đôi khi còn trở thành đối tượng bị các cộng đồng khác chế giễu.
  • Việc sử dụng Ruby mang lại niềm vui, và đó là một giá trị thấm sâu trong ngôn ngữ, hệ sinh thái gem và toàn bộ cộng đồng.
  • Khi viết mã Ruby, người ta cảm thấy thú vị, ngay cả ở những phần chưa tốt.

Khuyến khích tính biểu đạt

  • Ruby có lẽ là ngôn ngữ lập trình giàu khả năng biểu đạt nhất trên thế giới.
  • Thông qua các tính năng metaprogramming và những thành ngữ văn hóa, Ruby cho phép lập trình viên viết mã thể hiện rõ ràng ý định của mình.
  • Ví dụ, DSL của RSpec khiến nội dung cần kiểm thử được đọc lên như thể con người đang nói.

Ngôn ngữ như được tạo riêng cho tôi

  • Nhiều nhà phát triển Ruby cảm thấy Ruby và Rails cực kỳ hợp với cách bộ não của mình vận hành.
  • Có thể trực giác đoán được tên phương thức và chữ ký hàm, còn nếu sai thì có thể thử đổi thứ tự các đối số.
  • Người ta nhanh chóng học cách thử làm điều gì đó dựa trên trực giác trước cả khi đọc tài liệu.

Cộng đồng và giá trị

  • Cộng đồng Ruby đóng vai trò quan trọng trong việc định hình ngôn ngữ là gì và cảm giác khi sử dụng ngôn ngữ đó ra sao.
  • Kent Beck từng nói: "Thiết kế phần mềm là sự rèn luyện trong các mối quan hệ giữa con người", và điều đó cũng áp dụng cho cộng đồng và các giá trị.
  • Cộng đồng Ruby là một tập thể tuyệt vời: cởi mở chào đón, tử tế và luôn hỗ trợ lẫn nhau.
  • Ruby có hai đặc điểm nổi bật là niềm vui và cộng đồng, và đó là những ưu điểm xuất sắc.

Ý kiến của GN⁺

  • Đặc điểm quan trọng nhất của ngôn ngữ Ruby là theo đuổi hạnh phúc của lập trình viên và cho phép viết mã giàu tính biểu đạt.
  • Sự gắn kết mạnh mẽ của cộng đồng Ruby cùng văn hóa hỗ trợ lẫn nhau mang lại niềm tự hào và sự hài lòng lớn cho các nhà phát triển sử dụng ngôn ngữ này.
  • Bài viết này truyền tải sức hút của Ruby từ góc nhìn của một nhà phát triển yêu Ruby, đồng thời cho thấy ngôn ngữ lập trình có thể vượt qua vai trò một công cụ đơn thuần để hình thành nên cộng đồng và văn hóa, khiến nó trở nên thú vị và hấp dẫn.

1 bình luận

 
GN⁺ 2023-12-19
Ý kiến Hacker News
  • Có nhiều ý kiến trái chiều về tính biểu đạt của ngôn ngữ Ruby

    Ruby rất tuyệt khi làm việc trong hệ sinh thái của nó hoặc làm những việc mà hệ sinh thái đó kỳ vọng, nhưng lại rất khó chịu khi cố làm những việc không theo chuẩn. Các phương thức hỗ trợ có thể được định nghĩa ở đâu đó sâu 5 tầng trừu tượng, và đôi khi còn là một phần của metaprogramming trong thư viện nào đó nên LSP cũng không chỉ ra được. Ruby là một hệ sinh thái tôn vinh sự ngầm định, và điều đó đôi lúc tạo cảm giác phát điên. Dù mã hoàn thiện có đẹp và dễ đọc đến đâu thì điều đó cũng không giải quyết được mọi vấn đề.

  • Thừa nhận tầm quan trọng của trải nghiệm lập trình viên nhưng cho rằng Ruby không phải tốt nhất

    Tôi đồng ý rằng trải nghiệm lập trình viên đang bị đánh giá thấp trong nhiều ngôn ngữ lập trình hoặc framework, nhưng tôi không nghĩ Ruby là tốt nhất ở khía cạnh này. Cú pháp ban đầu có thể trông hấp dẫn, nhưng việc thiếu thông tin kiểu và metaprogramming khiến Ruby khó dùng. Ngoài ra còn có những yếu tố khác cần cân nhắc khi chọn ngôn ngữ lập trình, ví dụ như hiệu năng runtime. Có lẽ Ruby đã hết thời cũng vì thiếu static typing và những lý do như vậy. Cá nhân tôi cho rằng Kotlin là điểm cân bằng lý tưởng cho một ngôn ngữ lập trình. Kotlin ngắn gọn, dễ đọc, có hỗ trợ công cụ hàng đầu, static typing, hiệu năng rất tốt của JVM và toàn bộ hệ sinh thái Java.

  • Bày tỏ sự yêu thích với Ruby nhưng giải thích vì sao vẫn ưu tiên Python

    Tôi thích Ruby, và còn thích hơn Python. Đặc biệt, việc chuỗi các phép toán hàm rất gọn gàng và giàu tính biểu đạt. Tôi thích điểm này vì nó giống Java streams. Hệ sinh thái thư viện cũng rất tuyệt, và giống Python ở chỗ thư viện cực kỳ thực dụng. Nhưng với những công việc cần bảo trì, tôi sẽ chọn Python, còn khi phải để ý dù chỉ một chút đến hiệu năng thì tôi sẽ chọn Java. Giữa Ruby và Python, tôi vẫn tiếp tục chọn Python vì hai ngôn ngữ có cách tiếp cận khác nhau với gradual typing. Python 3 cho phép đưa type vào như một phần của chương trình, còn Ruby có xu hướng đặt type ở các tệp riêng. Điều này có vẻ chủ yếu dành cho thư viện, tương tự việc thư viện JavaScript đi kèm tệp type của TypeScript. Nhưng cá nhân tôi muốn dùng type trực tiếp. Tất nhiên có công cụ Sorbet, nhưng tôi không thích việc nó là một gem và hoạt động trong ngôn ngữ chứ không phải là một phần của cú pháp. Tôi đã thấy nó hoạt động tốt ở Stripe, nhưng cá nhân tôi không thích, và cảm thấy Python 3 với type hint tích hợp sẵn giúp áp dụng type dễ hơn Ruby. Tôi rất thích Ruby, nhưng mong phần type hint sẽ được cải thiện.

  • Chia sẻ trải nghiệm với nhiều ngôn ngữ và nói rằng mức độ yêu thích dành cho Ruby khá thấp

    Tôi đã thử nhiều ngôn ngữ khác nhau, và từng đào rất sâu vào Ruby khi chủ yếu dùng Rails. Tuy nhiên Ruby có lẽ là ngôn ngữ tôi ít thích nhất. Phần lớn những tính năng làm Ruby trở nên độc đáo lại khiến tôi tìm niềm vui về lập trình hàm ở F#, dùng C++ khi muốn cảm giác phiêu lưu, hoặc dùng Scheme/Racket khi cần một ngôn ngữ động. Tôi tự hỏi liệu có một định nghĩa định lượng nào thường được chấp nhận cho tính biểu đạt của ngôn ngữ lập trình hay không. Ở đây tác giả dường như đồng nhất tính biểu đạt với việc gần với ngôn ngữ tự nhiên. Theo kinh nghiệm của tôi, mã Ruby thì dễ viết nhưng khó theo dõi nếu bạn không quen với codebase và các idiom của nó. Rất nhiều thông tin cần để hiểu được truyền tải qua ngữ cảnh ngầm định.

  • Thể hiện sự ác cảm mạnh với Ruby nhưng cho biết đây vẫn là ngôn ngữ đang dùng chính

    Tôi ghét Ruby một cách nhiệt thành, nhưng hiện tại đây vẫn là ngôn ngữ tôi dùng chủ yếu. Vấn đề không hẳn là bản thân Ruby là một ngôn ngữ thiếu hợp lý, mà là các pattern phổ biến trong hệ sinh thái. Việc dùng kế thừa để chia sẻ mã, sự tràn lan của trạng thái toàn cục có thể thay đổi, và lạm dụng metaprogramming đều là vấn đề. Những điều này không phải do ngôn ngữ ép buộc, mà là các tập quán mà cộng đồng hiếm khi tránh dùng.

  • Than phiền về sự khó khăn khi bảo trì Ruby và cố gắng chuyển sang ngôn ngữ khác

    Tôi cảm thấy việc bảo trì Ruby là một cơn ác mộng và đang cố thoát khỏi địa ngục đó. Tôi thích Ruby cho các dự án cá nhân, nhưng khi làm cùng người khác thì mọi thứ rối tung lên nhanh hơn, và vì thế ưu điểm của Ruby là “không cản đường bạn” cũng biến mất. Vấn đề được chỉ ra là nó phá hủy khả năng suy luận cục bộ trong mã.

  • Chia sẻ trải nghiệm chuyển từ Ruby sang Rust nhưng vẫn bày tỏ tình cảm với Ruby

    Sau 10 năm dùng Ruby, tôi đã chuyển sang Rust cách đây 4 năm và không có ý định quay lại. Dù vậy tôi vẫn có tình cảm với Ruby. Tôi cảm thấy mình không thể tiếp tục nếu không có một hệ thống kiểu tốt, có lẽ vì đã quen với Rust. Tuy nhiên tôi vẫn nhớ khả năng reflection mạnh mẽ của Ruby.

  • Chỉ ra sự mỉa mai rằng những ngôn ngữ lập trình thú vị thường có thị trường việc làm nhỏ

    Một trong những điều mỉa mai của lập trình là những ngôn ngữ thú vị nhất thường lại có thị trường việc làm nhỏ nhất. Nếu có thể lập trình Elixir cả ngày thì nghề lập trình viên của tôi hẳn sẽ tốt hơn nhiều, nhưng việc làm Elixir gần như không có so với TypeScript, Python hay Java. Ruby từng là ngoại lệ cho điều này, nhưng giờ hầu như không còn nhiều người xây dựng trên Rails nữa, thay vào đó là rất nhiều người xây dựng trên React và NextJS. Đây là câu chuyện của thị trường ứng dụng full-stack nói chung; với người dùng Rust cho hệ thống hoặc Python cho data/AI thì có thể sẽ khác.

  • Nhấn mạnh tác động của hệ sinh thái và văn hóa Ruby đối với việc lập trình

    Có rất nhiều tranh luận về bản thân ngôn ngữ, nhưng hệ sinh thái Ruby và văn hóa mà nó tạo ra mới là lý do khiến tôi tiếp tục gắn bó với Ruby. Bài viết cũng chỉ ra điều này. Tôi vẫn chưa thấy cộng đồng lập trình nào vừa khích lệ vừa thân thiện như cộng đồng quanh Ruby.

  • Phản hồi tích cực với tác giả yêu thích Ruby và chia sẻ trải nghiệm cá nhân

    Tôi vui khi thấy tác giả thích Ruby, và với tư cách là người có trải nghiệm hạn chế với Ruby, những trích dẫn này đặc biệt gây ấn tượng với tôi. Những điều như ngôn ngữ phải mang lại niềm vui khi sử dụng, mã Ruby được viết tốt có thể đọc như ngôn ngữ tự nhiên, và sức mạnh của việc cảm thấy được công nhận bởi ngôn ngữ mình lập trình đều rất quan trọng. Tôi cũng đồng ý với lời Kent Beck rằng thiết kế phần mềm là một sự thực hành của các mối quan hệ con người. Tất cả các thành phần hỗ trợ một ngôn ngữ như compiler, tài liệu, thư viện chuẩn, thư viện bên thứ ba, package manager, framework, formatter, profiler đều đặc biệt quan trọng.