Chiếc thang máy chung cư bị hỏng đã giúp tạo ra ngôn ngữ lập trình được yêu thích bậc nhất, có thể 'vượt mặt' cả C và C++ như thế nào?

Anh Việt | 22-02-2023 - 22:26 PM

(Tổ Quốc) - Từ một sự cố hỏng thang máy tại chung cư, một ngôn ngữ lập trình mới đã được khai sinh, với tốc độ phát triển nhanh chóng về số lượng người dùng và mức độ ứng dụng.

Năm 2006, Graydon Hoare (khi đó 29 tuổi) là một lập trình viên làm việc cho Mozilla, công ty sở hữu trình duyệt web nổi tiếng Firefox. Vào một ngày nọ, Hoare trở về căn hộ của mình tại một tòa chung cư ở Vancouver (Canada). Tại đây, Graydon Hoare phát hiện chiếc thang máy của chung cư đã gặp trục trặc, khi phần mềm điều khiển nó bị hỏng. Đáng nói, đây không phải lần đầu tiên chiếc thang máy này gặp trục trặc.

Do thang máy bị hỏng, Hoare phải cuốc bộ bằng thang bộ lên tới căn hộ ở tầng 21. Buộc phải leo bộ tới hàng chục tầng cầu thang sau một buổi làm việc mệt mỏi, Graydon Hoare cảm thấy thực sự khó chịu khi chỉ vì một lỗi phần mềm đã vô tình khiến lập trình viên này phải…tập thể dục một cách ngoài ý muốn.

"Thật lố bịch," Hoare nghĩ, "những người rành rẽ về máy tính như chúng ta thậm chí không thể tạo ra một chiếc thang máy có thể hoạt động mà không bị hỏng được à!"

Chiếc thang máy chung cư bị hỏng đã giúp tạo ra ngôn ngữ lập trình được yêu thích bậc nhất, có thể 'vượt mặt' cả C và C++ như thế nào? - Ảnh 1.

Lập trình viên Graydon Hoarem. Ảnh: Internet

Những sự cố như vậy, theo Hoare là do các vấn đề về cách chương trình sử dụng bộ nhớ. Phần mềm bên trong các thiết bị như thang máy thường được viết bằng các ngôn ngữ như C++ hoặc C, vốn nổi tiếng vì cho phép các lập trình viên có thể viết các dòng code một cách nhanh chóng, với số lượng các dòng code không cần quá nhiều.

Vấn đề là những ngôn ngữ này cũng khiến các lập trình viên vô tình gây ra lỗi bộ nhớ một cách dễ dàng, và chính những lỗi này sẽ gây ra sự cố. Theo ước tính của Microsoft, 70% lỗ hổng trong code của họ là do lỗi bộ nhớ từ các dòng code được viết bằng các ngôn ngữ này.

Hầu hết những người bình thường, nếu thấy mình lê bước lên 21 tầng cầu thang, sẽ tức giận và không nghĩ gì thêm. Nhưng Hoare đã quyết định làm một điều gì đó.

Anh mở máy tính xách tay của mình và bắt đầu thiết kế một ngôn ngữ lập trình mới, ngôn ngữ ngôn ngữ lập trình mới linh hoạt hơn, nhanh chóng hơn nhằm giảm thiểu lỗi bộ nhớ và hạn chế các tình huống như hỏng thang máy. Ngôn ngữ này có tên là Rust, theo tên của một nhóm nấm có khả năng tồn tại và phát triển rất mạnh.

Kể từ đó, ngôn ngữ lập trình Rust đã trở thành một dự án nguồn mở được hỗ trợ rất nhiều cho các lập trình viên, từ các dự án nhỏ, đơn lẻ cho đến các ứng dụng lớn được phát triển bởi những gã khổng lồ công nghệ như Microsoft và Amazon.

Vì sao Rust trở thành ngôn ngữ lập trình được yêu thích bậc nhất hiện nay?

Các ngôn ngữ lập trình như C và C++ đi kèm với sự đánh đổi. Chúng cung cấp tính linh hoạt cần thiết để các lập trình viên có thể lập trình các chức năng cần có, giúp ứng dụng có thể thực thi thành công.

Nhưng ngược lại, các ngôn ngữ này cũng yêu cầu các nhà phát triển phải quản lý bộ nhớ một cách cẩn thận. Việc không tính đến các giao dịch bộ nhớ có thể gây ra sự cố và tính không ổn định trong ứng dụng. Để giảm bớt gánh nặng quản lý bộ nhớ, các ngôn ngữ như Java đã đưa ra khái niệm được gọi là "thu gom rác". Chúng được thiết kế để dọn dẹp 'rác' bộ nhớ hệ thống theo định kỳ, giảm thiểu nguy cơ lỗi bộ nhớ. Tuy nhiên, bản thân tính năng này cũng ngốn nhiều bộ nhớ và tài nguyên máy tính hơn để chạy.

Do vậy, Hoare đã cố gắng tạo ra một ngôn ngữ lập trình hiệu quả hơn (là Rust) để giảm bớt sự đánh đổi của các phương pháp quản lý bộ nhớ kiểu cũ này.

Mặc dù Rust yêu cầu các nhà phát triển tuân thủ các quy tắc lập trình tương đối cứng nhắc, ngôn ngữ này có thể hỗ trợ các nhà phát triển quản lý bộ nhớ một cách, đảm bảo mọi dòng code được viết ra đều an toàn cho bộ nhớ.

Chiếc thang máy chung cư bị hỏng đã giúp tạo ra ngôn ngữ lập trình được yêu thích bậc nhất, có thể 'vượt mặt' cả C và C++ như thế nào? - Ảnh 2.

Việc sử dụng Rust trong ngành công nghiệp ô tô và hàng không vũ trụ cũng như bởi các công ty CNTT, bao gồm Microsoft, Amazon và Dropbox, tiếp tục tăng lên hàng ngày, làm giảm sự phụ thuộc vào các ngôn ngữ như C và C++. Ảnh: Internet

Theo đó, an toàn bộ nhớ là thuộc tính của một số ngôn ngữ lập trình nhằm hạn chế người lập trình 'vô tình' tạo ra một số loại lỗi nhất định liên quan đến cách sử dụng bộ nhớ. Vì các lỗi an toàn bộ nhớ thường là vấn đề bảo mật nên các ngôn ngữ an toàn cho bộ nhớ sẽ hiệu quả hơn các ngôn ngữ không an toàn cho bộ nhớ. Bên cạnh Rust, các ngôn ngữ an toàn cho bộ nhớ bao gồm Go, C#, Java, Swift, Python và JavaScript. Các ngôn ngữ không an toàn cho bộ nhớ bao gồm C, C++ và assembly.

Đến năm 2013, những người ủng hộ ngôn ngữ lập trình này đã tinh chỉnh hệ thống quản lý bộ nhớ của Rust đến mức nó không còn yêu cầu chức năng 'thu gom rác' nữa. Ngôn ngữ này tiếp tục phát triển và nhận được sự hỗ trợ từ các nhà phát triển trên toàn thế giới, trước khi Rust chính thức ra mắt phiên bản stable (ổn định) vào tháng 5/2015.

Vào năm 2022, quy mô của cộng đồng Rust đã tăng gấp ba lần, lên hơn ba triệu người dùng và được đưa vào danh sách các ngôn ngữ an toàn cho bộ nhớ được khuyến nghị của Cơ quan An ninh Quốc gia Mỹ (NSA). Bảng xếp hạng này đã đưa Rust vào hàng ngũ những ngôn ngữ lập trình nổi tiếng khác như Java, C# và Ruby. 

Việc sử dụng Rust trong ngành công nghiệp ô tô và hàng không vũ trụ cũng như bởi các công ty CNTT, bao gồm Microsoft, Amazon và Dropbox, tiếp tục tăng lên hàng ngày, làm giảm sự phụ thuộc vào các ngôn ngữ như C và C++.

Rust sau đó cũng đã giành vị trí đầu tiên cho "ngôn ngữ lập trình được yêu thích nhất" trong Khảo sát nhà phát triển Stack Overflow năm 2016, 2017 và 2018. Với riêng 'cha đẻ' của Rust là Graydon Hoare, lập trình viên này đã "kiệt sức" và từ chức vị trí trưởng bộ phận kỹ thuật vào năm 2013. Hoare sau đó sang làm việc cho các dự án ít tên tuổi và không đòi hỏi nhiều thời gian công sức hơn. Đầu năm 2016, Hoare nhận được lời mời từ Apple để làm việc trên Swift (ngôn ngữ lập trình).

Tham khảo TechSpot/TechnologyReview

CÙNG CHUYÊN MỤC
XEM