在CACM的最新文章[1]中,作者提出了分阶段功能的实现。他们使用该术语好像它是众所周知的,并且所有参考文献似乎都不是显而易见的介绍。
他们给了一个简短的解释(重点是我的和参考编号已更改;原来是22)
在程序生成的上下文中,由Taha和Sheard [2]建立的多级编程(MSP,简称暂存)允许程序员显式地将程序表达式的求值延迟到较晚的阶段(因此,暂存一个表达式)。当前阶段有效地充当代码生成器,该代码生成器组成(并可能执行)下一阶段的程序。
但是,塔哈(Taha)和谢德(Sheard)写道(重点是我):
多阶段程序是一个涉及代码生成,编译和执行的程序,所有程序都在同一进程内。多阶段语言表示多阶段程序。暂存以及因此的多阶段编程可满足对通用解决方案的需求,而这些通用解决方案无需支付运行时的解释性开销。
然后,他们继续引用了一些较旧的作品,据称这些作品表明分期是有效的,这表明该概念更古老。他们没有为该术语本身提供参考。
这些陈述似乎是正交的,即使不是矛盾的。也许Rompf和Odersky写的是Taha和Sheard提出的应用,但也许是对同一件事的另一种看法。他们似乎同意,重要的一点是程序会在运行时重新编写其自身的部分,但是我不知道这是否是必要的和/或足够的能力。
那么,什么是分期分别在此背景下举办的解释?这个词从哪里来?
- 轻量级模块化分段: T. Rompf和M. Odersky(2012)的一种实用方法,用于生成运行时代码和编译DSL
- W. Taha和T.Sheard(2000)的带有显式注释的MetaML和多阶段编程
@generated function
S:julia.readthedocs.org/en/latest/manual/metaprogramming/...