Cha đẻ C++ Bjarne Stroustrup: Tôi sẽ mang đến một giải pháp hoàn toàn mới cho hàng tỷ dòng mã C++ trên toàn cầu.

công nghệ số5tháng trướccập nhật AIANT
39 00





Bjarne Stroustrup và Tầm nhìn về An toàn trong C++

Cha đẻ C++ Bjarne Stroustrup: Tôi sẽ mang đến một giải pháp hoàn toàn mới cho hàng tỷ dòng mã C++ trên toàn cầu.

Bjarne Stroustrup, người sáng lập ra ngôn ngữ lập trình C++, đã có một bài phát biểu đầy tham vọng tại hội nghị hàng năm về ngôn ngữ lập trình vào tháng trước. Khi cộng đồng C++ tụ họp tại thành phố Aurora, Colorado để tham dự hội nghị “CppCon”, Stroustrup đã cam kết với khán giả rằng ông sẽ xác định rõ ràng các biện pháp an toàn cần thiết cho ngôn ngữ này.

Stroustrup dành một chút thời gian để phản hồi lại những phê bình. Những người chỉ trích cho rằng vấn đề nằm ở chính ngôn ngữ C++ và giải pháp nên là chuyển sang một ngôn ngữ khác. Ông cũng giới thiệu một đề xuất cụ thể nhằm tăng cường các công cụ bảo mật mới để giải quyết các vấn đề được chỉ ra bởi những phê bình đó, cuối cùng sẽ mang lại một giải pháp hoàn toàn mới cho hàng tỷ dòng mã C++ trên toàn cầu.

Bắt đầu bài phát biểu, Stroustrup chia sẻ một slide có tiêu đề “An toàn không chỉ là An toàn Kiểu”. Slide này liệt kê nhiều vấn đề an toàn từ việc rò rỉ tài nguyên và tràn bộ nhớ đến lỗi bộ nhớ và lỗi thời gian. Có cả lỗi song song, lỗi kết thúc – tất nhiên không thể thiếu lỗi kiểu. “Người ta thường nghĩ đến an toàn chỉ liên quan đến an toàn bộ nhớ – nhưng điều này vẫn chưa đủ… và nhu cầu tương tác với các ngôn ngữ khác (bao gồm cả C++ và C) thường không được chú trọng. Chi phí để chuyển đổi ngôn ngữ cũng có thể rất cao. Rất ít người đề cập đến điều này…”

“Thế thì, chúng ta nên chọn ngôn ngữ nào để thay thế? Theo những gì tôi thấy từ lời khuyên hiện tại, chúng ta sẽ phải sử dụng khoảng bảy ngôn ngữ khác nhau để thay thế C++. Đến khi hoàn thành (40 năm sau), chúng ta có thể có 20 lựa chọn ngôn ngữ khác nhau, và chúng phải có khả năng tương tác với nhau. Đây sẽ là một thách thức lớn.”

Trong bài phát biểu, Stroustrup cũng nhấn mạnh rằng “nhiều ngôn ngữ được gọi là ‘an toàn’ đều đưa tất cả nội dung cấp thấp ra ngoài bằng cách sử dụng C hoặc C++. Cách này giúp tránh việc sử dụng trực tiếp ngôn ngữ của họ để truy cập vào tài nguyên phần cứng thậm chí hệ điều hành (thường được viết bằng ngôn ngữ C), và yêu cầu mã đáng tin cậy, mà thực tế có thể rất cũ, ẩn giấu trong các thư viện bên ngoài… hoặc được viết bằng ngôn ngữ lập trình hoàn toàn khác.

Cha đẻ C++ Bjarne Stroustrup: Tôi sẽ mang đến một giải pháp hoàn toàn mới cho hàng tỷ dòng mã C++ trên toàn cầu.

Stroustrup mô tả tình hình hiện tại là “chúng ta đang trong xu hướng tiến triển dần dần, chứ không phải chỉ áp dụng một phương pháp hoàn toàn mới.” Một slide kết luận bằng định luật Gall: “Một hệ thống phức tạp hiệu quả luôn được phát triển từ một hệ thống đơn giản hiệu quả.”

Như Stroustrup nhận thấy, “ý tưởng xây dựng một hệ thống hoàn toàn mới mà không gặp bất kỳ vấn đề nào từ hệ thống cũ là một ảo tưởng. Nhưng đây là một ảo tưởng rất phổ biến.”

Khi bài phát biểu tiến tới khoảng 54 phút, Stroustrup nói với khán giả rằng, “Bây giờ tôi muốn nói về tương lai: Chúng ta sẽ đi đâu từ đây…?”

Stroustrup mô tả tình hình hiện tại như “một cơ hội”, nhắc lại rằng kể từ khi ra đời, mục tiêu của C++ đã là loại an toàn kiểu và tài nguyên. “Chúng ta không thể đảm bảo an toàn hoàn toàn trên phần cứng mà chúng ta có, và hiện tại cũng không thể đảm bảo an toàn cho tất cả ngôn ngữ và mọi trường hợp sử dụng.” Tuy nhiên, Stroustrup không muốn thấy nội dung của C++ bị hạn chế, ông thực sự tưởng tượng một giải pháp vẫn tuân theo tiêu chuẩn ISO của ngôn ngữ này. “Chúng ta cần nó là C++. Nghĩa là, những gì chúng ta có thể làm không nên bị giới hạn, mặc dù cách chúng ta làm việc có thể bị ràng buộc.”

Stroustrup cũng không muốn thấy thêm nhiều gánh nặng chạy thời gian. “Hiệu suất không được giảm… Thật ra, một số kỹ thuật viết mã an toàn có thể cải thiện hiệu suất. Tôi chủ yếu nói về bộ dịch và phân tích tĩnh, vì chúng miễn phí, hoặc thực sự có thể cải thiện hiệu suất.”

Stroustrup đã tìm thấy giải pháp của mình: hồ sơ (profile). Chúng được định nghĩa bởi tiêu chuẩn ISO C++ và giải quyết các vấn đề an toàn thông thường như con trỏ và phạm vi mảng. Trả lời câu hỏi sau đó từ khán giả về việc thêm các công cụ mới, Stroustrup chỉ ra rằng bộ dịch C++ hiện nay đã trở thành một công cụ phân tích tĩnh khá phức tạp và có thể chịu trách nhiệm đáp ứng yêu cầu của hồ sơ. Vì vậy, khi nói về việc thêm các công cụ cải tiến an toàn, “Tôi nghĩ rằng chú thích hồ sơ nên giúp giải quyết vấn đề này.”

Stroustrup đưa ra chiến lược tổng thể: sử dụng phân tích tĩnh để loại bỏ các lỗi tiềm ẩn. Nhưng “phân tích tĩnh toàn cầu không thể chịu đựng được,” Stroustrup bổ sung. “Vì vậy, chúng ta cần một số quy tắc để đơn giản hóa những gì chúng ta đang viết, để phân tích tĩnh cục bộ hiệu quả và tiết kiệm chi phí… Sau đó cung cấp một số thư viện để dựa vào những quy tắc này.”

Một slide còn chỉ ra lợi ích khác: “Hỗ trợ quá trình chuyển đổi từ mã cũ sang mã hiện đại cung cấp các đảm bảo an toàn.” Slide này nhấn mạnh rằng sẽ có một bộ quy tắc “cơ bản” tiêu chuẩn, cũng như các đảm bảo rộng rãi và mở khác. Stroustrup nói, “Tôi nghĩ đến việc an toàn kiểu và tài nguyên, an toàn bộ nhớ, an toàn phạm vi. An toàn toán học như vậy có thể được chuẩn hóa.” Và sẽ có các quy tắc áp dụng các đảm bảo khác nhau cho các đoạn mã khác nhau.

Mã thậm chí có thể được biểu diễn một cách rõ ràng các đảm bảo áp dụng (để người đọc tương lai yên tâm). Stroustrup chuyển lại slide trước đó, slide có tiêu đề “An toàn không chỉ là An toàn Kiểu”, nhấn mạnh các vấn đề về rò rỉ tài nguyên, tràn bộ nhớ, hỏng bộ nhớ, lỗi thời gian, lỗi song song, lỗi kết thúc – tất nhiên không thể thiếu lỗi kiểu.

Một slide ngắn gọn giải thích điều này: “Cảnh giác” không thể mở rộng. Vì vậy, mặc dù hướng dẫn cốt lõi có thể đề xuất các thực hành mã an toàn, nhưng “chúng ta cần các quy tắc phải được thi hành.” Như Stroustrup nói, “Chúng ta phải đặt ra quy tắc sử dụng an toàn. Chúng ta phải cung cấp phương pháp để xác minh rằng mọi người đã thực sự làm những gì họ muốn làm.” Stroustrup chỉ ra rằng phần lớn những gì ông mô tả đã được thử nghiệm, thậm chí là quy mô lớn. “Nhưng không nơi nào kết hợp tất cả điều này thành một hệ thống nhất quán và liên tục. Đây là những gì tôi nghĩ chúng ta nên làm.”

Một slide liệt kê công thức bằng sáu từ: Quy tắc vệ sinh + Phân tích tĩnh + Kiểm tra thời gian chạy. Stroustrup trình bày một slide, cho thấy C++ có thể loại bỏ nhiều lỗi thông thường, bao gồm biến chưa khởi tạo, lỗi phạm vi, hủy tham chiếu null, rò rỉ tài nguyên và tham chiếu treo.

Khi bài phát biểu gần kết thúc, Stroustrup đi sâu hơn vào chi tiết. “Tôi khuyên bạn nên áp dụng kiểm soát dựa trên mô đun.” Slide này cho thấy cách nó hoạt động trong mã.

Các kiểm soát mã nội bộ cũng đang được phát triển, có thể áp dụng cho các đoạn mã.

Stroustrup còn đề xuất một số hồ sơ tiêu chuẩn ban đầu (an toàn kiểu, phạm vi và toán học). Stroustrup trình bày một slide chứa 11 từ khóa mới, nói rằng, “Đây là cách chúng ta tóm tắt về mặt cú pháp để làm điều này.”

Cha đẻ C++ Bjarne Stroustrup: Tôi sẽ mang đến một giải pháp hoàn toàn mới cho hàng tỷ dòng mã C++ trên toàn cầu.

“Công việc này đang được tiến hành,” Stroustrup nói với khán giả. “Có các bài báo, bạn có thể tìm kiếm. Cũng có các cuộc thảo luận. Tuy nhiên, chúng ta vẫn chưa hoàn thiện.” Nhưng “Chúng ta đã đi một chặng đường dài từ C cổ điển, ‘C với lớp’ và C++ 11.”

Slide cuối cùng nói rằng “Bạn có thể giúp gì?” Stroustrup khuyến nghị người dùng có thể giúp hoàn thiện hồ sơ, xác định rõ ràng đặc điểm kỹ thuật của chúng. (“Giấc mơ của tôi là một thứ như Profiles Light, cung cấp hầu hết các đảm bảo của hồ sơ, nhưng không thể bao quát, vì bộ phân tích tĩnh hiện không thể làm được điều này.”)

Ông đã tạo một kho lưu trữ GitHub (https://github.com/BjarneStroustrup/profiles), “bạn có thể đề xuất ý kiến ​​ở đó, tôi cũng có thể đặt các bản nháp của tôi ở đó, như vậy chúng ta có thể tạo một cộng đồng, cố gắng hoàn thành công việc này trong một khoảng thời gian hợp lý.”

Kho lưu trữ này đặt ra câu hỏi về cách làm cho hồ sơ trở thành một công cụ toàn ngành “đáp ứng các yêu cầu an toàn C++ khác nhau”, và gọi khái niệm này là một khung. “Phải phát triển và triển khai nhiều thành phần để công cụ này trở nên phổ biến. Đã có nhiều công việc được thực hiện, nhưng công cụ phổ biến lại khá hiếm. Đây là một danh sách mong muốn. Hãy giúp đỡ theo khả năng của bạn.”

Liên kết video: https://youtu.be/I8UvQKvOSSw

Link gốc: https://thenewstack.io/bjarne-stroustrups-plan-for-bringing-safety-to-c/

Đóng cửa năm 2023! Hội nghị QCon toàn cầu về Phát triển phần mềm, tổ chức tại Thượng Hải, sẽ diễn ra từ ngày 28 đến 29 tháng 12 tại Khách sạn Marriott Trungyou Thượng Hải.

Hội nghị này lên kế hoạch thảo luận về các chủ đề như: Khám phá ứng dụng của GenAI và mô hình chung đa năng, Triển vọng của việc tích hợp AI Agent với ứng dụng ngành, Tối ưu hóa hiệu suất trong kỷ nguyên LLM, Thực tiễn xây dựng hệ thống IDE dựa trên trí tuệ nhân tạo, Công nghệ Frontend trong kỷ nguyên LLM, Thiết kế Gateway hiệu suất cao, Kiến trúc hướng đến kỷ nguyên trí tuệ nhân tạo, Thực tiễn xây dựng hệ sinh thái ngôn ngữ lập trình bản địa, Phương pháp mới nâng cao hiệu quả và đổi mới, Tăng tốc suy luận và dịch vụ quy mô lớn của LLM, Tiến bộ của kiến trúc dữ liệu hiện đại, Chia sẻ kinh nghiệm xây dựng tổ chức linh hoạt, Thiết kế kiến trúc linh hoạt cho dịch vụ đám mây SaaS.

Cha đẻ C++ Bjarne Stroustrup: Tôi sẽ mang đến một giải pháp hoàn toàn mới cho hàng tỷ dòng mã C++ trên toàn cầu.

Hội nghị hiện đang trong giai đoạn giảm giá 10% cuối cùng, giảm ngay 680 tệ. Để biết thêm thông tin về việc mua vé, hãy liên hệ với quản lý bán vé 18514549229. Nhiều thông tin liên quan đến hội nghị có thể được tìm thấy bằng cách quét mã QR trên hình ảnh phía trên, hoặc click vào “đọc thêm” để xem chi tiết, hy vọng gặp lại bạn tại Thượng Hải vào tháng 12!


Hệ thống C++

An toàn mã nguồn

Bộ phân tích tĩnh

Quy tắc vệ sinh

Profile C++

© Thông báo bản quyền

Những bài viết liên quan:

Chưa có đánh giá nào

none
Không có đánh giá...