C và C++ tưởng chừng là một, nhưng sự thật lại không phải như vậy. Cộng đồng lập trình vẫn thường đặt chúng lên bàn cân để so sánh với nhau.
Ngôn ngữ C là gì?
C được đặt tên dựa trên một ngôn ngữ không mấy phổ biến là B. Nó có mặt tại thị trường vào thập niên 1970, do Dennis Ritchie phát triển.
C là ngôn ngữ thủ tục (Procedural Language), thực hiện theo đúng từng bước của quy trình trong việc tạo ra các hàm.
Khác Python và C#, C được cho rằng không thích hợp đối với những người mới bắt đầu học lập trình vì đây là ngôn ngữ cấp thấp.
Một trong những lý do khiến C có thể tồn tại "trường kỳ" cho đến ngày nay là nó cho phép người dùng phát triển các chương trình cốt lõi của sản phẩm, phần mềm hệ thống.
Ngôn ngữ C++ là gì?
C++ chính là "hậu duệ" của C, do vậy mà nó hội tụ đầy đủ những ưu điểm nổi bật từ ngôn ngữ này.
Ngoài ra, C còn được bổ sung thêm tính năng class và object trong phong cách hoạt động của mình.
C++ là ngôn ngữ lập trình hướng đối tượng đầu tiên, được phát triển bởi Bjarne Stroustrup vào thập niên 1980.
C++ vẫn chỉ là ngôn ngữ bậc trung, nhưng nó có các tính năng hỗ trợ của cả ngôn ngữ bậc cao và ngôn ngữ bậc thấp.
Những tính năng cốt lõi mà C++ có thể hỗ trợ:
- Ẩn dữ liệu (data hiding).
- Tính đóng gói (encapsulation).
- Tính đa hình (polymorphism).
- Tính kế thừa (inheritance).
Sự khác nhau giữa C và C++
- C là ngôn ngữ thủ tục, còn C++ là ngôn ngữ hướng đối tượng.
- C hỗ trợ con trỏ, còn C++ hỗ trợ con trỏ lẫn việc tham chiếu.
- C không có tính năng nạp chồng hàm giống như C++.
- Công cụ nhập - xuất thông tin trong C khó sử dụng hơn so với C++.
- Ngôn ngữ C không hỗ trợ String và Bool giống như C++.
- Tên phần đuôi mở rộng trong C là ".c" và C++ là ".cpp".
Để có thể hiểu rõ hơn về sự khác nhau giữa hai ngôn ngữ này, mời bạn tham khảo qua bảng thông tin chi tiết sau:
Ngôn ngữ C | Ngôn ngữ C++ | |
Kiểu ngôn ngữ | Ngôn ngữ lập trình hướng thủ tục | Ngôn ngữ lập trình hướng đối tượng |
Cách tiếp cận | Theo kiểu top-down (chia vấn đề nhỏ thành vấn đề nhỏ hơn) | Theo kiểu bottom-up (tập trung giải quyết vấn đề nhỏ ở mức cơ bản rồi tích hợp chúng thành giải pháp toàn diện) |
Cách tổ chức chương trình | Chia chương trình thành các phần nhỏ, gọi chúng là hàm (function) | Chia chương trình thành các class và object |
Nhập và xuất dữ liệu | Sử dụng scanf và printf được hỗ trợ trong stdio.h | Sử dụng cin và cout được hỗ trợ trong namespace std |
Quản lý bộ nhớ | Có malloc() và calloc() có thể cấp phát tự động | Có mỗi toán tử new cấp phát tự động |
Lập trình giao diện | Sử dụng công cụ GTK | Sở hữu Qt hỗ trợ lập trình GUI |
Quản lý ngoại lệ | Không, nhưng vẫn có những phương pháp thay thế | Có, dùng try catch để phát hiện lỗi |
Mối quan hệ | C không thể sử dụng code của C++ | C++ có thể sử dụng code của C |
Hàm | Không cho phép giá trị mặc định của tham số | Cho phép giá trị mặc định của tham số |
Điểm nổi bật của C++ so với C
- Là ngôn ngữ hoạt động thiên về tính chất hướng đối tượng.
- Có kiểu định dạng mạnh mẽ.
- Hỗ trợ thư viện, cho phép người dùng tạo hàm thông dụng và cũng có thể tái sử dụng lại.
- Cung cấp cơ chế đa dạng hóa cho tên hàm và toán tử.
- Cung cấp class - một loại cấu trúc mới, có thể dùng chung trong hàm và dữ liệu cùng chủ đề đã được thiết lập chế độ bảo mật chặt chẽ.