Sự khác biệt giữa ngôn ngữ lập trình C, C99, ANSI C và GNU C là gì?

Sự khác biệt giữa ngôn ngữ lập trình C với C99, ANSI C và GNU C

Chia sẻ kiến thức 04/12/2021

Sự khác biệt giữa ngôn ngữ C, C99, ANSI C và GNU C là gì? FUNiX sẽ giải đáp cho bạn.

Không ít bạn trẻ đã đến với ngành lập trình vì sự đam mê và khởi động học với ngôn ngữ lập trình C. Trong nhiều bài toán, tìm hiểu code, thông tin có chứa cả ngôn ngữ C và C99. Ngôn ngữ lập trình C có phải là C89 hay không? Vậy sự khác biệt giữa ngôn ngữ C, C99, ANSI C và GNU C là gì?

1. Ngôn ngữ lập trình C là gì

Ngôn ngữ lập trình C là một ngôn ngữ mệnh lệnh được phát triển từ đầu thập niên 1970 bởi Dennis Ritchie để dùng trong hệ điều hành UNIX. Từ đó, ngôn ngữ này đã lan rộng ra nhiều hệ điều hành khác và trở thành một những ngôn ngữ phổ dụng nhất. C là ngôn ngữ rất có hiệu quả và được ưa chuộng nhất để viết các phần mềm hệ thống, mặc dù nó cũng được dùng cho việc viết các ứng dụng. Ngoài ra, C cũng thường được dùng làm phương tiện giảng dạy trong khoa học máy tính mặc dù ngôn ngữ này không được thiết kế dành cho người nhập môn.

Ngôn ngữ lập trình C
Ngôn ngữ lập trình C

Có rất nhiều định danh khác nhau được sử dụng trong ngành lập trình. Trong đó, ngôn ngữ C, ANSI C, C99 mang trong mình những ưu điểm riêng biệt. Chúng được xác định thông qua các tiêu chuẩn khác nhau của hệ thống người dùng đang sử dụng. Mỗi phiên bản sẽ giúp người dùng linh hoạt, phát triển hơn. Nhưng thực tế, chúng đều là “Ngôn ngữ C”, theo từng giai đoạn cải tiến các tính năng hơn.

Vào đầu những năm 70 tại phòng thí nghiệm Bell, Dennis Ritchie đã phát triển ngôn ngữ C. C được sử dụng lần đầu trên một hệ thống cài đặt hệ điều hành UNIX. C có nguồn gốc từ ngôn ngữ BCPL do Martin Richards phát triển. BCPL sau đó đã được Ken Thompson phát triển thành ngôn ngữ B, đây là người khởi thủy ra C. Đây là ngôn ngữ C lập trình C giai đoạn 1972 – 1989.

>>> Xem thêm bài viết: Cách hoạt động của lệnh New trong ngôn ngữ lập trình C++?

2. ANSI C là gì?

ANSI C là gì funix

Là tiêu chuẩn ngôn ngữ lập trình C đầu tiên được phát hành trên toàn quốc năm 1989 tại Hoa Kỳ, bởi viện tiêu chuẩn quốc gia ANSI. Bản phát hành này được gọi là C89 hoặc ANSI-C. Từ năm 1989-1990 đây là ANSI C là ngôn ngữ C.

3. Ngôn ngữ C – C90

Năm sau khi ANSI C ra đời, tiêu chuẩn Hoa Kỳ đã được quốc tế chấp nhận và được công bố bởi ISO (ISO 9899: 1990). Bản phát hành này được gọi là C90. Về mặt kỹ thuật, nó là tiêu chuẩn tương tự như C89 / ANSI-C. Về mặt hình thức, nó thay thế C89 / ANSI-C, khiến chúng trở nên lỗi thời. Từ 1990-1999, C90 là “ngôn ngữ C”.
Xin lưu ý rằng kể từ năm 1989, ANSI không liên quan gì đến ngôn ngữ C. Các lập trình viên vẫn nói về “ANSI C” thường không có manh mối về ý nghĩa của nó. ISO “sở hữu” ngôn ngữ C, thông qua tiêu chuẩn ISO 9899.

Một bản cập nhật nhỏ được phát hành vào năm 1995, đôi khi được gọi là “C95”. Đây không phải là một sửa đổi lớn, mà là một sửa đổi kỹ thuật có tên chính thức là ISO / IEC 9899: 1990 / Amd.1: 1995. Thay đổi chính là giới thiệu hỗ trợ nhân vật rộng rãi.

>>> Đọc ngay: Biểu thức Lambda trong ngôn ngữ lập trình C++ có thật sự hữu ích?

4. Ngôn ngữ C – C99 

Ngôn ngữ C

Năm 1999, tiêu chuẩn C đã trải qua một lần sửa đổi lớn (ISO 9899: 1999). Phiên bản tiêu chuẩn này được gọi là C99. Từ năm 1999-2011, đây là “ngôn ngữ C“.

Đến năm 2011, tiêu chuẩn C lại được thay đổi (ISO 9899: 2011). Phiên bản này được gọi là C11. Tính năng mới khác nhau như _Generic, Static_assert Và hỗ trợ chủ đề đã được thêm vào ngôn ngữ. Bản cập nhật tập trung nhiều vào đa lõi, đa xử lý và giải trình tự biểu thức. Từ năm 2011-2017, C11 chính là ngôn ngữ lập trình C.

Vào năm 2017, C11 đã được sửa đổi và các báo cáo sai sót khác nhau đã được giải quyết. Tiêu chuẩn này được gọi một cách không chính thức là C17 hoặc C18. Nó đã được hoàn thành vào năm 2017 (và sử dụng __STDC_VERSION__= 201710L) nhưng đã được ISO phát hành là 9899: 2018, do đó, sự không rõ ràng giữa C17 / C18. Nó không có tính năng mới, chỉ là những sửa chữa. Đây là phiên bản hiện tại của ngôn ngữ C.

“C99 nghiêm ngặt” có thể đề cập đến cài đặt trình biên dịch buộc trình biên dịch phải tuân theo tiêu chuẩn bằng chữ cái. Có một điều khoản thực hiện phù hợp trong tiêu chuẩn C. Về cơ bản nó có nghĩa là: “trình biên dịch này thực sự triển khai ngôn ngữ C một cách chính xác”. Các chương trình triển khai ngôn ngữ C một cách chính xác được chính thức gọi là các chương trình tuân thủ nghiêm ngặt .

>>> ĐỌC THÊM: Xu hướng phát triển nghề lập trình Game blockchain

5. GNU C là gì?

GNU tên đầy đủ là GNU Compiler Collection (GCC). Nó được biết đến là một hệ điều hành giống unix (www.gnu.org) và ở đâu đó dự án của GNU cần ngôn ngữ lập trình C dựa trên tiêu chuẩn ANSI C. GNU sử dụng trình biên dịch GCC (GNU Compiler Collection) để biên dịch mã. Nó có chức năng thư viện C xác định các lệnh gọi hệ thống như malloc, calloc, exit ..

Bản thân trình biên dịch C là một phần của Bộ sưu tập trình biên dịch GNU (GCC). Nó cũng có thể được hiểu là khả năng thiết lập mặc định không chuẩn mà trình biên dịch GCC C sử dụng. Nếu bạn biên dịch với gcc program.thì bạn không biên dịch theo tiêu chuẩn C, mà là thiết lập GNU không theo tiêu chuẩn, có thể được gọi là “GNU C”. Ví dụ, toàn bộ hạt nhân Linux được tạo trong GNU C không chuẩn và không phải trong C chuẩn

Ngôn ngữ C là ngôn ngữ lập trình thông dụng trong ngành công nghiệp máy tính của thế giới. Sử dụng ngôn ngữ C, chúng ta có thể hầu như tạo ra được mọi thứ như ứng dụng website, hệ điều hành,… Dưới sự phát triển của nền công nghệ qua từng giai đoạn của lịch sử. Ngôn ngữ C được cải tiến, biến đổi với những chức năng ưu việt hơn. Ngôn ngữ lập trình C là lựa chọn tuyệt vời cho bạn ngay khi bắt đầu đến với môn học lập trình này. 

>>>  Tìm hiểu ngay các khóa học lập trình của FUNiX tại:

>>> Đón đọc bài viết hữu ích:

Cách hoạt động của lệnh New trong ngôn ngữ lập trình C++?

Biểu thức Lambda trong ngôn ngữ lập trình C++ có thật sự hữu ích?

Người mới bắt đầu nên học lập trình C hay lập trình Java?

Học lập trình cơ bản và lợi ích cho người học

3 bước học lập trình cho người chưa biết gì về CNTT

Nguyễn Vân Anh (theo Stack Overflow)

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        
Chat Button
Chat với FUNiX GPT ×

yêu cầu gọi lại