C hay xa hơn chút là C++ ...

... cũ, nhưng vẫn còn sống và ... sống khỏe

Nếu công việc của bạn liên quan đến lập trình, chắc hẳn bạn cũng đã nghe nói về C/C++.

C/C++ không chứng tỏ vị thế mạnh mẽ trong ứng dụng, phát triển web front end hoặc xây dựng các ứng dụng web phức tạp. Nhưng chắc chắn có một khoảng mà C/C++ sẽ luôn nắm giữ.

Ngay cả khi bạn chuyên về một ngôn ngữ lập trình khác, rất có thể bạn biết rất nhiều về C/C++. Nó được mô tả như "lingua franca" của ngôn ngữ lập trình.

Lingua franca: Một ngôn ngữ được công nhận là ngôn ngữ chung phổ biến bởi những người với ngôn ngữ bản địa khác nhau.

Python (một ngôn ngữ lập trình cấp cao hướng đối tượng hoàn toàn) dựa trên C/C++. Hầu như sâu bên trong tất cả các ngôn ngữ trừu tượng vẫn là C/C++. Luôn có một lý do tại sao C/C++ thường là ngôn ngữ đầu tiên bạn học khi bạn bắt đầu bậc học của mình.

C/C++ được coi là ngôn ngữ lập trình middle-level. Đối với hầu hết mọi người, nó là thứ gần nhất với mã máy (không hẳn bạn phải viết mã máy - yên tâm). Bạn có thể lập trình trên hệ thống, sau đó thiết kế một ứng dụng chạy trên hệ thống đó. Điều này đưa C/C++ ở giữa ngôn ngữ Assembly và các ngôn ngữ cấp cao hơn như Java hay C#, ...

Thật dễ dàng để nghĩ rằng C/C++ đã cũ, lỗi thời hoặc dễ dàng thay thế bằng một số ngôn ngữ mới hơn, xu hướng hơn. Nhưng bây giờ thực sự là thời điểm tốt nhất để có kiến thức tốt về C/C++ để tạo lợi thế cho tương lai của bạn.

C/C++ là quá khứ, hiện tại và vị lai

Nhìn sơ qua các thiết bị gần nhất với bạn ngay bây giờ. Nó rất có thể được hoạt động bằng C. Hệ điều hành của bạn chắc chắn được viết - ít nhất là một phần - bằng C/C++. Và các driver cũng không phải ngoại lệ.

Khi xu hướng Internet of Things (IoT) tiếp tục bành trướng ra thế giới, rất nhiều trong số đó được hoạt động bằng C/C++ và các firmware hầu như ở mọi nơi ngày nay (dù là 1 cái remote TV cũng được lập trình bằng C/C++). C/C++ có mặt trong việc lập trình ra các trình biên dịch.

Nó không chỉ đóng góp vào lập trình cho phần cứng. Bất cứ điều gì xử lý lượng dữ liệu khổng lồ hoặc yêu cầu hiệu suất tối ưu thường được viết bằng C/C++, do hiệu năng tuyệt vời của nó.

Các hệ quản trị cơ sở dữ liệu phổ biến nhất thế giới như Oracle, MySQL, MS SQL Server và PostgreSQL, được viết bằng C/C++ cũng như các máy chủ Apache và nginx.

Ngày nay, các bộ phim 3D bom tấn được tạo ra với các ứng dụng được viết bằng C/C++ (NUKE ... vì chúng phải thực hiện nhiều phép tính mỗi giây và cần phải render càng khỏe càng tốt).

Theo Chỉ số TIOBE, C/C++ đã cho thấy sự suy giảm phổ biến liên tục trong nhiều năm. Trong năm 2017, C/C++ nhảy vọt lên top #2, ngay sau Java và đã luôn yên vị ở đó.

Vì vấn đề hiệu suất mà ngành công nghiệp ô tô bám lấy C/C++ để xây dựng nhiều ứng dụng như hệ thống tự lái vì tất cả quá trình xử lý trong xe tự hành được thực hiện trong thời gian thực, cũng như bạn đã biết ở Việt Nam đã bắt đầu ngành công nghiệp ô tô với Vinfast - cơ hội việc làm sẽ không thể thiếu.

Bạn có thể tìm thấy C/C++ ở rất nhiều nơi trên thế giới, hầu hết các ngôn ngữ mới hơn đều có cách giao tiếp với C. C++ ABI là một trong những giao diện dễ sử dụng nhất.

Chỉ số lượng code được viết bằng C/C++ chứng tỏ sẽ có nhu cầu cho các lập trình viên C/C++ trong nhiều năm tới.

Việc thay thế một hệ thống trong C/C++ sẽ rất tốn kém, ngay cả đối với các tổ chức có tư tưởng tiến bộ nhất. Về mặt lý thuyết, bạn có thể thay thế C bằng C++, hoặc Go hoặc Rust, nhưng cũng không có đủ động lực thúc đẩy thay đổi. Tôi đã từng đào tạo ở nhiều công ty, mặc dù họ cần đào tạo về Java hoặc các ngôn ngữ cấp cao khác nhưng họ vẫn yêu cầu trong quá trình đào tạo phải có thêm phần các ngôn ngữ này có thể gọi sang các hàm trong thư viện của C/C++ để tái sử dụng các module được viết bằng C/C++ sẵn có của họ để tiết kiệm chi phí.

Bạn nên học C/C++, ngay cả khi bạn đã chuyên về ngôn ngữ lập trình khác

Ngay cả khi bạn là một developer front-end, hoặc thông thạo các ngôn ngữ lập trình hướng đối tượng như Java / Python, vẫn có lợi khi có một chút kiến thức về C/C++.

Một số lý do như:

Bạn muốn hiểu sâu hơn về máy móc. Mức độ ngôn ngữ bạn sử dụng càng thấp, bạn càng gần với máy. Với C, bạn có thể viết gần với phần cứng và thao tác trực tiếp với bộ nhớ. Hiểu cách phân bố bộ nhớ hoạt động hoặc cách C/C++ sử dụng các thanh ghi để lưu trữ dữ liệu, có thể giúp bạn có thêm lợi thế trong việc viết code hiệu quả (ngay cả khi bạn không sử dụng C/C++).

Bạn là một lập trình viên mới bắt đầu và muốn tiếp thu nhiều ngôn ngữ nhanh hơn. Chuyển từ ngôn ngữ lập trình này sang ngôn ngữ tiếp theo sẽ suôn sẻ hơn rất nhiều khi bạn có tư duy nền tảng và trừu tượng dần. Các ngôn ngữ trừu tượng cao sẽ khó học hơn nếu bạn không hiểu được sự trừu tượng hóa! Với C/C++, bạn học các nền tảng của lập trình hiện đại và sẽ tiếp tục vươn lên.

Bạn muốn có nhiều cơ hội việc làm trong một lĩnh vực đang phát triển. IoT là tương lai. Bạn sẽ còn tiếp tục thấy nhu cầu ngày càng tăng đối với các lập trình viên C/C++ có thể làm việc với công nghệ nhúng, điều khiển và điện tử.

Trong quá khứ, bạn có thể tránh đối mặt với C/C++ vì nhu cầu như front-end, back-end tạo ứng dụng có thể được phát triển bằng những ngôn ngữ dễ tiếp cận hơn, nhưng đồng thời đã tạo nên 1 lực lượng cạnh tranh đáng kể. Đồng thời cũng sinh ra 1 chiều ngược lại đó là không có quá nhiều các developer C/C++.

Nếu so sánh với các khóa học về C/C++ và các ngôn ngữ khác như Java, C# ... bạn cũng thấy rằng không thấy nhiều các khóa học C/C++. Vì thế hãy bắt đầu từ nền tảng trước và khuyên bạn học C/C++ ngay bây giờ và bạn sẽ không hối hận đâu.