Tìm hiểu về C# và C++ trước khi so sánh.
C#
- Ngôn ngữ lập trình đa năng, hướng đối tượng
- Được coi là OOP thuần túy
- Đọc là "C sharp"
- Phát triển bởi Anders Hejlsberg và team tại Microsoft
- Quản lý bộ nhớ tự động bởi Garbage Collector
- Tự động xóa object khi hoàn thành nhiệm vụ
- Chỉ chạy trên Windows (platform dependent)
- Không hỗ trợ đa kế thừa (multiple inheritance)
- Con trỏ chỉ dùng trong unsafe mode
- Ngôn ngữ high-level
- Biên dịch thành Intermediate Language (IL)
- Phát triển console, mobile, Windows apps
- Dễ hiểu, hệ thống class rõ ràng
- Kiểm tra giới hạn mảng (bound checking) bởi compiler
- Truy cập index không hợp lệ → compile error
C++
- Ngôn ngữ kiểu tĩnh, đa paradigm
- Cũng là OOP nhưng không thuần túy (có kiểu dữ liệu nguyên thủy)
- Biên dịch trực tiếp thành machine code (low-level)
- Ban đầu gọi là "C with Classes", sau đổi thành C++
- Đọc là "C plus plus"
- Phát triển bởi Bjarne Stroustrup tại AT&T Bell Labs
- Quản lý bộ nhớ thủ công (new/delete)
- Chạy đa nền tảng (platform independent)
- Dùng khi cần tương tác trực tiếp phần cứng
- Hỗ trợ đa kế thừa qua class
- Con trỏ dùng tự do khắp chương trình
- Thường dùng cho console apps
- Không bound checking → truy cập index sai cho output sai, không báo lỗi compile
Bảng so sánh
| C# | C++ |
|---|---|
| OOP đa năng | Kiểu tĩnh, đa paradigm |
| OOP thuần túy | Không thuần túy (có primitive types) |
| GC tự động quản lý bộ nhớ | Quản lý bộ nhớ thủ công |
| Không đa kế thừa | Hỗ trợ đa kế thừa |
| Con trỏ chỉ unsafe mode | Con trỏ dùng tự do |
| Console, mobile, Windows apps | Chủ yếu console apps |
| Bound checking bởi compiler | Không bound checking |