Category Archives: Rust – Lập trình Rust

Rust – Cài đặt

Để có thể cài đặt Rust thì chúng ta cần có Microsoft Visual C++ Build Tools – trình biên dịch C++ của Visual Studio ít nhất là phiên bản 2015. Nếu trong máy bạn không có thì khi cài đặt, Rust sẽ báo cho bạn biết là máy bạn không có rồi đưa đường link cho bạn tải, hoặc bạn cũng có thể cài C++ Build Tools bằng cách cài C++ từ Visual Studio cũng được.

Windows

Đối với Windows thì chúng ta lên trang chủ của Rust là https://www.rust-lang.org, sau đó nhấn vào nút install để tải về file cài đặt Rust có tên rustup-init.exe.

Sau đó click chuột vào file rustup-init.exe để cài đăt, Rust sẽ hiển thị một màn hình command prompt và đưa ra 3 lựa chọn để chúng ta cài đặt, ba lựa chọn này cũng không có gì đặc sắc hết nên chúng ta cứ bấm enter để rust cài đặt như bình thường luôn là được.

Linux và Mac OS X

Đối với các hệ điều hành Linux và Mac OS thì chúng ta có thể cài bằng cách chạy lệnh sau:

curl -sSL https://static.rust-lang.org/rustup.sh | sh

Xem phiên bản Rust

Hiện tại khi viết bài viết này Rust đang có phiên bản là 1.20. Bạn có thể xem phiên bản Rust trong máy mình bằng cách chạy lệnh rustc -V

Sau khi cài Rust xong thì đường dẫn đến thư mục cài đặt Rust trong Windows là C:\Users\<tên_user>\.cargo còn trong Linux là /usr/local/lib/rustlib.

Rust – Giới thiệu

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 xây dựng dựa trên những nguyên lý rõ ràng và vững chắc, Rust chứa đựng những khả năng cũng có trong C và C++, do đó Rust có tốc độ chạy ngang hàng với C++, nhưng lại cho phép lập trình viên 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.

Những ưu điểm của Rust

Một trong những ưu điểm của C++ là tốc độ thực thi nhanh bởi vì C++ cho phép lập trình viên 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 cho lập trình viên, bởi vì các ngôn ngữ này hầu như đã làm tất cả mọi thứ cho người lập trình, tuy nhiên lại không cho phép lập trình viên 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 “máy thu dọn rác” xuất hiện trong các ngôn ngữ cấp cao như Java, C#, Python… mặc dù trên thực tế người ta đã từng định thiết kế một cỗ máy thu gom rác cho Rust.

Các điểm mạnh của Rust

Rust không phải là một ngôn ngữ mang tính cách mạng với các tính năng hiện đại, tuy nhiên Rust vẫn mang trong mình những kĩ thuật đã được chứng minh trong các ngôn ngữ lập trình xưa cũ mà phần lớn là được phát triển dựa trên C++.

Rust được phát triển là một ngôn ngữ lập trình đa mục đích, đa mô hình, bao gồm mô hình lập trình mệnh lệnh, lập trình cấu trúc và lập trình hướng đối tượng. Ngoài ra ngôn ngữ này cũng kế thừa khá nhiều từ các ngôn ngữ lập trình chức năng và các kỹ thuật cấp cao trong lập trình song song.

Tính kiểm tra kiểu dữ liệu của Rust rất chặt chẽ. Trong một số trường hợp, lập trình viên không bị gò bó trong việc khai báo kiểu dữ liệu ngay khi khai báo biến như trong C++/Java, thay vào đó trình biên dịch có thể tự động nội suy ra kiểu dữ liệu dựa trên giá trị khởi tạo.

Một vấn đề khá lớn của C/C++ là hay bị leak bộ nhớ, do đó người lập trình C/C++ hay gặp những lỗi về con trỏ, tràn bộ nhớ đệm, con trỏ null…v.v Tất cả những vấn đề đó đều sẽ được giải quyết tự động trong trình biên dịch của Rust bằng cách tự động phát hiện và báo lỗi trước.

Rust sử dụng một kiến trúc khá tương đồng với Erlang để thực thi các tác vụ song song. Nói sơ qua thì Rust sẽ chạy các tiến trình trong các luồng, các luồng này sẽ không sử dụng chung bộ nhớ heap mà trao đổi thông qua các channel.

Rust cũng được thiết kế để có tính portable như C++, tức là có thể chạy trên nhiều nền tảng phần mềm và phần cứng. Hiện tại Rust có thể chạy trên Linux, Mac OS X, Windows, FreeBSD, Android và iOS. Thậm chí Rust cũng có thể gọi các đoạn code viết bằng C, và bản thân C cũng có thể gọi code viết bằng Rust.

Ứng dụng của Rust

Mặc dù Rust được thiết kế để viết ứng dụng hệ thống là chính, tuy nhiên khả năng ứng dụng của ngôn ngữ này cũng rất rộng, Rust có thể được dùng để viết các loại ứng dụng sau đây:

  • Trình biên dịch
  • Các hệ thống cần có hiệu suất cao và độ trễ thấp như thiết bị lái xe, game, thiết bị phát sóng
  • Ứng dụng phân tán và song song
  • Ứng dụng thời gian thực
  • Hệ thống nhúng
  • Web framework
  • Các hệ thống lớn và phức tạp

Servo

Mozilla sử dụng Rust để viết nên Servo, một trình duyệt web song song

(https://github.com/servo/servo)

Năm 2013, Samsung đã tham gia phát triển Servo bằng cách đưa lên Android và các bộ xử lý ARM. Sau đó Servo trở thành một dự án mã nguồn mở với hơn 200 người tham gia đóng góp phát triển.