Ngôn ngữ lập trình Rust là gì?

Trước tiên thì Rust là gì?

Rust là một ngôn ngữ lập trình được phát triển bởi Mozilla Research và sau đó chủ yếu được phát triển bởi cộng đồng mã nguồn mở. Cha đẻ của Rust là một nhà thiết kế ngôn ngữ Graydon Hoare, Rust được giới thiệu lần đầu vào năm 2010. Rust có tốc độ chạy ngang hàng với C++, nhưng lại có thể giúp chúng ta viết code an toàn hơn vì không phải đụng chạm nhiều đến xử lý bộ nhớ. Ngoài ra Rust còn có các chức năng hỗ trợ chạy nhiều tiến trình song song trên các máy tính đa lõi.

Vậy Rust có những ưu điểm gì?

Một trong những ưu điểm của C++ là tốc độ thực thi nhanh bởi vì C++ cho chúng ta khả năng điều khiển bộ nhớ của máy tính, tuy nhiên điều này lại tăng khả năng crash của ứng dụng do vì việc cấp phát, thu hồi và sử dụng bộ nhớ là một công việc phức tạp.

Đối lập với các ngôn ngữ như C++ là các ngôn ngữ như Python, Ruby…v.v đây vốn là các ngôn ngữ đơn giản, dễ sử dụng và an toàn, tuy nhiên lại không cho phép thực hiện các thao tác ở cấp độ thấp như điều khiển bộ nhớ, do đó thường thì các ứng dụng viết bằng các ngôn ngữ này chạy khá chậm.

Rust là một ngôn ngữ được tạo ra để giải quyết cả hai vấn đề trên với các tính năng:

  • Độ ổn định cao nhờ vào hệ thống kiểm tra kiểu dữ liệu chặt chẽ
  • Cho phép truy cập sâu vào bên trong hệ thống nhưng vẫn nằm trong tầm kiểm soát

Rust cho phép chúng ta quy định chính xác cách mà các giá trị được lưu trong bộ nhớ và cách bộ nhớ được sử dụng bởi hệ điều hành như thế nào.Chính vì vậy mà Rust làm cho các ứng dụng vừa chạy với tốc độ cao vừa nằm trong vùng an toàn.

Ngoài ra Rust loại bỏ tính năng garbage collector xuất hiện trong các ngôn ngữ cấp cao như Java, C#, Python…

Tốc độ của Rust

Mình có lượm được bảng so sánh tốc độ giữa các ngôn ngữ Rust, Go, NodeJS và Swift như sau (Càng nhỏ thì càng xịn, càng mịn nha)

Rust an toàn tới cỡ nào?

Một trong những điểm mạnh được nói ở phần giới thiệu phía trên đó là Rust rất an toàn, vậy thì tại sao nó lại làm được như vậy?

Chính là nhờ Rust Compiler.

Thông thường, phần lớn lỗi của một chương trình C/C++ sẽ liên quan đến việc truy xuất bộ nhớ khi thực thi (runtime error – ví dụ bạn truy cập vào vùng bộ nhớ đã bị giải phóng, sử dụng nhầm các biến có giá trị null, lỡ tay tạo ra nhiều thread cùng ghi vào một vùng nhớ,…)

Để ngăn chặn vấn đề này, Rust Compiler đề ra một loạt các quy tắc để kiểm tra ngay khi nó biên dịch chương trình.

Mọi biến mặc định đều là immutable, và không được mang giá trị null (nên không có lỗi NullReferenceException). Trong Rust, một vùng nhớ luôn có một biến sỡ hữu nó. Gán một biến vào một biến khác, tức là bạn chuyển quyền sở hữu vùng nhớ của biến đó cho biến mới. Biến cũ không được quyền truy xuất tới đó nữa. Trong một thời điểm, chỉ có một trong hai trường hợp có thể xảy ra, đó là: Nhiều biến khác có thể mượn vùng nhớ đó chỉ để đọc (read only). Chỉ có một biến có quyền mượn để ghi giá trị lên đó. Một biến chỉ có thể tồn tại bên trong scope của nó, ra khỏi scope đó nó sẽ bị giải phóng ngay lập tức.

Bất cứ khi nào vi phạm các quy tắc này, Rust sẽ báo cho chúng ta biết ngay khi biên dịch, chứ không để lọt lỗi.

Trong số các quy tắc được liệt kê ở trên, trừ quy tắc đầu tiên ra, thì những mục còn lại chính là Ownership, Borrowing & Lifetime System của Rust.

Rust không cần Garbage Collector?

Đúng vậy, Rust không có garbage collector (GC), nhưng vẫn đảm bảo được tính an toàn về bộ nhớ, đây là một trong những chức năng đặc biệt của Rust.

Thay vào đó, Rust Compiler sẽ dự đoán được khi nào một biến sẽ hết được sử dụng và tự động chèn thêm code logic để giải phóng nó, giảm thiểu chi phí cho việc quản lý bộ nhớ lúc runtime.

Và việc này được kiểm soát thông qua Ownership System.

Việc không có GC còn giúp Rust có thể dễ dàng được nhúng vào các ngôn ngữ có GC khác nữa.

Vậy bắt đầu với Rust như thế nào?

Việc học Rust khá là dễ dàng bởi vì Rust có tất cả mọi thứ bạn cần ngay trên trang chủ của nó https://www.rust-lang.org/learn

Bạn có thể đọc sách, follow những khóa học hoặc thực chiến bằng cách đi thẳng vào những ví dụ của nó.

Ngoài ra trang chủ của Rust cũng cung cấp trình chạy Rust online nếu như bạn chỉ muốn thử và không muốn cài đặt trên máy tính cá nhân

https://play.rust-lang.org/

Và đây là bài code fizzbuzz cổ điển mà chúng ta hay phải làm khi học Scala viết bằng Rust

Bài viết trên đây chỉ đưa ra một chút thông tin về Rust và những cái hay ho nó có thể làm được.
Hi vọng mọi người sẽ thấy đây là một ngôn ngữ thú vị. Mình xin kết thúc ở đây ạ ^^!

Add a Comment

Scroll Up