Bài viết được dịch từ trang web InfoWorld

Phiên bản mới nhất của ngôn ngữ này không phải là một sự thay đổi lớn, nhưng nó đưa ra nhiều nâng cấp nhỏ để đáp ứng các lĩnh vực phát triển khác nhau.

Cha đẻ ngôn ngữ C++ nói gì về những đặc trưng mới trong C++ 11?
Cha đẻ ngôn ngữ C++ nói gì về những đặc trưng mới trong C++ 11?

Bjarne Stroustrup bắt đầu phát triển ngôn ngữ C++ vào năm 1979 tại Bell Labs. Thời đó nó được gọi là "C với các class", và nó đã được tạo ra như là một phần của một thử nghiệm tính toán phân tán. Trải qua hơn 30 năm, ngôn ngữ này đã cất cánh, trở thành một trong những ngôn ngữ lập trình phổ biến nhất được sử dụng ngày nay.

Stroustrup, hiện là một giáo sư khoa học máy tính tại trường Đại học Texas A&M, đã trao đổi với biên tập viên của tạp chí InfoWorld khi trả lời các câu hỏi về quá khứ, hiện tại và tương lai của C++, khi mà gần đây nó được cập nhật thông qua việc phát hành C++ 11.

InfoWorld: Mục đích của ông trong việc tạo ra C ++ là gì?

Stroustrup: Để xây dựng một công cụ chung nhằm quản lý sự phức tạp của các ứng dụng cảm ứng thực thi (performance-sensitive). Nhu cầu cấp thiết của tôi lúc đó là viết một số mô phỏng và một số phần mềm ở mức thiết bị (device-level) cho một cuộc thử nghiệm trong tính toán phân tán tại Bell Labs. Phần lớn nguồn cảm hứng của tôi đến từ việc sử dụng Simula và BCPL.

InfoWorld: Tình trạng của việc cập nhật C++ 11 hiện nay ra sao? và ông đóng vai trò gì trong công việc phát triển đó?

Stroustrup: C++ được quy định bởi ủy ban tiêu chuẩn ISO C++ của nó. Tôi là một thành viên sáng lập của ủy ban đó và hoạt động như là chủ tịch của nhóm Evolutions Working Group để đánh giá các đề xuất về các đặc trưng mới của ngôn ngữ. Tôi cũng cố gắng giúp đỡ ủy ban này để thiết lập những hướng đi. C++ 11 đã trở thành một tiêu chuẩn quốc tế vào cuối năm ngoái, và các nhà cung cấp trình biên dịch C++ hiện nay đang rất bận rộn để thực hiện nó. Nhiều đặc trưng và toàn bộ thư viện chuẩn mới đã sẵn sàng để ra lò.

InfoWorld: Theo ông thì đâu là những đặc trưng quan trọng nhất của C++ 11? Đó có phải là việc hỗ trợ đa luồng (multithreading)?

Stroustrup: Chắc chắn là tiêu chuẩn và hỗ trợ type-safe cho thread-level và lock-free concurrency là một cải tiến lớn trên các thư viện non-standard concurrency khác nhau đã có sẵn cho C++ trong nhiều thập kỷ qua. Nó sẽ là một lợi thế khi phát triển đa nền tảng. Các đặc trưng của ngôn ngữ này thay đổi tương đối nhỏ, nhưng có một ít trong số chúng sẽ rất hữu ích phụ thuộc vào những gì mà một lập trình viên đang làm.

Tôi thích việc ngữ nghĩa sẽ được đơn giản hóa đi theo cách chúng ta trả về các cấu trúc dữ liệu lớn từ các function và nâng cao hiệu suất của các kiểu thư viện chuẩn, như là string và vector. Những người làm việc trong lĩnh vực yêu cầu hiệu suất cao sẽ đánh giá cao sự gia tăng về sức mạnh của các biểu thức hằng số (constexpr). Những người dùng các thư viện chuẩn (và một số thư viện GUI) sẽ có thể nhận thấy các biểu thức lambda là đặc trưng nổi bật nhất. Mọi người sẽ sử dụng các đặc trưng mới nhỏ hơn, như là auto (suy luận kiểu biến từ trình khởi tạo của nó) và vòng lặp range-for, để đơn giản hóa code.

InfoWorld: Liệu ông có thể nhìn thấy trước những hướng đi trong tương lai của C++?

Stroustrup: Thật ra thì hơi sớm để nói điều này. Chúng tôi [ủy ban] đã bắt đầu xem xét các đề xuất cho các đặc trưng mới của ngôn ngữ và các thành phần thư viện chuẩn mới, nhưng mà chưa có gì là chắc chắn cả. Chúng tôi cần phải có một sự đồng thuận. Chúng tôi nhắm tới tạo ra một tiêu chuẩn mới trong 5 năm. Những giới hạn ở đây chính là mức độ tham vọng mà chúng tôi có. Nếu tôi phải đoán, thì tôi muốn nhìn thấy việc cải tiến hỗ trợ cho lightweight concurrency, nhiều thư viện hơn (một cái gì đó như boost::filesystem), và một vài đặc trưng nhỏ khác. Có những nhóm nghiên cứu cho concurrency, modularity, filesystem, và networking.

InfoWorld: C++ khi so sánh với các ngôn ngữ như Java, C#, hoặc các ngôn ngữ dynamic scripting đang nở rộ gần đây thì ra sao thưa ông?

Stroustrup: Tôi không thể đưa ra một so sánh chi tiết, nhưng C++ thì linh hoạt hơn (cả tốt và xấu) và có xu hướng thực thi tốt hơn đáng kể, giả sử là các lập trình viên có đủ năng lực trong tất cả các ngôn ngữ đem so sánh. Các ngôn ngữ lập trình khác có xu hướng đi kèm một số lượng đồ sộ các thư viện chuẩn, và một lập trình viên thường phải đối mặt với vấn đề lựa chọn giữa một loạt các thư viện thương mại và mã nguồn mở. Trong khi C++ có thư viện chuẩn tương đối nhỏ gọn.

InfoWorld: Tại hội nghị GoingNative 2012 của Microsoft diễn ra mới đây, ông đã nhấn mạnh việc lập trình native, khi nói rằng, "Một cái gì đó phải nói chuyện với phần cứng," và không phải tất cả mọi thứ đều có thể là một máy ảo. Khi nào thì một lập trình viên nên lựa chọn lập trình native, và khi nào thì họ nên lựa chọn một ngôn ngữ dựa trên máy ảo?

Stroustrup: Thực ra, đó là do Microsoft đã nhấn mạnh về lập trình "native" và lựa chọn cái tựa đề đó, nhưng đây là loại kỹ thuật thực thi mà tôi đã dựa vào trong nhiều thập kỷ. C++ có những điểm mạnh đáng kể khi so sánh với "các ngôn ngữ dựa trên máy ảo" trong việc xây dựng hạ tầng (infrastructure). Nói cách khác, nơi mà hiệu suất, độ tin cậy, nguồn lực, và độ phức tạp cần phải được kiểm soát chặt chẽ.

Ví dụ, bạn sẽ không thể viết một engine JavaScript bằng JavaScript, và bạn có thể sẽ không viết một ứng dụng web đơn giản để "tung ra thị trường" bằng ngôn ngữ C++. Bạn sẽ viết các nền tảng của Google, Amazon, Facebook, hoặc Amadeus (hệ thống bán vé máy bay) bằng C++, nhưng có thể không phải là những lớp trên cùng hay thay đổi của những hệ thống này. C++ tỏ ra mạnh mẽ nơi mà sự tiêu hao năng lượng là một vấn đề -- ví dụ, các server farm và các thiết bị cầm tay. Đương nhiên, C++ có thể cạnh tranh ngay cả nơi mà tốc độ thực thi không phải là một vấn đề quan trọng, nhưng lựa chọn đó sẽ còn tùy thuộc vào sự có sẵn của các thư viện và các lập trình viên hơn là do chính bản thân các ngôn ngữ.