-
Những điểm cần cải thiện hiển nhiên của C
- Tiêu chuẩn C23: Ngôn ngữ C được cải tiến định kỳ và hiện đã đạt đến C23. Tuy nhiên, vẫn còn những vấn đề chưa được giải quyết.
- Nỗ lực của cộng đồng Dlang: Cộng đồng đã tích hợp trình biên dịch C (ImportC) vào trình biên dịch của ngôn ngữ lập trình D, qua đó tạo cơ hội để giải quyết những vấn đề này.
-
Đánh giá biểu thức hằng
- Vấn đề: C có thể tính các biểu thức đơn giản tại thời điểm biên dịch, nhưng không thể thực thi hàm.
- Giải pháp của ImportC: ImportC cho phép thực thi hàm tại thời điểm biên dịch để vượt qua hạn chế này.
-
Kiểm thử đơn vị tại thời điểm biên dịch
- Vấn đề trong C: Kiểm thử đơn vị trong mã C cần một mục tiêu build riêng, gây phiền toái.
- Ưu điểm của ImportC: ImportC cho phép dễ dàng chạy kiểm thử đơn vị thông qua việc đánh giá hàm tại thời điểm biên dịch.
-
Tham chiếu tiến cho khai báo
- Hạn chế của C: C nhạy cảm với thứ tự khai báo nên không cho phép tham chiếu tiến.
- Ưu điểm của ImportC: ImportC không bị ràng buộc bởi thứ tự khai báo và cho phép các khai báo toàn cục theo thứ tự tùy ý.
-
Nhập khai báo
- Vấn đề của cách làm hiện tại: Có sự bất tiện khi phải viết tệp
.h cho từng mô-đun bên ngoài.
- Giải pháp của ImportC: ImportC có thể nhập khai báo mà không cần tệp
.h, nên hiệu quả hơn.
-
Tài liệu tham khảo
- Tài liệu ImportC: Cung cấp thông tin chi tiết về ImportC.
- Tài liệu ngôn ngữ D: Cung cấp thêm thông tin về ngôn ngữ D.
1 bình luận
Ý kiến trên Hacker News
Các tệp header của ngôn ngữ C rất tốt ở chỗ có thể phân biệt rõ phần công khai và không công khai, giao diện và phần hiện thực. Có thể dễ dàng hiểu cách dùng thư viện thông qua tệp
.h.hnên trông khác với tệp.c.c, nhưng như vậy sẽ khiến giao diện khó đọc hơnCó ý kiến cho rằng trong C nên có khả năng thực thi hàm tại thời điểm biên dịch, nhưng các hàm có thời gian chạy dài có thể gây vấn đề
busybeaverCó người muốn biết cách giải quyết các vấn đề như đánh giá biểu thức hằng, unit test tại thời điểm biên dịch, tham chiếu xuôi của khai báo, và import khai báo
Việc viết unit test cho mã C là khả thi với một hệ thống build tốt và một ít boilerplate
npyKhi việc đánh giá biểu thức hằng trở nên phức tạp, tốc độ của trình biên dịch có thể giảm và có thể sẽ cần một VM
Unit test tại thời điểm biên dịch lấy đi quyền kiểm soát của lập trình viên và đòi hỏi các thủ tục không cần thiết để hoàn thành công việc
Có thảo luận về việc liệu định nghĩa hàm theo kiểu "từ trên xuống" có tốt hơn hay không
Những tính năng được mong muốn bổ sung vào C
defercủa Go và ZigCách hiện thực đơn giản của C là một ưu điểm, và việc mở rộng phạm vi quá lớn không phải là ý tưởng hay
Lý do vì sao định nghĩa hàm từ trên xuống có thể tốt hơn