Bỏ qua để đến nội dung

C++ là gì?

C++ là một ngôn ngữ lập trình bậc cao, biên dịch (compiled), hỗ trợ nhiều mô hình lập trình (đa mô hình - multi-paradigm): lập trình thủ tục, lập trình hướng đối tượng, lập trình generic (template)… C++ được Bjarne Stroustrup phát triển tại Bell Labs, bắt đầu từ năm 1979 với tên gọi ban đầu là “C with Classes”, và được đổi tên thành C++ vào năm 1983.

Dấu ++ trong “C++” là toán tử tăng (increment) trong C, ngụ ý C++ là “phiên bản nâng cấp của C”.

Code C++ phải được biên dịch (compile) thành mã máy (machine code) trước khi chạy, chứ không chạy trực tiếp từng dòng như ngôn ngữ thông dịch. Điều này giúp:

  • Chương trình chạy rất nhanh
  • Lỗi cú pháp/kiểu dữ liệu được phát hiện ngay khi biên dịch, trước khi chạy
  • Không cần cài trình thông dịch trên máy người dùng cuối, chỉ cần file thực thi (executable)
#include <iostream>
int main() {
std::cout << "Hello, World!" << std::endl;
int a = 5;
int b = 3;
int tong = a + b;
std::cout << "Tong cua " << a << " va " << b << " la " << tong << std::endl;
return 0;
}

Trong C++, mỗi biến phải được khai báo kiểu dữ liệu trước khi dùng, và kiểu đó không thể tự đổi trong quá trình chạy. Điều này giúp trình biên dịch bắt lỗi kiểu dữ liệu sớm và tối ưu hiệu năng.

int tuoi = 25; // Phải là số nguyên
double gia_tien = 9.99; // Phải là số thực
// tuoi = "hai mươi lăm"; // Lỗi biên dịch! Không thể gán chuỗi cho biến int

C++ cho phép lập trình viên quản lý bộ nhớ trực tiếp thông qua con trỏ (pointer) và các toán tử new/delete, thay vì để một garbage collector tự động dọn dẹp. Sức mạnh này đi kèm trách nhiệm: lập trình viên phải tự cấp phát và giải phóng bộ nhớ đúng cách.

Vì được biên dịch trực tiếp thành mã máy và cho phép tối ưu hóa ở mức thấp, C++ thường chạy nhanh hơn đáng kể so với các ngôn ngữ thông dịch với cùng một tác vụ tính toán. Đây là lý do C++ được chọn cho các hệ thống đòi hỏi hiệu năng cực cao.

5. Phong cách lập trình linh hoạt (Multi-paradigm)

Phần tiêu đề “5. Phong cách lập trình linh hoạt (Multi-paradigm)”

C++ hỗ trợ nhiều phong cách lập trình:

  • Lập trình thủ tục (Procedural): hàm, biến, vòng lặp (kế thừa từ C)
  • Lập trình hướng đối tượng (OOP): class, kế thừa, đa hình
  • Lập trình generic: template, cho phép viết code dùng chung cho nhiều kiểu dữ liệu

C++ có Standard Template Library (STL) cung cấp sẵn các cấu trúc dữ liệu (vector, map, set…) và thuật toán (sort, find…) được tối ưu hiệu năng cao.

Học C++ buộc bạn phải hiểu về bộ nhớ (stack, heap), con trỏ, cách trình biên dịch hoạt động - những kiến thức nền tảng rất giá trị cho bất kỳ lập trình viên nào, dù sau này bạn làm việc với ngôn ngữ hay lĩnh vực nào.

  • Game (Unreal Engine viết bằng C++)
  • Hệ điều hành (Windows, Linux có nhiều phần lõi viết bằng C/C++)
  • Trình duyệt web (Chrome, Firefox)
  • Hệ thống nhúng, robot, ô tô tự lái

Nền tảng cho lập trình thi đấu (competitive programming)

Phần tiêu đề “Nền tảng cho lập trình thi đấu (competitive programming)”

Phần lớn các cuộc thi lập trình (ICPC, Codeforces…) sử dụng C++ vì tốc độ thực thi nhanh, giúp giải quyết các bài toán yêu cầu hiệu năng cao (ràng buộc tốc độ thực thi ngắn).

  • 1979: Bjarne Stroustrup bắt đầu phát triển “C with Classes”
  • 1983: Đổi tên thành C++
  • 1998: C++98 - phiên bản chuẩn hóa đầu tiên (ISO/IEC 14882)
  • 2011: C++11 - bản cập nhật lớn, thêm auto, lambda, smart pointers, range-based for…
  • 2014, 2017, 2020, 2023: C++14, C++17, C++20, C++23 - các bản cập nhật tiếp theo với nhiều tính năng hiện đại (modules, concepts, coroutines…)