Ngôn ngữ lập trình được tạo ra do chiếc thang máy hỏng

Rust trở thành ngôn ngữ lập trình được lựa chọn để cải tiến hoặc tạo ra phần mềm mới thay cho C, C++ hay Java.

Năm 2006, Graydon Hoare là lập trình viên của Mozilla, công ty phát triển trình duyệt web mã nguồn mở Firefox. Trở về nhà sau ngày làm việc tại Vancouver (Canada), Hoare phát hiện thang máy chung cư bị hỏng do lỗi phần mềm. Đó không phải lần đầu xảy ra tình trạng trên.

“Thật lố bịch. Những người chuyên về máy tính như chúng ta chẳng thể giúp thang máy hoạt động mà không bị hỏng”, Hoare thốt lên.

Là lập trình viên, Hoare biết sự cố xảy ra do lỗi bộ nhớ. Phần mềm vận hành thang máy thường được viết bằng C hoặc C++. Dù cho phép tạo mã nhanh và tinh gọn, các ngôn ngữ lập trình trên dễ gây lỗi tràn bộ nhớ.

Khắc phục nhược điểm của Java, C và C++

Từ chiếc thang máy hỏng, Hoare quyết định tạo ra Rust. Đây là ngôn ngữ lập trình linh hoạt, thân thiện và ít lỗi, nhằm giảm thiểu các sự cố gây khó chịu như trên. Tên gọi Rust được đặt theo loại bệnh thực vật gây ra bởi nấm cực kỳ khỏe mạnh.

Sau 17 năm, Rust trở thành một trong những ngôn ngữ lập trình phổ biến dù còn non trẻ. Theo MIT Technology Review, có khoảng 2,8 triệu lập trình viên sử dụng Rust. Các công ty như Amazon hay Microsoft thậm chí xem đây là ngôn ngữ lập trình của tương lai.

So với ngôn ngữ lập trình khác, Rust được đánh giá cao khi giải quyết một số vấn đề phổ biến trên các ngôn ngữ như C và C++, nổi bật là lỗi tràn bộ nhớ.

Có thể ví bộ nhớ máy tính như tấm bảng phấn. Khi phần mềm hoạt động, dữ liệu được ghi vào bảng để kiểm tra, sau đó xóa đi nếu không còn cần thiết.

Logo của ngôn ngữ lập trình Rust. Ảnh: Bleeping Computer.

Những ngôn ngữ lập trình có cách quản lý bộ nhớ khác nhau. C hay C++ cho phép lập trình viên kiểm soát linh hoạt cách thức và thời điểm phần mềm ghi dữ liệu. Dù vậy, điều đó tạo ra một số nhược điểm.

Cụ thể, sự kiểm soát yêu cầu lập trình viên theo dõi cẩn thận vùng bộ nhớ được ghi và thời điểm cần dọn dẹp dữ liệu. Nếu vô tình quên dọn dẹp, phần mềm có thể ghi lên vùng đã chứa dữ liệu.

Để giảm rủi ro tràn bộ nhớ, các ngôn ngữ lập trình như Java, JavaScript hay Python trang bị thành phần Garbage Collector, có thể tìm kiếm và dọn dẹp định kỳ các thành phần mà chương trình không còn dùng đến.

Tính năng trên yêu cầu nhiều tài nguyên để vận hành. Do đó, Hoare đã thiết kế ngôn ngữ cân bằng giữa mức tiêu thụ tài nguyên và dọn dẹp bộ nhớ.

Khác với Java hay Python, Rust sẽ tự động tìm kiếm vị trí chứa dữ liệu cần dọn dẹp. Tuy nhiên, lập trình viên cần làm quen với quy tắc viết mã nghiêm ngặt, về cách sử dụng và sao chép dữ liệu trong phần mềm.

Nói cách khác, những đoạn mã trong Rust sẽ khó viết, nhưng an toàn với bộ nhớ do không thể gây lỗi. Ngoài ra, Rust có thể ngăn chặn việc nhiều luồng mã cùng truy cập một vị trí bộ nhớ, có thể gây lỗi khác.

Được hậu thuẫn từ sớm

Tại thời điểm thiết kế Rust, Hoare đã có kinh nghiệm 10 năm trong lĩnh vực phần mềm. Ban đầu, Rust chỉ là dự án phụ tại Mozilla. Khi đưa đồng nghiệp xem thử, Hoare nhận về phản ứng trái chiều. Một số người bày tỏ hào hứng, trong khi phần còn lại cho rằng Rust không thể thành công.

Dù vậy, dàn lãnh đạo Mozilla đã nhận thấy tiềm năng của Rust. Lúc đó, Firefox là trình duyệt phức tạp, rủi ro tràn bộ nhớ có thể xảy ra bất cứ lúc nào.

Patrick Walton, lập trình viên tại Mozilla là một trong những người ủng hộ Rust. Nhóm phát triển sau đó bổ sung nhiều thành viên, chẳng hạn như kỹ sư phần mềm Niko Matsakis và Felix Klock, những người có kinh nghiệm trong lĩnh vực nghiên cứu bộ nhớ và ngôn ngữ lập trình.

Các lãnh đạo Mozilla tham gia phát triển Rust, từ trái sang: Patrick Walton, Niko Matsakis, Felix Klock và Manish Goregaokar. Ảnh: MIT Technology Review.

Năm 2009, Mozilla chính thức đầu tư cho Rust dưới dạng dự án mã nguồn mở. Trong 10 năm tiếp theo, Mozilla tuyển thêm hàng chục kỹ sư để phát triển Rust toàn thời gian.

Đầu thập niên 2010, Rust nhận hỗ trợ từ cộng đồng lập trình viên toàn thế giới. Trong thời gian đầu, kỹ sư tại Mozilla và cộng đồng tập trung thiết kế khả năng quản lý bộ nhớ của Rust, tạo ra hệ thống “quyền sở hữu” để dữ liệu chỉ được sử dụng bởi một biến, giảm khả năng tràn bộ nhớ.

Khi hệ thống quản lý bộ nhớ được cải thiện, Rust loại bỏ trình dọn dẹp từ năm 2013. Cộng đồng phát triển Rust tiếp tục mở rộng, được đánh giá thân thiện nhờ bộ “quy tắc ứng xử” của Hoare.

Năm 2015, nhóm phát triển Rust gặp áp lực trước việc phát hành phiên bản “ổn định” của ngôn ngữ này. Walton nhớ lại thời gian cắm cúi vào laptop suốt nhiều giờ, trong khi lập trình viên Steve Klabnik viết đến 45 trang tài liệu trong 2 tuần.

Ngày 15/5/2015, phiên bản ổn định đầu tiên của Rust được phát hành. Năm 2016, Mozilla ra mắt Servo, công cụ trình duyệt được viết bằng Rust.

Một năm sau, Rust được dùng trong trình hiển thị CSS của Firefox, giúp hoạt động nhanh hơn.

Được sử dụng trên Dropbox, Discord

Theo thời gian, nhiều phần mềm nổi tiếng đã sử dụng Rust. Năm 2020, Dropbox giới thiệu công cụ đồng bộ mới, với thành phần xử lý file được viết bằng Rust. Trên Discord, việc sử dụng Rust cho các hệ thống quan trọng mang đến hiệu năng nhanh gấp 10 lần so với ngôn ngữ lập trình Go.

Ngay cả kỹ sư phần mềm tại Amazon Web Services tin tưởng Rust có thể giúp mã chạy an toàn và nhanh hơn. Nghiên cứu cho thấy mã viết bằng Rust cho hiệu quả ngang ngửa, nhưng chỉ tiêu thụ một nửa năng lượng so với Java.

Màn hình máy tính với phần mềm lập trình. Ảnh: TechSpot.

Độ phổ biến của Rust gây áp lực lên đội ngũ phát triển. Sự quan tâm của các hãng công nghệ lớn có thể tác động đến quá trình cải tiến ngôn ngữ. Ngoài ra, một số vị trí tại Rust chỉ làm vì đam mê chứ không được trả lương.

Năm 2021, các hãng công nghệ lớn đã thành lập Rust Foundation, trị giá 20.000 USD để trả tiền cho các tình nguyện viên phát triển Rust. Quỹ này còn tài trợ máy chủ, đảm bảo hoạt động liên tục để lưu trữ mã nguồn của Rust.

Sau 17 năm ra đời, Rust trở thành ngôn ngữ lập trình được đánh giá cao. Các lãnh đạo Microsoft thậm chí đề xuất áp dụng rộng rãi Rust để viết phần mềm mới thay cho C và C++.

Tất nhiên, C và C++ sẽ không biến mất trong nhiều thập kỷ tới. Dù vậy, với ưu điểm nhanh chóng, đơn giản, thân thiện và an toàn, Rust sẽ được sử dụng nhiều hơn để tạo ra các phần mềm mới trong tương lai.

Phúc Thịnh

Nguồn Znews: https://zingnews.vn/chiec-thang-may-hong-tao-nen-ngon-ngu-lap-trinh-tiem-nang-post1405105.html