Ngôn ngữ C là một trong những ngôn ngữ lập trình lâu đời nhất vẫn còn được dùng rộng rãi. Cài đặt C là bước đầu tiên để bạn bắt đầu viết chương trình. Bài này giới thiệu ngắn gọn về ngôn ngữ. Sau đó ta cài trình biên dịch trên ba hệ điều hành phổ biến và chạy chương trình Hello World đầu tiên.
Ngôn ngữ C là gì và vì sao nên học

C ra đời vào đầu thập niên 1970, gắn liền với việc viết hệ điều hành Unix. Từ đó đến nay, nhân của nhiều hệ điều hành vẫn được viết bằng C. Trình điều khiển thiết bị và hệ thống nhúng cũng vậy. Nhiều ngôn ngữ khác như C++, Java hay JavaScript cũng mượn cú pháp của nó.
Chúng tôi khuyên người mới học thử C vì nó buộc bạn hiểu máy tính hoạt động ra sao. Biến nằm ở đâu trong bộ nhớ? Chương trình được dịch thế nào?
Chuyện gì xảy ra khi bạn truy cập sai vùng nhớ? Đi qua C, bạn sẽ học các ngôn ngữ cấp cao hơn dễ dàng hơn. Đổi lại, C ít “bao bọc” lập trình viên, nên lỗi cũng dễ xảy ra hơn.
Trình biên dịch và quy trình chạy chương trình C

Máy tính không hiểu trực tiếp mã nguồn C. Bạn cần một trình biên dịch (compiler) để dịch tệp .c thành tệp thực thi. Quá trình gồm bốn bước chính: tiền xử lý các dòng #include, biên dịch thành mã assembly, dịch tiếp thành tệp đối tượng, rồi liên kết với thư viện để ra tệp chạy được. Bạn thường không phải làm riêng từng bước; một lệnh duy nhất là đủ.
Trình biên dịch phổ biến nhất là GCC, ngoài ra còn Clang và MSVC của Microsoft. Với người mới, chúng tôi gợi ý GCC vì nó miễn phí và chạy trên mọi hệ điều hành.
Cài đặt trên Windows

Cách dễ nhất là cài MSYS2 hoặc MinGW-w64 để có GCC. Sau khi cài, mở cửa sổ dòng lệnh MSYS2 và chạy lệnh cài gói công cụ.
pacman -S mingw-w64-ucrt-x86_64-gcc
gcc --version
Hãy thêm thư mục bin của GCC vào biến môi trường PATH để gọi được gcc từ bất kỳ cửa sổ dòng lệnh nào. Nếu quên bước này, bạn sẽ gặp thông báo “gcc is not recognized”. Đó là lỗi cài đặt phổ biến nhất trên Windows.
Cài đặt trên macOS và Linux

Trên macOS, mở Terminal và gõ xcode-select --install để cài bộ công cụ dòng lệnh của Apple, trong đó có Clang và lệnh gcc trỏ tới Clang. Trên Ubuntu hoặc Debian, bạn cài bằng sudo apt install build-essential. Trên Fedora, dùng sudo dnf install gcc.
# Ubuntu / Debian
sudo apt update
sudo apt install build-essential
gcc --version
Chương trình Hello World đầu tiên
Tạo tệp hello.c với nội dung sau bằng bất kỳ trình soạn thảo văn bản nào, chẳng hạn VS Code.
#include <stdio.h>
int main(void) {
printf("Xin chào, C!\n");
return 0;
}
Dòng #include <stdio.h> nạp thư viện nhập xuất chuẩn để dùng được printf. Hàm main là điểm bắt đầu của chương trình. Giá trị 0 trả về báo cho hệ điều hành biết chương trình kết thúc thành công. Ký tự \n xuống dòng.
Mở dòng lệnh, đi tới thư mục chứa tệp rồi biên dịch và chạy:
gcc hello.c -o hello
./hello
Trên Windows bạn chạy hello.exe hoặc gõ hello. Nếu thấy dòng chữ xuất hiện, môi trường của bạn đã sẵn sàng.
Các lỗi thường gặp ở buổi đầu
- Quên dấu chấm phẩy cuối câu lệnh thì trình biên dịch báo lỗi ở dòng kế tiếp. Nó không báo ở dòng thiếu.
- Viết sai tên tệp thư viện, ví dụ
stdiothay vìstdio.h. - Lưu tệp với đuôi
.c.txtdo Windows ẩn phần mở rộng. - Chạy
hellothay vì./hellotrên Linux và macOS.
Khi thông báo lỗi dài, hãy đọc từ lỗi đầu tiên. Nhiều lỗi phía sau chỉ là hệ quả của nó. Ngoài ra, bật cảnh báo bằng gcc -Wall sẽ giúp bạn bắt nhiều lỗi tiềm ẩn ngay từ đầu.
Bước tiếp theo
Khi môi trường đã chạy, bạn có thể học câu lệnh điều kiện if trong C để chương trình biết rẽ nhánh, rồi vòng lặp for trong C để lặp lại công việc. Phần con trỏ khó hơn nên hãy để sau, và bài con trỏ trong C sẽ dẫn bạn đi từng bước.
Chọn trình soạn thảo và cách làm việc
Bạn có thể viết C bằng Notepad. Nhưng trình soạn thảo có tô màu cú pháp giúp bạn phát hiện lỗi nhanh hơn. VS Code với tiện ích C/C++ là lựa chọn phổ biến.
Nó miễn phí và chạy trên cả ba hệ điều hành. Nếu thích môi trường trọn gói, Code::Blocks hoặc CLion cũng ổn, dù cài đặt nặng hơn.
Chúng tôi khuyên người mới biên dịch bằng dòng lệnh trước. Sau đó hãy dùng nút chạy của trình soạn thảo. Khi tự gõ lệnh, bạn thấy rõ chuyện gì xảy ra ở mỗi bước. Bạn cũng hiểu thông báo lỗi tốt hơn.
Một vài khái niệm bạn sẽ gặp sớm
Chương trình C được tổ chức thành các hàm, và hàm main là nơi chạy đầu tiên. Biến phải được khai báo kiểu trước khi dùng, ví dụ int cho số nguyên, double cho số thực, char cho một ký tự. Chuỗi trong C là mảng các ký tự kết thúc bằng ký tự đặc biệt \0, khác với nhiều ngôn ngữ hiện đại có kiểu chuỗi riêng. Đừng cố hiểu hết ngay; mỗi khái niệm sẽ có chỗ của nó khi bạn thực hành.
Nếu thấy mình bị lạc, hãy xem trang lộ trình học để biết nên đọc gì kế tiếp.
Tài liệu tham khảo chi tiết về thư viện chuẩn có tại cppreference.com. Hãy sửa dòng chữ trong Hello World, thêm vài lệnh printf và biên dịch lại nhiều lần; đó là cách làm quen với vòng lặp viết, dịch, chạy.



