C++ dùng để làm gì? Các lĩnh vực, nền tảng và framework C++ phổ biến

C++ dùng để làm gì? Các lĩnh vực, nền tảng và framework C++ phổ biến - Khuê Nguyễn Creator

Trong bài này chúng ta sẽ trả lời câu hỏi C++ dùng để làm gì: C++ đang được dùng trong những lĩnh vực nào, mỗi lĩnh vực có nền tảng và framework gì nổi bật, và học xong serie này thì nên đi tiếp theo hướng nào. Đây là bài mở đầu chương ứng dụng, trước khi chúng ta bắt tay vào 5 project hoàn chỉnh.

Bài 35 trong Serie Lập trình C++ từ A tới Z

Vì sao C++ được dùng ở nhiều lĩnh vực như vậy?

C++ có một vị trí đặc biệt giữa các ngôn ngữ lập trình:

  • Chạy nhanh, kiểm soát được bộ nhớ như C: biên dịch ra mã máy, không có bộ thu gom rác chạy ngầm, nên dùng được cho những nơi cần tốc độ và thời gian phản hồi ổn định.
  • Tổ chức được chương trình lớn nhờ lập trình hướng đối tượng, template và thư viện chuẩn mà chúng ta đã học ở các chương trước.
  • Chạy trên gần như mọi nền tảng: từ vi điều khiển vài chục KB RAM tới siêu máy tính.

Vì vậy C++ thường được chọn khi phần mềm vừa lớn, vừa phải nhanh. Còn những ứng dụng mà tốc độ phát triển quan trọng hơn tốc độ chạy, như web hay script tự động, thì người ta hay dùng Python, JavaScript.

C++ dùng để làm gì: sơ đồ các lĩnh vực giao diện Qt, game Unreal, OpenCV, ROS, nhúng, ô tô, phần mềm hệ thống, Boost

C++ dùng để làm gì? Các lĩnh vực và framework phổ biến

Phần mềm giao diện desktop: Qt

Qt là framework C++ phổ biến nhất để làm phần mềm có giao diện chạy được trên Windows, Linux, macOS, và cả màn hình cảm ứng của thiết bị nhúng. Nhiều phần mềm kỹ thuật, giao diện máy công nghiệp, màn hình trong ô tô được viết bằng Qt. Cơ chế signal/slot của Qt chính là Observer pattern mà chúng ta đã học.

Lập trình Qt là một chủ đề lớn, mình sẽ viết thành chuyên mục riêng trên blog.

Game: Unreal Engine, SFML, SDL

  • Unreal Engine là game engine viết bằng C++, dùng cho rất nhiều game AAA. Logic game trong Unreal cũng viết bằng C++.
  • SFML và SDL là thư viện nhỏ gọn để vẽ đồ họa 2D, phát âm thanh, nhận bàn phím, chuột. Rất hợp để học làm game. Project game rắn săn mồi ở bài 38 của serie dùng SFML.

Xử lý ảnh và trí tuệ nhân tạo: OpenCV

OpenCV là thư viện xử lý ảnh và thị giác máy tính, lõi viết bằng C++: đọc camera, lọc ảnh, nhận dạng khuôn mặt, đếm vật thể. Phần lõi tính toán của nhiều thư viện AI như TensorFlow, PyTorch cũng là C++, Python chỉ là lớp vỏ bên ngoài để dễ dùng.

Robot: ROS 2

ROS 2 (Robot Operating System) là bộ thư viện và công cụ để lập trình robot, xe tự hành, drone. Các node điều khiển hiệu năng cao trong ROS thường viết bằng C++.

Lập trình nhúng: Arduino, ESP-IDF

Code Arduino các bạn viết cho ESP32 chính là C++: Serial, WiFi, các thư viện cảm biến như Adafruit_SSD1306 đều là class. Framework ESP-IDF của ESP32 và nhiều SDK của vi điều khiển ARM cũng hỗ trợ C++. Bài 41 cuối serie sẽ đi sâu vào phần này, và các bạn có thể xem thêm serie lập trình ESP32 trên blog.

Ô tô: AUTOSAR Adaptive

Các dòng xe mới có những máy tính hiệu năng cao chạy hệ điều hành như Linux, xử lý camera, radar, giải trí. Phần mềm trên đó theo chuẩn AUTOSAR Adaptive, dùng C++ làm ngôn ngữ chính, với các quy tắc viết code an toàn như AUTOSAR C++14 và MISRA C++.

Phần mềm hệ thống và hiệu năng cao

Trình duyệt Chrome, Firefox, cơ sở dữ liệu MySQL, MongoDB, trình biên dịch Clang (LLVM), phần mềm đồ họa như Photoshop, Blender đều viết phần lớn bằng C++. Đây là những phần mềm mà mỗi phần trăm tốc độ đều quan trọng.

Thư viện đa năng: Boost

Boost là bộ hơn 160 thư viện C++ chất lượng cao, nhiều thành phần của thư viện chuẩn như smart pointer, std::thread, std::filesystem ban đầu xuất hiện trong Boost rồi mới được đưa vào chuẩn.

Kiến thức trong serie dùng ở đâu?

Kiến thức đã học Gặp lại ở đâu
Class, kế thừa, đa hình Mọi framework: widget trong Qt, Actor trong Unreal, class thư viện cảm biến Arduino
Template, STL Mọi nơi, đặc biệt là Boost và code hiệu năng cao
Smart pointer, RAII Code C++ hiện đại nói chung, Qt có hệ thống quản lý bộ nhớ riêng theo cây đối tượng
Đa luồng Game (luồng vẽ, luồng xử lý), server, xử lý ảnh
Design pattern Observer trong Qt, State trong game và nhúng, Factory trong mọi chỗ đọc dữ liệu

Học xong C++ nên đi tiếp theo hướng nào?

  • Thích làm phần mềm có giao diện: học Qt.
  • Thích làm game: bắt đầu với SFML, sau đó Unreal Engine.
  • Thích phần cứng, IoT: lập trình vi điều khiển với ESP32, STM32, rồi tới Embedded Linux.
  • Thích ô tô: tìm hiểu AUTOSAR, các chuẩn an toàn và Embedded Linux trên ô tô.
  • Thích hiệu năng, hệ thống: đọc sâu về bộ nhớ, đa luồng, cấu trúc dữ liệu và giải thuật.

Lưu ý: Đừng chọn hướng đi chỉ vì nghe nói “lương cao”. Hãy thử làm một project nhỏ ở mỗi hướng, vài ngày là đủ để biết mình có hứng thú hay không. Chính các project ở chương này cũng là một cách thử: game rắn săn mồi cho hướng game, chat client-server cho hướng hệ thống, bài cuối cho hướng nhúng.

Kết

C++ dùng để làm gì? Câu trả lời ngắn là: những phần mềm vừa lớn vừa cần nhanh, từ game, giao diện desktop, xử lý ảnh, robot, ô tô tới vi điều khiển. Mỗi lĩnh vực có framework riêng như Qt, Unreal, OpenCV, ROS, nhưng tất cả đều dựng trên đúng những kiến thức các bạn đã học trong serie: class, đa hình, template, STL, RAII.

Trang chủ của từng framework: Qt, Unreal Engine, OpenCV và ROS, đều có tài liệu và ví dụ để các bạn bắt đầu.

Để xem lại toàn bộ lộ trình, các bạn ghé bài Lộ trình học lập trình C++ từ A tới Z. Bài tiếp theo chúng ta bắt đầu project đầu tiên: chương trình quản lý thư viện hoàn chỉnh, ráp tất cả ví dụ xuyên suốt serie lại với nhau. Nếu thấy bài viết có ích, hãy chia sẻ cho bạn bè nhé.

Rate this post

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *