Theo các cuộc khảo sát hàng năm của StackOverflow, Rust là ngôn ngữ lập trình được yêu thích nhất trong năm năm liên tiếp gần đây. Trang web chia sẻ code GitHub cho biết Rust là ngôn ngữ phát triển nhanh thứ hai trên nền tảng này vào năm 2019, tăng 235% so với năm trước. Hầu hết những người đã dùng thử Rust đều muốn tiếp tục sử dụng nó với 86,1% người tham gia khảo sát năm 2020 trả lời như vậy.
Nhưng nếu bạn chưa sử dụng Rust, bạn có thể sẽ tự hỏi: Rust là gì? tại sao nó lại đặc biệt và điều gì khiến nó trở nên phổ biến đối với các developer? Tại sao gần đây Rust lại được sử dụng nhiều trong các lĩnh vực khoa học? Liệu tôi có nên học nó? Bài viết dưới đây sẽ mang đến cho bạn câu trả lời.
Ngôn ngữ lập trình Rust là gì?
Rust là ngôn ngữ lập trình được tạo ra vào năm 2006 bởi Graydon Hoare như một dự án phụ khi đang là developer tại Mozilla. Rust pha trộn hiệu suất của các ngôn ngữ như C ++ với cú pháp thân thiện hơn, tập trung vào code an toàn và được thiết kế tốt giúp đơn giản hóa việc phát triển. Các phần của trình duyệt Firefox của Mozilla được viết bằng Rust và các nhà phát triển tại Microsoft được cho là sử dụng nó để mã hóa lại các phần của hệ điều hành Windows.
Nói một cách đơn giản, Rust là ngôn ngữ lập trình cấp thấp (low level), định kiểu tĩnh (statically typed), là ngôn ngữ lập trình đa dụng (multi-paradigm), tập trung vào sự an toàn và hiệu suất.
Rust giải quyết các vấn đề mà C / C ++ đã phải vật lộn trong một thời gian dài, chẳng hạn như lỗi bộ nhớ và xây dựng các chương trình đồng thời.
Trên StackOverflow blog, Jake Goulding người đang đang có đóng góp hàng đầu về Rust (top Rust contributor) trên nền tảng này cho biết: “câu trả lời ngắn gọn (là tại sao mọi người yêu thích Rust) là Rust giải quyết những vấn đề (pain points) tồn tại trong rất nhiều ngôn ngữ lập trình khác, có sự phát triển vững chắc và có ít hạn chế”.
Những lĩnh vực ứng dụng Rust
Vậy Rust thích hợp cho những lĩnh vực nào? Rust là một ngôn ngữ cấp thấp (low level), nó hữu ích khi bạn cần khai thác nhiều hơn các tài nguyên mà bạn có. Vì Rust là ngôn ngữ lập trình statically typed, nó sẽ ngăn chặn một số lớp lỗi nhất định trong quá trình biên dịch. Một số lĩnh vực có thể sử dụng Rust:
- Xây dựng các công cụ command-line mạnh mẽ, đa nền tảng.
- Các dịnh vụ phân tán trực tuyến (Distributed online services).
- Các thiết bị nhúng (Embedded devices).
- Các ứng dụng machine learning.
- Bất kỳ nơi đâu cần lập trình hệ thống như các browser engines.
Ngày có nhiều công ty sử dụng Rust cho các sản phẩm của họ. Có thể kể một số dự án hay sản phẩm tiêu biểu:
- Amazon phát triển công nghệ ảo hóa Firecracker sử dụng Rust.
- Các công ty như Dropbox, Yelp, Coursera hay Cloudflare dùng Rust cho các sản phẩm của họ.
- Một số hệ điều hành được xây dựng bằng Rust: Redox, intermezzOS, QuiltOS, Rux, Tock
- Bạn có thể xem trên thêm các dự án dùng Rust tại đây
Những đặc điểm nổi trội của ngôn ngữ lập trình Rust
1.Quản lý bộ nhớ
Nếu bạn muốn lập trình hệ thống, bạn cần điều khiển bộ nhớ ở mức thấp. Thật không may, quản lý thủ công đi kèm với rất nhiều vấn đề trong các ngôn ngữ như C. Mặc dù có sự hiện diện của các công cụ như Valgrind, việc nắm bắt các vấn đề về quản lý bộ nhớ rất khó. Rust ngăn chặn những vấn đề này. Hệ thống quyền sở hữu của Rust phân tích việc quản lý bộ nhớ của chương trình tại thời điểm biên dịch, đảm bảo rằng lỗi do quản lý bộ nhớ kém sẽ không thể xảy ra và việc thu thập rác là không cần thiết. Hơn nữa, nếu bạn muốn thực hiện việc tối ưu hóa theo cách giống như C, bạn có thể làm điều đó trong khi tách chúng ra khỏi phần còn lại của code bằng unsafe keyword.
2.Quản lý đồng thời (concurrency) dễ dàng
Với tính năng borrow checker, Rust có thể ngăn chặn các cuộc đua dữ liệu tại thời điểm biên dịch. Các cuộc chạy đua dữ liệu xảy ra khi hai luồng truy cập vào cùng một bộ nhớ cùng một lúc và chúng có thể dẫn đến một số hành vi khó đoán, khó lường. Rất may, Rust có thể ngăn chặn các hành vi không xác định này.
3. Zero-cost abstractions
Với Zero-cost abstractions, Rust đảm bảo rằng không có runtime overhead cho các trừu tượng (abstraction) mà bạn sử dụng. Nói một cách đơn giản: sẽ không có sự khác nhau về tốc độ giữa code ở mức thấp và code được viết với abstractions. Điều này cực kỳ quan trọng nếu biết rằng hơn 70% các vấn đề do Microsoft phải xử lý là liên quan đến các lỗi bộ nhớ. Tương tự với Google Chrome.
Bạn có thể xem thêm các ưu điểm của Rust trên blog Kipalog
Một số tính năng nổi trội của ngôn ngữ lập trình Rust
Borrow checker
Như trên đã đề cập, borrow checker trong Rust ngăn chặn các cuộc chạy đua dữ liệu tại thời điểm biên dịch. Các cuộc đua dữ liệu xảy ra khi cùng một bộ nhớ được truy cập bởi hai luồng cùng một lúc. Rust ngăn chặn các loại hành vi không xác định này.
Ownership
Không giống như một số ngôn ngữ khác tìm kiếm bộ nhớ không được sử dụng trong khi chương trình đang chạy, Rust quản lý thông qua một hệ thống quyền sở hữu (ownership). Nó bao gồm một tập hợp các quy tắc được kiểm tra bởi trình biên dịch.
Mỗi giá trị trong Rust có một biến được gọi là owner (chủ sở hữu). Chỉ có thể có một owner tại một thời điểm. Quyền sở hữu bị loại bỏ khi biến vượt ra ngoài phạm vi, về cơ bản có nghĩa là làm sạch bộ nhớ được cấp phát cho một heap khi biến không thể được truy cập nữa.
Các quy tắc sở hữu cung cấp các lợi ích như an toàn bộ nhớ kèm theo kiểm soát tốt hơn đối với bộ nhớ, khác với các ngôn ngữ lập trình khác.
Lifetime
Trình biên dịch Rust sử dụng Lifetime để theo dõi tính hợp lệ của các tham chiếu. “Reeference” của một biến là một con trỏ trỏ đến một biến cụ thể. Bạn có thể sử dụng chú thích Lifetime để thông báo cho người kiểm tra mượn về thời gian các tham chiếu sẽ có hiệu lực. Borrow checker có thể suy ra lifetime chính xác trong nhiều trường hợp nhưng đôi khi có thể cần sự trợ giúp của các developers. Tất cả các tính năng này giúp tối ưu hóa việc quản lý bộ nhớ bằng Rust. Điều này làm cho nó trở thành ngôn ngữ lập trình được lựa chọn cho đám mây.
Các framework của Rust
Các framework chính của Rust ecosystem bao gồm:
Bạn có thể xem sự so sánh các các framework này trên blog của Luca Palmieri, khá chi tiết.
Lộ trình phát triển của ngôn ngữ lập trình Rust
Các kế hoạch phát triển của Rust trong năm 2021 có thể tìm thấy trên Rust Blog
Cũng trên blog này bạn cũng có thể xem kết quả khảo sát về ngôn ngữ lập trình Rust trong năm vừa qua
Nguồn tài liệu tìm hiểu về ngôn ngữ lập trình Rust
Tài liệu tham khảo về Rust
- Học Rust: https://www.rust-lang.org/learn
- Sách The Rust Programming Language của Steve Klabnik and Carol Nichols.
- Tour of Rust: các kiến thức cơ bản về Rust
- Exercism Rust track. Nếu bạn muốn có thêm kinh nghiệm về ngôn ngữ và cú pháp của nó, thì Exercism là một lựa chọn tốt..
- Rust by example. Tập hợp các bài tập về Rust.
- Rust cheat sheet. Nếu bạn muốn xem nhanh các khái niệm quan trọng nhất của Rust thì vào trang này.
- Rustlings. Một bộ sưu tập các bài tập Rust.
- Rust external web APIs: The definitive guide
Kết luận
Bất kể bạn đang quen thuộc và đang yêu thích ngôn ngữ lập trình nào, hoặc đang chọn một ngôn ngữ lập trình để học, Rust là một ngôn ngữ lập trình mà bạn nên tìm hiểu. Rust có những tính năng và cách vận hành đặc biệt hấp dẫn khiến cho nhiều lập trình viên trên thế giới yêu thích. Nếu bạn đang tìm một ngôn ngữ lập trình dự án của mình với yêu cầu code nhanh và hiệu quả, an toàn hơn thì có lẽ bạn nên xem liệu Rust có phải là ngôn ngữ lập trình tiếp theo của bạn không!
Tài liệu tham khảo cho bài viết này:
- https://stackoverflow.blog/2020/06/05/why-the-developers-who-use-rust-love-it-so-much/
- https://doc.rust-lang.org/book/
- https://serokell.io/blog/rust-guide