Nội dung
1. Ngôn ngữ lập trình C là gì? Giới thiệu về ngôn ngữ C
C là một ngôn ngữ lập trình hướng thủ tục (POP) giúp lập trình viên tạo ra các hệ thống phần mềm phức tạp với mục đích chung. Một chương trình viết bằng C phải được chạy qua trình biên dịch C để chuyển đổi nó thành tệp thực thi mà máy tính có thể chạy. Hiện nay trình biên dịch C là có sẵn trên hầu hết các kiến trúc máy tính và hệ điều hành hiện đại.
Vì ngôn ngữ này lập trình theo hướng thủ tục nên C sẽ dễ dàng xác định cấu trúc mã hơn và giải quyết bất kỳ vấn đề nào trong một chuỗi mã cụ thể. Trong lập trình thủ tục, các biến và hàm C được khai báo trước khi sử dụng.
Trong lập trình, C là một ngôn ngữ lập trình cấp trung, có nghĩa là nó hỗ trợ lập trình cấp cao cũng như lập trình cấp thấp. C hỗ trợ việc sử dụng hạt nhân và trình điều khiển trong lập trình cấp thấp và cũng hỗ trợ các ứng dụng phần mềm hệ thống bằng ngôn ngữ lập trình cấp cao.
Một số trường hợp cần sử dụng ngôn ngữ C:
- Các hệ điều hành như Unix và tất cả các ứng dụng Unix;
- Cơ sở dữ liệu, bao gồm Oracle, MySQL , Microsoft SQL Server và PostgreSQL, một phần được viết bằng C;
- Trình biên dịch ngôn ngữ, bao gồm trình biên dịch C;
- Soạn thảo văn bản;
- Bộ đệm in;
- Người lắp ráp;
- Trình điều khiển mạng;
- Các chương trình hiện đại như Git và FreeBSD;
- Thông dịch viên ngôn ngữ;
- Tiện ích, chẳng hạn như trình điều khiển mạng, trình điều khiển chuột và trình điều khiển bàn phím.
Thêm nữa trong thực tế hiện nay ứng dụng của ngôn ngữ C mà bạn có thể tham khảo:
- Áp dụng rộng rãi trong các hệ thống Nhúng;
- Sử dụng để phát triển System Apps;
- Sử dụng rộng rãi để phát triển các ứng dụng máy tính để bàn;
- Phát triển các phần mềm ứng dụng nổi tiếng như Adobe, trình duyệt Chromium của Google, MySQL,…;
- Phát triển các hệ điều hành OSX của Apple, Windows của Microsoft và Symbian được phát triển bằng ngôn ngữ C;
- Ngoài các phần mềm, hệ điều hành C còn được sử dụng để phát triển máy tính bàn, sản xuất trình biên dịch và sử dụng rộng rãi trong các ứng dụng IOT;
- …
Ngôn ngữ này được gọi là C bởi nó là sự kế thừa của ngôn ngữ lập trình B, ngôn ngữ C được tạo ra vào những năm 1970 bởi Dennis Ritchie, vẫn được sử dụng, có ảnh hưởng rộng rãi tới hiện tại và nhiều ngôn ngữ khác cũng được bắt nguồn từ nó.
Ví dụ như C++, JAVA là 2 phương ngữ hiện đại phổ biến của C. Ngoài ra, có nhiều ngôn ngữ khác mượn trực tiếp hoặc gián tiếp từ C có thể kể đến: C# , Unix’s C shell , D , Go, PHP , Python , Ruby,… Do vậy C được ví như là “ngôn ngữ mẹ” mà nếu lập trình viên học lập trình C giỏi thì rất dễ dàng để nắm bắt các ngôn ngữ thông dụng khác như JAVA, C++, C#.
Một điều thú vị nữa về C, ví dụ “hello, world” được viết bằng ngôn ngữ lập trình C xuất hiện trong ấn bản đầu tiên của cuốn sách “The C Programming Language“ còn được biết đến với cái tên K&R nói về ngôn ngữ lập trình C trở thành chương trình mẫu trong hầu hết các sách giáo khoa lập trình cho thấy sự.
Ví dụ “hello, world” phiên bản gốc:
main()
{
printf("hello, world\n");
}
Chương trình “hello, world” tuân thủ tiêu chuẩn là:
#include <stdio.h>
int main(void)
{
printf("hello, world\n");
}
2. Đặc điểm của ngôn ngữ lập trình C
C là ngôn ngữ lập trình máy tính có mục đích chung để quản trị hệ thống, lập trình mạng và phần mềm nhúng, do vậy nó có một số đặc điểm khiến nó trở nên hấp dẫn đối với các ứng dụng này:
- Dễ học, dễ đọc: Cú pháp chương trình C dễ học và dễ đọc làm cho mã gỡ lỗi dễ truy cập hơn và nhanh hơn;
- Ngắn gọn: Các chương trình C tương đối ngắn so với các ngôn ngữ khác, giúp giảm thời gian cần thiết để hoàn thành chúng;
- Mạnh mẽ: C là ngôn ngữ lập trình mạnh mẽ cho phép các nhà phát triển tạo ra các hệ thống phần mềm phức tạp;
- Nhanh, hiệu quả cao: Ngôn ngữ này nhanh, hiệu quả và dễ học, khiến nó trở thành lựa chọn phổ biến cho nhiều ứng dụng;
- Tính di động: C cũng có tính di động, nghĩa là các chương trình viết bằng C có thể dễ dàng chuyển sang các nền tảng khác;
- Phổ biến rộng rãi: C đã tồn tại được nhiều năm (được phát hành lần đầu tiên vào năm 1979), rất nhiều thư viện và công cụ có sẵn hỗ trợ việc sử dụng nó.
3. Ưu nhược điểm của ngôn ngữ lập trình C
Là ngôn ngữ lập trình đã có từ lâu đời và vẫn được ứng dụng trong thực tế hiện nay thì C cũng có những ưu, nhược điểm nhất định mà bạn học nên cân nhắc khi lựa chọn mà CodeGym sẽ đưa ra cho bạn ngay dưới đây.
3.1. Ưu điểm
C là ngôn ngữ lập trình mạnh mẽ được ứng dụng rộng rãi bởi những ưu điểm cũng như lợi ích nó mang lại mà bạn có thể tham khảo:
- Ngôn ngữ mạnh mẽ và hiệu quả: C là một ngôn ngữ mạnh mẽ vì nó chứa nhiều loại dữ liệu và toán tử để cung cấp cho bạn một nền tảng rộng lớn để thực hiện tất cả các loại hoạt động;
- Dễ hiểu: C là ngôn ngữ có tính di động cao, các chương trình được mã hóa trong đó nhanh hơn và hiệu quả hơn nhiều ứng dụng trên nhiều nền tảng, điều này làm cho việc học C dễ dàng hơn bất kỳ ngôn ngữ lập trình nào khác. Người học có thể dễ dàng nắm bắt các khái niệm đằng sau C vì không có nhiều từ khóa hoặc ký hiệu liên quan;
- Có nhiều thư viện kèm theo: Với bề dày lịch sử phát triển, C cung cấp rất nhiều hàm tích hợp bao gồm các hàm do hệ thống tạo và các hàm do người dùng xác định. Nhiều hàm chung có thể được sử dụng để phát triển chương trình trong trình biên dịch C;
- Dễ viết: Một lý do khiến C trở nên phổ biến như một ngôn ngữ dễ hiểu, dễ sử dụng và hiệu quả chỉ có 32 từ khóa trong ANSI, C cho phép bạn lập trình mà không phải lo lắng nhiều về lỗi cú pháp;
- Tốc độ thực hiện nhanh: C sử dụng ít lệnh hơn nên nó thực thi nhanh hơn các ngôn ngữ lập trình khác như Java, Ruby, PHP,… và nó cũng được biết là một ngôn ngữ có tốc độ nhanh hàng đầu;
- Tính di động: C dựa trên các ký tự ASCII nên nó hoạt động tốt trên nhiều nền tảng khác nhau bao gồm Windows, Linux, Mac OS X, Android, iOS,… nhờ đó bạn hầu như có thể sử dụng C ở bất cứ thiết bị nào;
- Ngôn ngữ lập trình có cấu trúc: C dựa trên cấu trúc, có nghĩa là các vấn đề hoặc vấn đề phức tạp được chia thành các khối hoặc chức năng nhỏ hơn. Cấu trúc mô-đun này giúp việc kiểm tra và bảo trì dễ dàng và đơn giản hơn;
- Dễ dàng gỡ lỗi: Vì C không yêu cầu các câu lệnh phức tạp như vòng lặp, điều kiện, biến, hàm, mảng , con trỏ,… nên bạn có thể gỡ lỗi mã của mình một cách dễ dàng. Ví dụ: Nếu bạn gặp sự cố khi thực hiện chương trình, chỉ cần nhấn CTRL+D để dừng quá trình ngay lập tức. Sau đó, bạn có thể chỉ cần lùi lại một dòng và tiếp tục làm việc cho đến khi đạt được câu lệnh có vấn đề;
- Tốc độ biên dịch cực nhanh: Trình biên dịch C tạo mã máy rất nhanh, gần một nghìn dòng mã có thể được ghép lại với nhau trong vài giây;
- Thực thi thuật toán và cấu trúc dữ liệu hiệu quả: Việc sử dụng các thuật toán và cấu trúc dữ liệu trong C đã giúp cho việc tính toán chương trình trở nên cực kỳ nhanh chóng và mượt mà, do vậy ngôn ngữ C có thể được sử dụng trong các tác vụ và ước tính phức tạp như MATLAB;
- Cấp phát bộ nhớ động linh hoạt: Trong Ngôn ngữ C, bạn có thể phân bổ bộ nhớ động hoặc tĩnh làm cho lập trình viên linh hoạt hơn trong việc sử dụng bộ nhớ so với các ngôn ngữ khác như Java;
- Mã nguồn mở: Ngôn ngữ C là ngôn ngữ lập trình mã nguồn mở và miễn phí, có thể truy cập công khai và có sẵn trên tất cả các nền tảng mã hóa và lập trình. Mã của ngôn ngữ C cũng được cung cấp công khai. Người ta có thể dễ dàng tải xuống trình biên dịch ngôn ngữ và có thể bắt đầu làm việc;
- Khả năng tự mở rộng: Với khả năng tự mở rộng, bạn có thể tự thêm các hàm của mình vào thư viện C. Ngoài ra, thư viện C cũng chứa lượng lớn các hàm, nên mọi thác tác rất dễ để thực hiện.
3.2. Nhược điểm
Ngoài những ưu điểm tạo nên ngôn ngữ lập trình C mạnh mẽ thì cũng không thể bỏ qua những hạn chế của ngôn ngữ lập trình này, cụ thể:
- Thiếu định hướng đối tượng: C không mở rộng hỗ trợ cho khái niệm OOP (Kế thừa, Đa hình, Đóng gói, Trừu tượng, Ẩn dữ liệu). Thực tế khi sử dụng C, bạn không thể tạo một lớp có nhiều kế thừa các phương thức từ lớp cha nên việc sử dụng lại các mã hiện có trở nên khó khăn;
- Quản lý bộ nhớ kém hiệu quả: Trong ngôn ngữ C, bạn không cần bất kỳ kỹ thuật quản lý bộ nhớ nào vì nó tự động quản lý tất cả tài nguyên được phân bổ cho bạn. Nhưng nếu bạn muốn sử dụng phân bổ động thì bạn nên phân bổ động theo hàm malloc và nếu bạn thực hiện việc này theo cách thủ công thì bạn sẽ gặp lỗi phân đoạn, vì vậy bạn phải luôn nhớ về Kỹ thuật quản lý bộ nhớ trong C;
- Không thu gom rác để giải phóng bộ nhớ: Trong ngôn ngữ C, không có tính năng thu gom rác vì văn hóa của ngôn ngữ này là giao việc quản lý bộ nhớ cho nhà phát triển hoặc lập trình viên. Do đó, việc triển khai trình thu gom rác chính xác cho C / C++ sẽ khá kém và khắc nghiệt về mặt kỹ thuật;
- Kiểm tra lỗi theo thời gian chạy: Lỗi trong C không được phát hiện sau mỗi dòng mã, trình biên dịch hiển thị tất cả các lỗi code trong thời gian chạy toàn bộ, điều này khiến cho việc kiểm tra mã (gỡ lỗi) trở nên đặc biệt phức tạp trong các dự án lớn;
- Không có khái niệm namespace: C không thực hiện ý tưởng về namespace, một không gian tên được tổ chức dưới dạng một chuỗi lệnh để cho phép sử dụng lại tên trong các cài đặt khác nhau. Không có namespace bạn không thể phát âm hai yếu tố có cùng tên;
- Thiếu xử lý ngoại lệ: Xử lý trường hợp đặc biệt có lẽ là yếu tố chính của phương ngữ lập trình. Trong khi biên dịch mã, các lỗi khác nhau có thể xảy ra, xử lý ngoại lệ cho phép bạn xác định lỗi và khắc phục chúng. Tuy nhiên, C không thể hiện được tính năng quan trọng này;
- Thiếu hàm tạo và hàm hủy: C không có bất kỳ chức năng hướng đối tượng nào và do đó, nó không có tính năng Hàm tạo và Hàm hủy. Vì vậy, trong Ngôn ngữ C, bạn cần thực hiện việc xây dựng và/hoặc hủy biến theo cách thủ công, bằng cách sử dụng một hàm hoặc bằng các phương tiện khác.
4. Sự khác biệt giữa 2 ngôn ngữ C và C++
Nhiều bạn đọc khi tìm hiểu về C nhầm tưởng rằng C và C++ giống nhau nhưng điều này hoàn toàn không chính xác, hãy để mình bật mí cho bạn về sự khác nhau giữa chúng nhé:
Khác biệt:
- C++ hỗ trợ các lớp, là một loại đối tượng có thể được sử dụng để nhóm dữ liệu và phương thức lại với nhau. C không hỗ trợ các lớp;
- C++ hỗ trợ tính kế thừa, cho phép một lớp kế thừa các thuộc tính của lớp khác. C không hỗ trợ kế thừa;
- C++ hỗ trợ tính đa hình, cho phép các đối tượng thuộc các loại khác nhau được xử lý tương tự. C không hỗ trợ đa hình;
- C++ là ngôn ngữ được biên dịch, trong khi C là ngôn ngữ phiên dịch. Điều này có nghĩa là mã C++ được chuyển đổi thành mã máy trước khi nó được thực thi, trong khi mã C được diễn giải theo từng dòng;
- C++ là ngôn ngữ phức tạp hơn C. Điều này là do C++ có nhiều tính năng hơn, chẳng hạn như lớp, kế thừa và đa hình.
Cụ thể để so sánh về sự khác biệt bạn có thể xem bảng thông tin dưới đây về 2 ngôn ngữ này:
C | C++ |
---|---|
C được phát triển vào năm 1972 bởi Dennis Ritchie tại Phòng thí nghiệm Bell. | C++ được phát triển bởi Bjarne Stroustrup thuộc Phòng thí nghiệm Bell vào đầu những năm 1980. |
C là một ngôn ngữ hướng thủ tục. | Nó là một ngôn ngữ hướng đối tượng. |
C là ngôn ngữ hướng thủ tục và không hỗ trợ các tính năng lập trình hướng đối tượng (OOP) như đa hình, đóng gói và lập trình kế thừa. | C++ vừa là ngôn ngữ lập trình hướng đối tượng vừa là ngôn ngữ thủ tục. Nó hỗ trợ các tính năng OOP như đa hình, đóng gói và kế thừa. |
C là tập con của C++. | C++ là siêu bộ của C. |
C có 32 từ khóa. | C++ có 63 từ khóa. |
Hỗ trợ các kiểu dữ liệu tích hợp | Hỗ trợ cả kiểu dữ liệu tích hợp và do người dùng xác định |
Phần mở rộng tệp của chương trình bằng ngôn ngữ C là .c. | Phần mở rộng tệp của chương trình C++ là .cpp. |
Không có công cụ sửa đổi quyền truy cập. | Có công cụ sửa đổi quyền truy cập. |
C sử dụng tệp tiêu đề <stdio.h> cho các hoạt động đầu vào/đầu ra. | C++ sử dụng tệp tiêu đề <iostream.h> cho các hoạt động đầu vào/đầu ra. |
Không hỗ trợ việc che giấu thông tin. | Dữ liệu được bảo mật và ẩn bằng Encapsulation. |
C tập trung vào phương pháp hoặc quy trình hơn là dữ liệu. | C++ tập trung vào dữ liệu hơn là phương pháp hoặc thủ tục. |
Không hỗ trợ trực tiếp cho việc xử lý ngoại lệ. | Hỗ trợ xử lý ngoại lệ. |
C sử dụng hàm scanf() và printf() cho đầu vào/đầu ra. | C++ sử dụng cin và cout cho đầu vào/đầu ra. |
Không hỗ trợ quá tải chức năng và toán tử. | Hỗ trợ quá tải chức năng và toán tử. |
Hàm main() có thể được gọi thông qua các hàm khác được sử dụng trong mã. | Không cho phép gọi hàm main() thông qua các hàm khác. |
Không hỗ trợ bất kỳ biến tham chiếu nào. | Hỗ trợ các biến tham chiếu. |
Giống nhau:
Nói C và C++ giống nhau là không đúng và nó chỉ có một số điểm tương đồng mà bạn có thể biết như sau:
- Cú pháp: C++ là phiên bản mở rộng của C, do đó cả hai đều có cú pháp, biên dịch và cấu trúc mã tương tự nhau;
- Từ khóa: Hầu hết các từ khóa và toán tử của C đều được sử dụng trong C++ và thực hiện cùng chức năng;
- Thực thi: C và C++ đều tuân theo việc thực thi mã từ trên xuống;
- Chú thích: Chú thích nội tuyến trong cả C và C++ đều được đánh dấu bằng //;
- Mảng đa chiều: Cả C và C++ đều hỗ trợ mảng đa chiều;
- Mảng kích thước động: Không có mảng nào hỗ trợ mảng có kích thước động;
- Bộ kết thúc câu lệnh: Cả C và C++ đều sử dụng dấu chấm phẩy (;) để kết thúc một câu lệnh;
- Chỉ thị tiền xử lý: #include được sử dụng trong cả C và C++ để bao gồm/nhập tệp tiêu đề.
Xem thêm:
Phân biệt C với C++: Nên lựa chọn ngôn ngữ nào tốt hơn?
5. Một số câu hỏi thường gặp về ngôn ngữ lập trình C
Có nhiều thắc mắc về ngôn ngữ C khi bạn đọc tìm hiểu và phổ biến trong đó có một số thắc mắc như sau:
5.1. Tại sao C được gọi là C mà không phải ký tự khác?
Theo Wikipedia, Nó được đặt tên là “C” vì các tính năng của nó bắt nguồn từ một ngôn ngữ trước đó có tên là “B” , mà theo Ken Thompson là phiên bản rút gọn của ngôn ngữ lập trình BCPL.
5.2. Ai là người tạo ra ngôn ngữ lập trình C?
C được tạo ra bởi Dennis Ritchie tại Bell Labs vào đầu những năm 1970 như một phiên bản mở rộng của B của Ken Thompson. Một nhân viên khác của Bell Labs, Brian Kernighan, đã viết bài hướng dẫn C đầu tiên và ông đã thuyết phục Ritchie làm đồng tác giả một cuốn sách về ngôn ngữ này.
5.3. C ban đầu được gọi là gì?
K&R C. Năm 1978, Brian Kernighan và Dennis Ritchie xuất bản ấn bản đầu tiên của cuốn “The C Programming Language”. Được biết đến với cái tên K&R theo tên viết tắt của các tác giả, cuốn sách này đã được dùng trong nhiều năm như một bản mô tả không chính thức về ngôn ngữ.
Phiên bản C mà nó mô tả thường được gọi là “K&R C”.
Có thể bạn quan tâm:
- 5 khóa học lập trình c online cho người mới bắt đầu
- Tổng hợp đầy đủ bộ giáo trình lập trình C full tài liệu
Vậy qua những nội dung trên, CodeGym mong rằng bạn đọc đã hiểu về C là gì và ứng dụng của C trong thực tế ngành lập trình. Mong rằng những thông tin này sẽ giúp ích cho bạn trong quá trình học tập và trau dồi kiến thức trong ngành lập trình và góp phần giúp bạn ngày một tốt hơn trên con đường trở thành lập trình viên.
0 Lời bình