Giới thiệu Ngôn ngữ lập trình C - Bài 1

Giới thiệu Ngôn ngữ lập trình C - Bài 1
access_time 9/30/2019 12:00:00 AM
person Nguyễn Mạnh Hùng
1. Giới thiệu
 

Ngôn ngữ lập trình C được kế thừa từ 2 ngôn ngữ BCPL và B. BCPL, hai ngôn ngữ này được phát triển bởi Martin Richards, đó là ngôn ngữ viết cho hệ điều hành và trình biên dịch. Trong năm 1970 Ken Thompon đã sử dụng ngôn ngữ B để tạo ra phiên bản đầu tiên cho hệ điều hành Unix tại Bell Laboratories. Ngôn ngữ lập trình C được Dennis Ritchie xây dựng và phát triển từ từ B tại Bell Laboratories vào năm 1972, khởi đầu ngôn ngữ lập trình C được sử dụng rộng dãi 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.

Nhiều hệ điều hành hàng đầu hiện nay được viết bởi ngôn ngữ lập trình C/C++. Ngôn ngữ lập trình C là độc lập với các thiết bị phần cứng. Các chương trình viết bằng ngôn ngữ C có thể chạy trên hầu hết các hệ điều hành.

C được sử dụng rộng dãi trong việc phát triển các hệ thống đòi hỏi hiệu năng chẳng hạn như Hệ điều hành, hệ thống nhúng, hệ thống xử lý thời gian thực và các hệ thống giao tiếp.

Sự mở rộng nhanh tróng của ngôn ngữ lập trình C trên nhiều loại máy tính khác nhau (Đôi khi gọi là nền tảng phần cứng) dẫn đến có nhiều biến thể khác nhau. Điều đó có nghĩa là biến thể này thực thi tốt ở nền tảng phần cứng này nhưng không thực thi được ở nền tảng phần cứng khác. Đây là vấn đề nghiêm trọng đối với các lập trình viên, những người cần phát triển ứng dụng chạy được trên nhiều nền tảng khác nhau.

Năm 1989 viện tiêu chuẩn của hoa kỳ đã công bó bản chuẩn hóa C còn được gọi là ANSI 89 (C89) sau đó năm 1990 nâng cấp bản chuẩn hóa này gọi là ANSI 90 (C90), sau đó tiếp tục cập nhật năm 1999 gọi là C99 và nâng cấp nến C11 vào năm 2011.

 
2. Điểm mạnh và điểm yếu của ngôn ngữ lập trình C

2.1 Điểm mạnh ngôn ngữ C


Ngôn ngữ lập trình cấp thấp

Hệ điều hành Unix có tới 90% là được viết bởi ngôn ngữ C. 10% là được viết bởi hợp ngữ.
Ngoài ra có rất nhiều các trình điều khiển hỗ trợ lập trình bằng ngôn ngữ C.

Ngôn ngữ có kích cỡ nhỏ

So với các ngôn ngữ như C++/C#, Java, ngôn ngữ C có kích cỡ nhỏ. Các thư viện trong ngôn ngữ C là hạn chế, chỉ chứa các hàm cơ bản.

Mạnh và linh hoạt

Ngôn ngữ C không đưa ra các ràng buộc đối với người lập trình. C được sử dụng trong nhiều dự án khác nhau, như viết hệ điều hành, chương trình xử lý văn bản, đồ hoạ, bảng tính, và thậm chí cả chương trình dịch cho các ngôn ngữ khác.

Ngôn ngữ có tính khả chuyển

Một chương trình viết bằng C cho một hệ máy tính (ví dụ như IBM PC) có thể được dịch và chạy trên hệ máy tính khác (chẳng hạn như DEC VAX) chỉ với rất ít các sử đổi. Tính khả chuyển đã được bởi chuẩn ANSI cho C.
 
2.2 Điểm yếu ngôn ngữ C

Các chương trình của C dễ bị lỗi

Do tính mềm dẻo của ngôn ngữ C cũng chính là nguyên nhân dễ gây lỗi. Giống như các ngôn ngữ lập trình hợp ngữ các lỗi chỉ được phát hiện khi thực hiện biên dịch chương trình.

Các chương trình viết bằng ngôn ngữ C có thể khó hiểu

Tuy ngôn ngữ C có kích cỡ nhỏ và số lượng các từ khóa không nhiều. Tuy nhiên cú pháp viết ngôn ngữ C có thể gây khó hiểu đối với các lập trình viên mới vào nghề vì các từ khóa và cú pháp có thể không gợi nhớ như các ngôn ngữ hiện đại C#, java.

Các chương trình viết bằng ngôn ngữ C khó chỉnh sửa.

Các chương trình lớn viết bằng ngôn ngữ C có thể khó chỉnh sửa nếu các tài liệu thiết kế chương trình không được thực hiện chi tiết. Các chương trình lớn thông thương được thiết kế theo các lớp và gói thông tin tuy nhiên ngôn ngữ C thiếu đặc điểm này.
 
3. Quy tắc khi viết chương trình C
4. Các giai đoạn khi thực thi chương trình C
Giai đoạn 1 : Soạn thảo chương trình
Sử dựng các trình soạn thảo văn bản để viết chương trình ví dụ trình soạn thảo vi và emacs trong hệ điều hành Linux. Hoặc sử dụng các chương trình đóng gói của các hãng phát triển để viết chương trình như Eclipse, Microsoft Visual Studio Code, Visual Studio 2015, 2017, 2019... Các chương trình C có đuôi mở rộng .c .

Giai đoạn 2, 3 :
 Tiền xử lý và biên dịch
Việc dịch (translation) một tập tin nguồn được tiến hành trên hai bước hoàn toàn độc lập với nhau:

Trong hệ thống C, tiền xử lý được tiến hành một cách tự động trước khi giai đoạn dịch chương trình bắt đầu.
Bước tiền xử lý tương  ứng với việc cập nhật trong văn bản của chương trình nguồn, chủ yếu dựa trên việc diễn giải các mã lệnh rất đặc biệt gọi là các chỉ thị dẫn hướng của bộ tiền xử lý (destination directive of preprocessor); các chỉ thị này  được nhận biết bởi chúng bắt đầu bằng ký hiệu (symbol) #.
Hai chỉ thị quan trọng nhất là:

Giai đoạn 4 : Liên kết
Tại giai đoạn này chương trình C chứa các tham chiếu tới các hàm được cài đặt bởi các thư viện chuẩn được cung cấp sẵn hoặc các thư viện do các nhà phát triển xây dựng nên.

Giai đoạn 5 : Nạp chương trình

Trước khi chương trình được thực thi, chương trình phải được nạp vào trong bộ nhớ. Tại giai đoạn này hệ điều hành cấp phát vùng bộ nhớ cần thiết để các đối tượng cần thiết để thực thi chương trình.

Giai đoạn 6 : Thực thi

CPU Tiến hành thực thi các nghiệp vụ của chương trình.
 
Hình vẽ mô tả các giai đoạn thực thi chương trình C
Hình số 1 : Các giai đoạn thực thi chương trình C

vertical_align_top
share
Chat...