Mình tin chắc một điều là đối với dân lập trình thì không ai là không biết đến C và C++ cả, có đúng không ạ 🙂
Vậy bạn có biết sự khác nhau lớn nhất giữa C và C++ là gì không? Thực sự là trước đây khi mới được học thì giáo viên không phân biệt rõ ràng điều này giúp mình, nên lúc đó mình rất mơ hồ về 2 ngôn ngữ lập trình này.
Vậy nên, nếu như bạn cũng đang có cùng thắc mắc như trên thì hãy cùng mình đi tìm đáp án ngay trong bài viết này nhé !
Đọc thêm:
- Dev-C++: Công cụ lập trình C++ cơ bản cho người mới học
- Hướng dẫn cài đặt CODE::BLOCK để lập trình C++ dễ dàng
Mục Lục Nội Dung
#1. Thông tin cơ bản về C và C++
C
được phát triển bởi Dennis Ritchie từ 1969 tới 1973. C++
được phát triển bởi Bjarne Stroustrup vào 1979 => C++ được kế thừa từ C
C
là ngôn ngữ thủ tục (Procedural Language), bởi nó tuân theo quy trình từng bước bao gồm các hàm. Hay có thể nói, C là ngôn ngữ cấp thấp (Low-Level Language) nên sẽ có độ phức tạp nhất định khi học so với các ngôn ngữ mới hiện nay (ví dụ như C# hoặc Python…)
Đối với khoa học máy tính, ngôn ngữ lập trình bậc thấp là một ngôn ngữ lập trình có liên quan chặt chẽ đến phần cứng máy tính.
Các bạn lưu ý, từ “thấp” ở đây bạn đừng hiểu là ngôn ngữ lập trình này kém hơn so với các ngôn ngữ lập trình bậc cao nhé. Mà hiểu đúng phải là các lệnh của nó rất gần ngôn ngữ máy.
C++ là ngôn ngữ lập trình hướng đối tượng, có nghĩa là C++ tập trung vào tính kế thừa và nó có khả năng sử dụng lại mã code, có khả năng đóng gói và tạo ra các đối tượng.
Tuy có nhiều điểm tương đồng nhưng C và C++ là 2 ngôn ngữ lập trình khác nhau nhé các bạn.
Ngôn ngữ lập trình C được gọi là C là bởi vì nó xuất hiện sau một ngôn ngữ lập trình khác, có tên là B
Còn ngôn ngữ lập trình C++ có tên là C++ bởi vì tác giả (Bjarne Stroustrup) muốn bổ sung các tính năng hướng đối tượng cho ngôn ngữ lập trình C.
C++ ban đầu nó có tên là “C with Objects”. Nhưng sau này, nó được đổi tên thành C++ để gợi nhớ về toán tử “++” (increment operator) của C.
#2. Điểm giống nhau giữa ngôn ngữ C và C++
Nói về sự giống nhau giữa hai ngôn ngữ lập trình này thì chắc hẳn các bạn sẽ nghĩ ngay là cú pháp đúng không !
C++ là ngôn ngữ lập trình thừa kế, mở rộng từ C, đây cũng chính là lý do vì sao người ta hay gộp chung chúng lại thành C/C++, ngoài ra chúng ta còn có rất nhiều điểm chung giữa hai ngôn ngữ này, tiêu biểu phải kể đến như:
- Cả 2 đều là ngôn ngữ lập trình cấp thấp.
- Có cấu trúc code giống nhau. Ngoài ra thì cú pháp và cách viết code cũng giống nhau.
- Việc biên dịch của cả hai ngôn ngữ này là tương tự nhau.
- Gần như tất cả các toán tử và từ khóa của C cũng có trong C ++.
- C và C++ đều hỗ trợ quản lý bộ nhớ một cách thủ công. Có nghĩa là chúng không có khả năng thu gom “rác” để giải phóng bộ nhớ khỏi các đối tượng không sử dụng.
- Các khái niệm giống nhau về vùng nhớ stack, heap, tệp và biến tĩnh….
#3. Sự khác nhau giữa C và C++
Còn dưới đây là một số sự khác biệt tiêu biểu giữa hai ngôn ngữ lập trình C và C++ mà các bạn nên nắm được:
C
là ngôn ngữ hướng thủ tục (hay còn gọi là ngôn ngữ lập trình cấu trúc), cònC++
là ngôn ngữ lập trình hướng đối tượng (C++ còn được gọi là ngôn ngữ lai vì hỗ trợ khá nhiều mô hình lập trình).- Vì không phải là ngôn ngữ lập trình hướng đối tượng như C++ nên C không có các tính chất như tính đa hình, tính đóng gói và kế thừa, và khả năng bảo mật của C++ chắc chắn cao hơn C.
C
không hỗ trợ nạp chồng hàm và nạp chồng toán tử, cũng không có tính năng không gian tên và chức năng biến tham chiếu. Còn C ++ hỗ trợ cả nạp chồng hàm và toán tử, ngoài ra nó cũng có tính năng không gian tên và chức năng biến tham chiếu….- C thi có 32 từ khóa, còn C++ có nhiều hơn 32 từ khóa.
- C++ hỗ trợ ẩn thông tin còn C thì không (điều này liên quan mật thiết đến đóng gói).
- C++ có khả năng xử lý ngoại lệ tốt (khối Thử (Try) và Bắt (Catch)) => điều này giúp cho việc xử lý lỗi, tìm lỗi dễ dàng hơn so với C rất nhiều.
- Đuôi mở rộng của C là
*.c
, còn đuôi mở rộng của C++ là*.c
và*.cpp
- C++ có thể chạy được code của C, nhưng C thì không thể chạy được code của C++
#4. Lời kết
Đó là sự khác biệt cơ bản giữa hai ngôn ngữ lập trình C và C++ !
Ở đây mình đã không so sánh thật sự chi tiết về những khía cạnh của cả hai ngôn ngữ như tốc độ (về lí thuyết thì C nhanh hơn C++, nhưng trong một số trường hợp thì việc áp dụng C++ sẽ cho ra kết quả tốt hơn) như: khả năng tương thích với các ngôn ngữ lập trình khác, tính bảo mật dữ liệu, tính đóng gói và ẩn thông tin, biến,…
Nhưng công bằng mà nói thì đối với người mới, ngôn ngữ C có thể sẽ đơn giản và sẽ hữu ích hơn trong việc hiểu các khái niệm chính của lập trình cấp thấp.
Hi vọng là bài viết này sẽ hữu ích với bạn. Hẹn gặp lại các bạn trong các bài viết sau nhé !
CTV: Dương Quang Nhất – Blogchiasekienthuc.com
Edit by Kiên Nguyễn