Tại sao C++ 35 năm tuổi vẫn còn thống trị thế giới lập trình? | |||
Bùi Lê Duy |
Cha đẻ của C++ chia sẻ những suy nghĩ của ông về thế giới phát triển ứng dụng và các ngôn ngữ lập trình mới hiện nay.
Ông Bjarne Stroutstrup thiết kế ra ngôn ngữ lập trình C++ hồi năm 1979, và ngôn ngữ chuyên viết chương trình hệ thống này đã trở thành công cụ chính cho các nhà phát triển trên khắp thế giới, cho dù có nhiều ngôn ngữ cạnh tranh khác như Java, JavaScript, Python, Go và cả ngôn ngữ mới toanh mà Apple vừa đưa ra là Swift.
Gần đây, ông Stroutstrup đã gặp gỡ báo giới để chia sẻ về vai trò của C++ hiện nay và những suy nghĩ của ông về những gì đang diễn ra trong thế giới phát triển ứng dụng, trong đó có cả ngôn ngữ lập trình Go của Google và Swift của Apple.
Vai trò của C++ hiện nay như thế nào khi có những ngôn ngữ kịch bản rất phổ biến xuất hiện như Python và JavaScript, bên cạnh đó còn có Java và thậm chí Go của Google? C++ có thể tồn tại, phát triển và lớn mạnh cùng với nhiều ngôn ngữ khác không?
Stroustrup: Cách nay hơn 20 năm, người ta từng dự đoán ngôn ngữ C++ không thể phát triển nổi, thậm chí sẽ bị quên lãng, nhưng nó vẫn phát triển. Cơ bản là chẳng có gì có thể xử lý tính phức tạp nhanh như C++. Nếu bạn làm trong lĩnh vực nhúng, nếu bạn phải viết chương trình xử lý hình ảnh, nếu bạn phải tạo ứng dụng truyền thông, nếu viết các ứng dụng tài chính, C++ vẫn thống trị. Bạn sẽ không thấy sự hiện diện của C++ nhiều trong các ứng dụng thông thường nhưng nó là thứ gì đó mà Google, Amazon, các engine tìm kiếm thực sự cần tăng tốc độ xử lý, và đó là nơi dành cho nó.
Ngôn ngữ Go của Google gần đây rất được cộng đồng chú ý. Quan điểm của ông về ngôn ngữ này như thế nào?
Có vẻ như đó là một trong những ngôn ngữ có thể làm vài thứ rất gọn gẽ. Nhưng thường những ngôn ngữ như vậy, tập trung vào việc "gọn gẽ" sẽ khiến chúng mất đi tốc độ xử lý và mất một chút tính phổ quát. Nhưng dĩ nhiên, chúng ta cần chờ thời gian trả lời.
Vài ngôn ngữ kịch bản mới được nhiều nhà phát triển dễ dàng chấp nhận. Ông có nghĩ C++ khó lôi kéo họ?
C++ được thiết kế để phát triển các ứng dụng cốt lõi, quan trọng, và nó luôn luôn được dùng cùng với một ngôn ngữ kịch bản nào đó khác. Lúc đầu, tôi dùng C++ để viết bất kỳ chương trình gì cần đến một ngôn ngữ lập trình thực thụ và tốc độ xử lý mạnh. Sau đó, tôi sử dụng nhân Unix như là ngôn ngữ kịch bản. Đó là cách mà nhiều ứng dụng ngày nay được tạo ra. C++ có được tốc độ cao, tính ổn định cao, chương trình gọn nhẹ, tiêu tốn ít điện năng và mọi thứ hay ho khác nữa. Tôi nói ra điều này không phải để lôi kéo ai cả, nhưng tôi đang nói đến các ứng dụng gọn nhẹ, đời thường. Vì đó không phải là lĩnh vực mà tôi làm.
Apple vừa đưa ra ngôn ngữ Swift vào ngày 2/6 vừa qua. Ông có nghĩ đó là ngôn ngữ quan trọng mà các nhà phát triển nên tập trung vào nó?
Tôi nghĩ vậy. Các nhà phát triển từng chú ý nhiều đến Objective-C, và giờ là Swift đang đi đúng quỹ đạo mà Apple vẽ ra.
Một bài thuyết trình gần đây của ông cho rằng C++ đang đối diện với 2 thách thức: giúp các nhà phát triển giải quyết giải quyết vấn đề về tốc độ xử lý, quy mô ứng dụng; và tính phụ thuộc. C++ cũng phải giúp các nhà phát triển cảm thấy có "năng suất" hơn khi viết các đoạn mã bảo trì thông thường. Những vấn đề ấy đến nay như thế nào?
Tôi đang cố gắng giải thích hai điều này. Một là phải đào sâu vào tính hiệu quả, hiệu quả sử dụng phần cứng; và hai là đơn giản hoá việc viết code mới. Với C++ 11 và C++ 14, có vài cải tiến mới hướng đến hai yếu tố này.
Phiên bản C++ không quan trọng mà chúng tôi dự kiến sẽ tung ra trong năm 2014 này là C++ 14. Thực chất thì nó đã được Clang và GCC tung ra rồi. Cách mà tôi mô tả nó là C++ 14 hoàn tất công việc mà chúng tôi khởi đầu từ phiên bản C++ 11. Khi bạn tung ra một phiên bản lớn nào đó, như C++ 11 chẳng hạn, thì có vài thứ không có trong đó chỉ bởi vì đến ngày đến giờ bạn phải tung nó ra theo lịch định. Và có vài thứ bạn không thể chỉnh sửa cho ngay ngắn được vì mọi thứ phải được sắp xếp cùng nhau và phải thử lại nhiều lần. C++ 14 là bổ sung hoàn thiện cho C++ 11.
Thay vì chỉ là ký hiệu lambda có trong C++ 11, lambda giờ đã có ngữ nghĩa nhất định. Có vài thứ khá kỹ thuật, như hàm, điểm quay về, biến loại trừ (deduction) phù hợp với lambda. Các cấu trúc cho hàm số, là những hàm số mà bạn chỉ có thể làm được khi biên dịch mã, bây giờ có thể chía vài vòng lặp For đơn giản. Chúng tôi có thêm vài biến template, có vài cải thiện cho bộ nhớ hệ thống. Cũng có vài loại hằng số mới do người dùng định nghĩa.
Còn vấn đề bảo mật trong lập trình, có tính năng nào mới cho các nhà phát triển làm để bảo vệ chương trình của họ? C++ có an toàn hơn các công cụ lập trình khác?
Tôi cật lực ủng hộ phần cứng thêm vào khả năng bảo mật. Xét về ngôn ngữ lập trình, nếu bạn muốn viết được một chương trình tốt thì hãy viết mã sao cho an toàn trước đã. Bạn có thể làm được điều này với C++. Đừng bao giờ khiến cho chương trình ở mức thấp nhất trở nên rối rắm, và đừng bao giờ chạy trình biên dịch nếu bạn không thể theo dõi được cái gì đang diễn ra. Cơ bản là bảo mật là một vấn đề của hệ thống.
Có điều gì ông muốn nói về phát triển phần mềm trong thời buổi hiện nay?
Chúng ta nên hướng đến một cấp phát triển ứng dụng chuyên nghiệp hơn. Có vài điều trong xã hội mà chúng ta buộc không nên phá vỡ, và hầu hết chúng đều dựa trên phần mềm. Và chúng ta cần xem lại hệ thống của chúng ta một cách tổng quát. Ngôn ngữ lập trình và chuỗi công cụ của chúng là một phần trong đó. Chúng ta cần nhìn vào cách chúng ta đào tạo các nhà lập trình như thế nào và chúng ta đặt trọng tâm vào tính ổn định như thế nào.
|
This email is free from viruses and malware because avast! Antivirus protection is active. |
Không có nhận xét nào:
Đăng nhận xét