Trong một bài viết CACM gần đây [1], các tác giả trình bày một triển khai cho các chức năng theo giai đoạn . Họ sử dụng thuật ngữ này như thể nó đã được biết đến và không có tài liệu tham khảo nào trông giống như một lời giới thiệu rõ ràng.
Họ đưa ra một lời giải thích ngắn (sự nhấn mạnh của tôi và số tham chiếu đã thay đổi; đó là 22 trong bản gốc)
Trong bối cảnh tạo chương trình, lập trình đa tầng (viết tắt là MSP, được đặt bởi Taha và Sheard [2] cho phép các lập trình viên trì hoãn việc đánh giá một biểu thức chương trình đến giai đoạn sau một cách rõ ràng (do đó, dàn dựng một biểu thức). Giai đoạn hiện tại hoạt động hiệu quả như một trình tạo mã bao gồm (và có thể thực thi) chương trình của giai đoạn tiếp theo.
Tuy nhiên, Taha và Sheard viết (nhấn mạnh của tôi):
Một chương trình nhiều giai đoạn là một chương trình liên quan đến việc tạo, biên dịch và thực thi mã, tất cả nằm trong cùng một quy trình. Ngôn ngữ nhiều giai đoạn thể hiện các chương trình nhiều giai đoạn. Dàn dựng, và do đó lập trình nhiều giai đoạn, giải quyết nhu cầu về các giải pháp cho mục đích chung mà không phải trả chi phí diễn giải theo thời gian.
Họ hơn là đi đến một số tài liệu tham khảo cho các tác phẩm cũ được cho là cho thấy dàn dựng có hiệu quả, điều này cho thấy khái niệm này thậm chí còn cũ hơn. Họ không đưa ra một tài liệu tham khảo cho chính thuật ngữ này.
Những tuyên bố này dường như là trực giao, nếu không mâu thuẫn; có lẽ những gì mà Boomf và Oderky viết là một ứng dụng của những gì Taha và Sheard đề xuất, nhưng có lẽ đó là một quan điểm khác về cùng một điều. Họ dường như đồng ý rằng một điểm quan trọng là các chương trình (viết lại) các phần của chính họ khi chạy, nhưng tôi không biết liệu đó có phải là một khả năng cần thiết và / hoặc đủ hay không.
Vì vậy, những gì được dàn dựng tương ứng là những diễn giải về dàn dựng trong bối cảnh này? Thuật ngữ này đến từ đâu?
- Phân đoạn mô-đun nhẹ: Cách tiếp cận thực dụng để tạo mã thời gian chạy và DSL được biên dịch bởi T. Rompf và M. Oderky (2012)
- MetaML và lập trình đa giai đoạn với các chú thích rõ ràng của W. Taha và T. Sheard (2000)
@generated function
s: julia.readthedocs.org/en/latest/manual/metaprogramming/ Lỗi