Bạn có thắc mắc vì sao Ruby lại rất phổ biến? Có người gọi nó là một ngôn ngữ tao nhã và tinh tế, nhưng lại rất mạnh mẽ và thực tiễn. Vậy điều gì đã khiến họ nhận định như vậy?
- Bạn Cần Học Bao Nhiêu Ngôn Ngữ Lập Trình Để Trở Thành Developer?
- Các ngôn ngữ lập trình phổ biến nhất năm 2023
- Có bao nhiêu ngôn ngữ lập trình? | ĐÀO TẠO CÁC KHÓA HỌC NGẮN HẠN-DÀI HẠN
- Bắt đầu học lập trình Java từ đâu và như thế nào?
- Top 05 khóa học lập trình Java online dành cho người mới bắt đầu
Contents
Lý tưởng của sáng tạo gia Ruby
Ruby là một ngôn ngữ thể hiện sự cân đối. Cha đẻ của nó, Yukihiro “Matz” Matsumoto, đã kết hợp những đặc điểm tốt từ các ngôn ngữ khác nhau như Perl, Smalltalk, Eiffel, Ada và Lisp để tạo ra một ngôn ngữ thanh lịch, mang tính cân bằng giữa lập trình hướng chức năng và lập trình hướng thủ tục.
Bạn đang xem: Ruby
Ông tuyên bố rằng ông “muốn tạo ra một Ruby gần gũi và tinh tế”. Theo ý kiến của ông, “Ruby được thiết kế đơn giản bên ngoài nhưng phức tạp bên trong, tương tự như cấu trúc bên trong của con người”1.
Sự phát triển của Ruby
Sau khi ra mắt công chúng vào năm 1995, Ruby đã thu hút được sự quan tâm của nhiều lập trình viên. Vào năm 2006, Ruby đã trở thành một trong những ngôn ngữ phổ biến, được chứng minh qua sự hoạt động tích cực của nhiều nhóm người dùng trên khắp thế giới và sự hấp dẫn của các hội nghị liên quan đến Ruby luôn kín vé.
Ruby-Talk là danh sách thư gửi chính để thảo luận về ngôn ngữ Ruby. Theo thống kê, trung bình có hơn 200 bài viết mỗi ngày trong năm 2006. Tuy nhiên, số này đã giảm trong những năm gần đây do xu hướng người dùng gửi bài viết vào các nhóm nhỏ riêng thay vì gửi vào đây.
Chỉ số TIOBE index, đo lường sự phát triển của các ngôn ngữ lập trình, xếp Ruby ở vị trí thứ 9 nhờ vào sự phổ biến của nhiều phần mềm sử dụng ngôn ngữ này, đặc biệt là framework Ruby on Rails.
Ruby hoàn toàn miễn phí, không yêu cầu phí bản quyền và không có hạn chế về việc sử dụng, sao chép, sửa đổi và phân phối.
Mọi thứ đều là đối tượng
Xem thêm : PHP Developer là gì? Lộ trình trở thành PHP Web
Khi bắt đầu phát triển Ruby, Matz tham khảo các ngôn ngữ khác để tìm các cú pháp lý tưởng cho ngôn ngữ mới của ông. Ông nói rằng “Tôi muốn tìm một ngôn ngữ scripting mạnh mẽ hơn Perl và hướng đối tượng hơn Python2”.
Trong Ruby, mọi thứ đều là đối tượng. Tất cả thông tin và mã đều có thể có thuộc tính và hành động. Lập trình hướng đối tượng gọi thuộc tính là biến địa phương và gọi hành động là phương thức. Sự tiếp cận này giúp rõ ràng thấy tính chất hướng đối tượng khi áp dụng một hành động lên một con số.
Trong nhiều ngôn ngữ khác, số và một số loại nguyên thủy không được coi là đối tượng. Ruby chịu ảnh hưởng từ ngôn ngữ Smalltalk khi gán phương thức và biến đối tượng cho tất cả các loại dữ liệu. Điều này làm cho Ruby dễ sử dụng hơn vì nguyên tắc về đối tượng áp dụng đồng nhất.
Tính linh hoạt của Ruby
Ruby được xem là một ngôn ngữ linh hoạt, cho phép người dùng thay đổi các thành phần của nó. Các thành phần cốt lõi của Ruby có thể được xóa, tái định nghĩa theo ý muốn người dùng và thêm các thành phần mới. Ruby không cố gắng kiềm chế lập trình viên.
Ví dụ, phép cộng có thể được thực hiện bằng toán tử (+). Nhưng nếu bạn muốn sử dụng từ “cộng” để biểu diễn, bạn có thể thêm một phương thức vào lớp Numeric của Ruby:
class Numeric
def cộng(số)
self + số
end
end
Toán tử của Ruby chỉ là cách viết dễ đọc của các phương thức. Bạn có thể tái định nghĩa chúng nếu cần.
Block, một cách đặc trưng để biểu diễn
Block trong Ruby là một cách biểu diễn rất mạnh mẽ và linh hoạt. Lập trình viên có thể kết hợp một closure vào bất kỳ phương thức nào để mô tả cách phương thức đó hoạt động. Closure này được gọi là block và là lựa chọn phổ biến cho các lập trình viên mới tiếp cận từ các ngôn ngữ hướng thủ tục khác như PHP hay Visual Basic.
Block được tạo ra với sự ảnh hưởng từ các ngôn ngữ lập trình hướng chức năng. Matz nói rằng trong Ruby, ông muốn tạo ra loại closures theo phong cách Lisp3.
[1, 2, 3].map do |số|
puts số
end
Xem thêm : Top 10 ứng dụng Lập trình Python trong thực tế
Ở đoạn mã trên, block được miêu diễn bên trong phương thức map
. Nhiều phương thức khác trong Ruby để trống cho lập trình viên điền vào với các thông tin mà phương thức này cần làm.
Ruby và Mixin
Mixin là thuật ngữ chỉ cách một ngôn ngữ đính kèm phần tử như hàm vào một tập hợp như lớp.
Khác với các ngôn ngữ hướng đối tượng khác, Ruby chỉ hỗ trợ kế thừa đơn (single inheritance), và thiết kế này có mục đích. Tuy nhiên, Ruby biết đến khái niệm module (còn được gọi là Categories trong Objective-C). Module là tập hợp của nhiều phương thức.
Lớp (class) có thể mixin một module và sử dụng tất cả các phương thức của module đó. Ví dụ, bất kỳ lớp nào triển khai phương thức each
đều có thể mixin module Enumerable. Module này bao gồm các phương thức sử dụng each
để thực hiện vòng lặp.
class A
include Enumerable
def each
# ...
end
end
Nói chung, đa số Rubyist cho rằng thiết kế này rõ ràng hơn kế thừa đa (multiple inheritance) vì nó đơn giản và tránh được các hạn chế.
Diện mạo của Ruby
Trái với việc sử dụng các dấu câu, Ruby thay vào đó sử dụng từ ngữ tiếng Anh. Tuy nhiên, có một số ký hiệu được sử dụng để miêu tả Ruby. Ruby không yêu cầu cú pháp để khai báo biến. Thay vào đó, nó sử dụng cách đặt tên đơn giản để diễn đạt phạm vi của biến.
var
là biến cục bộ (local variable).@var
là biến đối tượng (instance variable).$var
là biến toàn cục (global variable).
Các ký hiệu trên giúp lập trình viên nhìn nhận vai trò của từng biến một cách dễ dàng. Bên cạnh đó, bạn không cần phải thêm self.
trước các thành phần của đối tượng.
Những tính năng khác của Ruby
Ruby còn có nhiều tính năng khác, bao gồm:
- Ruby hỗ trợ xử lý ngoại lệ giống như Java hay Python, giúp dễ dàng xử lý các lỗi.
- Ruby sử dụng bộ thu gom rác kiểu đánh dấu-và-dọn dẹp (mark-and-sweep garbage collector) cho tất cả các đối tượng Ruby. Điều này loại bỏ nhu cầu duy trì các biến đếm tham chiếu trong các thư viện mở rộng. Như Matz nói, “Điều này tốt cho sức khoẻ của bạn hơn”.
- Viết mở rộng kiểu C (C extension) với Ruby dễ hơn Perl hay Python. Ruby có một thư viện API để gọi Ruby từ C. Điều này bao gồm các hàm tích hợp Ruby vào các phần mềm để sử dụng như một ngôn ngữ scripting. Ruby cũng có sẵn một giao diện SWIG để sử dụng.
- Ruby có thể đọc các thư viện mở rộng kiểu động nếu hệ điều hành cho phép.
- Ruby có khả năng xử lý threading độc lập với hệ điều hành. Do đó, các nền tảng khác mà Ruby chạy trên đều có thể có multithreading dù hệ điều hành đó có hỗ trợ hay không. Thậm chí cả MSDOS cũng hỗ trợ!
- Ruby dễ dàng thực hiện việc port sang các nền tảng khác nhau. Mặc dù được phát triển chủ yếu cho GNU/Linux, nhưng Ruby có thể hoạt động trên các hệ UNIX khác như macOS, Windows, DOS, BeOS, OS/2 và nhiều nền tảng khác.
Tham khảo
- Matz, phỏng vấn trên Ruby-Talk mailing list, 12/05/2000.
- Matz, phỏng vấn cha đẻ của Ruby, 29/11/2001.
- Matz, Blocks và Closures trong Ruby, 12/12/2003.
Nguồn: https://laptrinhc.edu.vn
Danh mục: Ngôn ngữ lập trình