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

Tôi cảm thấy đôi chút mỉa mai khi thảo luận về việc liệu trong năm nay C++ có thể đứng vững được, hoặc quan trọng hơn là trở thành một sự lựa chọn tuyệt vời cho việc phát triển các ứng dụng đa thiết bị và đa nền tảng. Điều mỉa mai là ở chỗ mặc dù có nhiều sự chú ý dành cho Objective-C, Java, và C# trong việc phát triển ứng dụng, nhưng hầu hết các phần mềm mà chúng ta sử dụng hàng ngày được viết bằng C/C++ và sau tất cả những năm nó đại diện cho cộng đồng lập trình viên lớn nhất.
Có rất nhiều lý do để sử dụng C++ cho việc phát triển ứng dụng hiện tại và tương lai của bạn và tôi sẽ thảo luận về 5 lý do quan trọng sau khi chúng ta cùng xem lại một chút lịch sử của ngôn ngữ này.
Tóm tắt lịch sử của C ++
Bjarne Stroustrup, tại Bell Labs, đã thiết kế ra ngôn ngữ C++ vào giai đoạn đầu những năm 80s, là một ngôn ngữ hướng đối tượng dựa trên ngôn ngữ C, ngôn ngữ được hỗ trợ khá nhiều trên tất cả các hệ thống phần mềm từ khi nó được tạo ra vào năm 1972. Sự cần thiết một ngôn ngữ hướng đối tượng, tại Bell Labs, là rõ ràng -- các hệ thống phần mềm lớn cần một ngôn ngữ để dễ dàng hơn trong việc tổ chức và kiến trúc các ứng dụng cũng như yêu cầu về năng lực và hiệu suất ngày càng tăng. C++ đã nhanh chóng được áp dụng cho tất cả các loại phát triển và đặc biệt là trong ngành công nghiệp viễn thông kế thừa di sản của nó từ Bell Labs và nó vẫn được sử dụng rộng rãi ngày nay để tạo sức mạnh cho các hệ thống chuyển mạch và các hệ điều hành, cho phép thế giới mà chúng ta đang sống ngày nay được kết nối rộng rãi hơn. C++ trở thành một tiêu chuẩn ANSI/ISO quốc tế vào năm 1988 và đã được cập nhật bởi ủy ban tiêu chuẩn một vài lần trong những năm qua, đáng chú ý nhất là lần cập nhật lớn vào năm 2011 khi công bố chuẩn C++11, trong đó tập trung vào việc cải thiện khả năng sử dụng ở những khía cạnh phức tạp hơn của ngôn ngữ này. Và theo quan điểm của tôi, thì nó đã thành công.
Mặc dù có sự phổ biến của Java, C#, và Objective-C, nhưng C++ vẫn là ngôn ngữ được sử dụng rộng rãi nhất trên thế giới. Một báo cáo gần đây từ Evans Data Corporation, theo dõi chặt chẽ việc sử dụng ngôn ngữ trên toàn thế giới, cho thấy có trên 11 triệu lập trình viên chuyên nghiệp biết và sử dụng C++ thường xuyên. Có một lý do là Java và C# có cú pháp vay mượn rất nhiều từ C++, nên có rất nhiều các lập trình viên biết ngôn ngữ này. Điều này có nghĩa là việc tìm kiếm (hoặc đào tạo) nguồn lực cho C++ sẽ không phải là một vấn đề. Nó cũng đồng nghĩa là có rất nhiều sự hỗ trợ C/C++ cho bất kỳ chức năng nào mà bạn có thể cần tích hợp vào trong một ứng dụng hiện có.
C++ được xây dựng riêng cho nền tảng độc lập và vì vậy nó được tìm thấy trên mọi hệ điều hành hiện nay. Chúng ta đều biết rằng các ứng dụng Android được viết bằng Java và các ứng dụng iOS được viết bằng Objective-C/Swift, nhưng cái mà nhiều người không biết là có nhiều code C/C++ trong bộ nhớ trên các thiết bị của bạn hơn bất cứ ngôn ngữ nào khác. C/C++ được sử dụng nhiều trong công nghệ của các thiết bị nhỏ (như phần kernel tương tác với phần cứng, cũng như các thư viện run time điển hình) và các mạng viễn thông cho phép các thiết bị đó hoạt động. Điều quan trọng hơn cho một đội phát triển, đó là có các interface C/C++ và các thư viện cho bất cứ thứ gì bạn cần phải làm trên bất kỳ thiết bị và nền tảng nào. Bộ công cụ Android NDK là một ví dụ tuyệt vời của sự hỗ trợ C/C++ đầy đủ mà đã được thêm vào từ đầu cho các nhóm phát triển game, để cho phép họ có được hiệu suất tốt nhất có thể mà thiết bị đạt được bằng cách tránh Java và Android Java runtime Dalvik, máy ảo mà code Android Java được thực thi trên đó. Nó đã được thường xuyên cải tiến để cho phép mọi dịch vụ Android.
C++ có khả năng tương thích với ngôn ngữ C tốt nhất
Nhiều thư viện có sẵn trên những thiết bị này được cung cấp thông qua các giao diện chức năng C. Một ví dụ là POSIX, nằm bên ngoài C/C++ RTL/STL là một trong những thư viện được sử dụng rộng rãi nhất và được hỗ trợ trên mọi nền tảng, bởi vì nó cung cấp một C API phổ biến cho các dịch vụ nền tảng tiêu chuẩn. Một ví dụ khác là OpenGL/ES, đó là thư viện đồ họa được hỗ trợ trên mọi hệ điều hành hiện có. Các thư viện này rất dễ dàng để sử dụng trực tiếp trong ứng dụng C++ của bạn mà không cần phải tạo ra các ràng buộc ngôn ngữ, các kiểu dữ liệu đặc biệt, hoặc làm bất kỳ sự chuyển đổi runtime nào; chỉ việc #include thư viện cần thiết trên header và liên kết tới các thư viện này là xem như bạn đã hoàn thành.
C++ không chỉ dành cho việc phát triển phía client. Mặc dù như đã đề cập ở trên, Android NDK là một ví dụ tuyệt vời của việc C++ mang lại hiệu suất tốt nhất có thể trên thiết bị, C++ cũng được sử dụng rộng rãi cho các ứng dụng phía server side. Trong thực tế, ban đầu nó được tập trung vào các hệ thống backend lớn trong ngành viễn thông, tài chính, kỹ thuật, v.v... -- hay bất kỳ ngành công nghiệp nào yêu cầu sự tối ưu hiệu suất. Trong những ngày đầu của thiết bị nhúng (embedded device), C++ trở nên rất phổ biến cho các ứng dụng trên các thiết bị do nhiều thuộc tính như đã thảo luận, như khả năng tương thích với C và hỗ trợ nền tảng. Từ khi C++ là một ngôn ngữ biên dịch chạy trực tiếp trên CPU và nó cũng được coi là ngôn ngữ có hiệu suất tốt nhất. Đó là lý do tại sao các nhà phát triển game yêu quý nó! Tuy nhiên, khách hàng không phải là lớp duy nhất có thể được hưởng lợi từ hiệu suất tuyệt vời đó; các máy chủ trung gian, các hệ thống phụ trợ, đều là một phần của hệ sinh thái ứng dụng di động hiện đại và đóng góp trực tiếp vào toàn bộ trải nghiệm của người dùng. C++ cung cấp rất tốt cho tất cả những lớp đó.
Trong những ngày đầu của C++, chúng ta thường nói đùa rằng C++ là một ngôn ngữ mạnh mẽ mang lại cho bạn một sợi dây thừng đủ để treo cổ bạn lên. Nó đã quan tâm thêm về những vấn đề như viết code an toàn, có nghĩa là làm việc trực tiếp với bộ nhớ và viết rất nhiều code để tương tác với các Standard Template Library (STL) siêu mạnh. Các chuẩn C++ được công bố gần đây nhất, C++11, đặt một sự nhấn mạnh lớn vào khả năng sử dụng để giải quyết những thách thức lớn hơn trong lập trình. Điều này làm cho C++ tiếp cận nhiều hơn tới một phạm vi rộng các lập trình viên, bởi vì không có lý do gì để sợ ngôn ngữ này cả. Nó có thể trở nên đơn giản và mạnh mẽ khi bạn cần, đặc biệt là khi làm việc trong một framework phát triển ứng dụng, mà cung cấp một API phổ biến cho các dịch vụ bổ sung như các UI control trên nhiều thiết bị sử dụng Android, iOS, Windows, và các nền tảng hệ điều hành Mac OS X.
Kết luận
C++ đã tồn tại và phát triển một khoảng thời gian dài và nó đã giải quyết được vô số những thách thức trong ngành công nghiệp -- nó là ngôn ngữ chính quyết định trải nghiệm trên di động ngày nay. Ngoài việc sử dụng trong các máy chủ hiệu suất cao và các middleware, C++ là một sự lựa chọn tuyệt vời cho việc phát triển phía client side trên hai nền tảng di động phổ biến nhất là Android và iOS và hai nền tảng desktop phổ biến nhất là Windows và Mac OS X. Với việc giới thiệu các công cụ phát triển gần đây hỗ trợ thiết kế trực quan cho các ứng dụng client, middleware, và server side; C++ cực kỳ hiệu quả và khiến nó là một sự lựa chọn tuyệt vời để phát triển các ứng dụng hiện đại.
Bình luận