Rust vs C++ — Sau 3 tháng học Rust, mình có gì để nói?

Phong Hy

Chắc hẳn nhiều bạn cũng giống như mình hồi đầu năm — nghe thiên hạ đồn thổi về Rust dữ quá, cuối cùng cũng phải ngồi xuống học thử coi nó hay ho cỡ nào. Sau 3 tháng vật lộn với mượn borrow checker chiến đấu, mình quyết định viết vài dòng cảm nhận cho ai đang phân vân giữa Rust và C++.

Ảnh: Lukas Blazek — Pexels

C++ — người bạn cũ kỹ nhưng vững chắc

C++ là cánh tay phải của mình từ thời đại học. Nó ở đâu cũng có, tài liệu trên trời dưới biển, code legacy trong mọi công ty. Nhưng mà nói thiệt, càng làm càng thấy mệt. Memory leak, undefined behavior, con trỏ lung tung — mỗi lần debug là mỗi lần mình muốn đập bàn. Điển hình nhất là vụ tuần trước, mất nguyên một buổi chiều chỉ vì quên delete một cái array. C++ cho mình quyền tự do tuyệt đối, nhưng cái giá phải trả là tự chịu trách nhiệm mọi thứ. Nó giống như lái xe số sàn vậy — ngầu, nhưng mà mệt.

Rust — mối tình mới đầy bất ngờ

Sau nhiều lần nghe bạn bè khen Rust quá trời, mình cũng quyết tâm học. Đúng là cái borrow checker nó khó chịu thiệt — compile error liên tục, nhưng mà lạ một cái là sau khi qua được cửa ải đó, code của mình chạy ngon lành ngay lần đầu tiên. Hồi xài C++, mình compile xong cũng không dám chắc nó chạy đúng, phải chạy thử đủ kiểu. Còn Rust, compile qua là coi như 80% ok rồi.

Cargo cũng là một điểm cộng lớn. Không cần CMake, không cần conan vcpkg lòng vòng. cargo new rồi viết code, cargo build xong. Package ecosystem cũng đang phát triển từng ngày — tokio cho async, serde cho serialize, clap cho CLI tool. Mình mới vọc thử 2 tuần nay và đã viết xong một cái tool nhỏ xử lý file log, chạy nhanh hơn bản C++ cũ tới 2 lần. Ấn tượng thiệt sự.

Ảnh: Sarah — Pexels

Lời khuyên nếu bạn đang phân vân

Mình nghĩ thế này: nếu bạn mới bắt đầu học lập trình hệ thống, học Rust luôn đi. Đỡ đau đầu hơn. Còn nếu bạn đã có kinh nghiệm với C++ rồi (hoặc đang làm ở công ty dùng C++, legacy nhiều) thì học Rust như một kỹ năng bổ sung — nó sẽ cho bạn góc nhìn mới về memory safety và thiết kế hệ thống.

Bí quyết học Rust của mình là: đừng chạy trốn borrow checker. Khi nó báo lỗi, hãy đọc kỹ, cố hiểu tại sao, rồi sửa. Sau 2-3 tuần là quen à.

Tóm lại, cả hai đều là những công cụ đỉnh cao, không có cái nào "hơn" hẳn cái nào. Chọn đúng tool cho đúng job là được. Nhưng nếu bạn hỏi mình bây giờ có muốn quay lại C++ thuần không... thì chắc mình sẽ suy nghĩ thêm một hồi. 😄

Ảnh: Lukas Blazek & Sarah — Pexels