Dự án cuối tuần: Vui đùa với ngôn ngữ C
- Ngôn ngữ C đơn giản nhưng mạnh mẽ, đủ để dễ dàng viết cả một hệ điều hành hoàn chỉnh
- Cú pháp ngắn gọn của C đã ảnh hưởng đến nhiều ngôn ngữ ra đời sau như Java, Go
- Nó cũng góp phần vào sự xuất hiện của nghệ thuật làm rối mã nguồn
Cuộc thi IOCCC
- Cuộc thi IOCCC là một ví dụ tiêu biểu của mã nguồn làm rối
- Các bài dự thi thường dùng macro tiền xử lý gây rối, định dạng phi logic, tên biến vô dụng, v.v.
- Những đoạn mã như vậy rất khó đọc, nhưng C vừa có thể dễ đọc vừa có thể gây hoang mang
Câu lệnh switch
- Câu lệnh
switch cũng như if hay for, không bắt buộc phải có dấu ngoặc nhọn
- Khi dùng không có ngoặc nhọn, nó chỉ có thể chứa một câu lệnh
- Về bản chất,
switch gần giống như một goto được tô vẽ lại
- Khởi tạo biến bên trong
switch có thể dẫn đến hành vi ngoài dự kiến
Nhãn case
- Nhãn
case không nhất thiết phải nằm ở cấp cao nhất trong khối switch
- Có thể dùng cùng điều kiện
if (0)
- Vẫn có thể hoạt động ngay cả khi không có câu lệnh
break
Kết hợp else và if
- Có thể dùng
else và if để thay thế câu lệnh switch
- Ngay cả khi không có ngoặc nhọn, vẫn có thể xử lý nhiều điều kiện
Phần mở rộng của GNU
- Có thể dùng toán tử
&& để lấy địa chỉ của nhãn rồi nhảy bằng goto
- Nhờ đó có thể thay thế câu lệnh
switch
Thay thế câu lệnh for
- Có thể triển khai vòng lặp bằng cách dùng nhãn trong phần khai báo biến
- Dù chỉ dành cho GCC, vẫn có thể viết mã rất độc đáo và gây rối chỉ bằng C
Kết luận
- C mang lại khả năng viết ra những đoạn mã cực kỳ độc đáo và gây rối
- Những đoạn mã này khó đọc, nhưng cũng cho thấy sức mạnh của ngôn ngữ C
Ý kiến của GN⁺
- Bài viết này cho thấy rất rõ tính độc đáo và độ phức tạp của ngôn ngữ C
- Hữu ích để khám phá nhiều khả năng ứng dụng khác nhau của C
- Khía cạnh mang tính nghệ thuật như làm rối mã nguồn cũng rất thú vị
- Các ví dụ tận dụng phần mở rộng của GNU rất độc đáo và sáng tạo
- Với người mới học C, nội dung này có thể hơi khó
Chưa có bình luận nào.