3 điểm bởi GN⁺ 2024-07-01 | Chưa có bình luận nào. | Chia sẻ qua WhatsApp

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 elseif

  • Có thể dùng elseif để 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.

Chưa có bình luận nào.