Trong lộ trình trở thành một kỹ sư nhúng chuyên nghiệp, ngôn ngữ C chính là “ngôn ngữ mẹ” mà bất kỳ ai cũng cần phải làm chủ. Bài học hôm nay sẽ giúp các bạn hiểu rõ tại sao C lại quan trọng đến vậy, quy trình từ mã nguồn đến khi chạy trên phần cứng diễn ra như thế nào, và những viên gạch đầu tiên về kiểu dữ liệu.
🎯 Mục tiêu học tập
- Nắm được lịch sử, ưu điểm và ứng dụng thực tế của ngôn ngữ C trong hệ thống nhúng.
- Hiểu rõ quy trình biên dịch (Compilation Process) 5 giai đoạn.
- Phân biệt được IDE, Text Editor và Compiler.
- Làm chủ các kiểu dữ liệu cơ bản và vùng giá trị của chúng.
💡 Tài nguyên học tập bổ sung:
- Web luyện code miễn phí: HackerRank, LeetCode.
- Khóa học miễn phí: Coursera, edX, hoặc FreeCodeCamp.
1. Tổng quan về ngôn ngữ lập trình C
C là một ngôn ngữ lập trình cấp trung, đơn giản và cực kỳ linh hoạt. Nó được coi là nền tảng cho nhiều ngôn ngữ hiện đại như C++, Java, Python (Interpreter). Đối với lập trình nhúng, C là sự lựa chọn tối ưu nhờ khả năng tương tác trực tiếp với phần cứng.
Lịch sử phát triển
Được phát triển bởi Dennis M. Ritchie tại Bell Labs vào năm 1972 để xây dựng hệ điều hành UNIX. Năm 1978, tiêu chuẩn K&R ra đời, đánh dấu bước ngoặt đưa C trở thành ngôn ngữ phổ biến nhất thế giới.
Ưu và Nhược điểm
- Ưu điểm: Tính linh động cao (portable), hiệu suất nhanh, có cấu trúc mô-đun dễ gỡ lỗi và bảo trì.
- Nhược điểm: Không có tính năng hướng đối tượng (OOP), không kiểm tra lỗi nghiêm ngặt trong thời gian chạy (runtime), dễ gây lỗi bộ nhớ nếu không quản lý tốt.
2. Quy trình biên dịch (Compilation Process)

Máy tính chỉ hiểu ngôn ngữ máy (0 và 1). Quy trình chuyển đổi từ mã nguồn C sang tệp thực thi bao gồm 5 giai đoạn chính:
- Tiền xử lý (Pre-processor): Xử lý các chỉ thị bắt đầu bằng dấu
# (như #include, #define), loại bỏ chú thích (comment).
- Dịch sang Assembly (Compiler): Chuyển mã C sang ngôn ngữ bậc thấp Assembly.
- Dịch sang mã máy (Assembler): Chuyển Assembly sang mã máy 0 và 1, tạo ra các tệp Object (
.o hoặc .obj).
- Liên kết (Linker): Kết nối các tệp Object và thư viện lại thành một chương trình thực thi duy nhất.
- Thực thi (Loader): Nạp chương trình từ bộ nhớ ngoài vào RAM để CPU xử lý.

3. Thiết lập môi trường phát triển
Những khái niệm cơ bản:
- IDE (Integrated Development Environment) là môi trường tích hợp dùng để viết code để phát triển ứng dụng.
- Text Editor là một trình soạn thảo, không tích hợp sẵn trình biên dịch hoặc trình thông dịch bên trong nó, nghĩa là muốn chạy được ứng dụng, bạn phải dùng riêng compiler bên ngoài.
- Compiler hay còn gọi là Trình biên dịch, là một chương trình có nhiệm vụ dịch các các code của một ngôn ngữ lập trình tương ứng thành một chương trình tương đương của ngôn ngữ cấp thấp hơn (thường là ngôn ngữ máy).
Để bắt đầu lập trình, bạn cần cài đặt các công cụ hỗ trợ (IDE/Text Editor):
- Dev-C++: Nhẹ, phù hợp cho người mới bắt đầu.
- Visual Studio Code: Mạnh mẽ, nhiều extension hỗ trợ, phổ biến trong môi trường chuyên nghiệp.
- Code::Blocks: Một IDE mã nguồn mở ổn định cho C/C++.
4. Kiểu dữ liệu trong C
Kiểu dữ liệu xác định kích thước bộ nhớ và loại giá trị mà một biến có thể lưu trữ. Dưới đây là bảng các kiểu dữ liệu cơ bản (kiến trúc 32-bit):
| Kiểu |
Kích thước |
Vùng giá trị |
int |
4 byte |
-2,147,483,648 đến 2,147,483,647 |
char |
1 byte |
-128 đến 127 |
float |
4 byte |
1.2E-38 đến 3.4E+38 (6 chữ số thập phân) |
double |
8 byte |
2.3E-308 đến 1.7E+308 (15 chữ số thập phân) |
Ngoài ra, C còn có các kiểu dữ liệu khác như:
- Kiểu dữ liệu có nguồn gốc (Derived): Con trỏ (Pointer), Mảng (Array), Struct, Union.
- Kiểu dữ liệu liệt kê (Enum): Định nghĩa các hằng số nguyên rời rạc.
- Kiểu trống (Void): Chỉ ra rằng không có giá trị nào.
📝 Tóm tắt: Ngôn ngữ C là nền tảng của hệ thống nhúng nhờ hiệu năng cao và khả năng can thiệp phần cứng. Việc hiểu quy trình biên dịch giúp bạn gỡ lỗi tốt hơn, trong khi nắm vững kiểu dữ liệu giúp tối ưu hóa bộ nhớ cho các vi điều khiển có tài nguyên hạn chế.
Gợi ý bài tiếp theo: Buổi 1 (Tiếp theo) – Biến, Hằng, Toán tử và Cấu trúc điều khiển.
Người thực hiện: Nguyễn Đình Tuấn
Email: tuannguyen.aiot@gmail.com | Website: aiots.vn