基本上,我很好奇(肯定是危险的)什么语言允许你动态地构建一个代码块以便稍后执行。
我看过http://en.wikipedia.org/wiki/Self-modifying_code 我没找到我在那里寻找的东西。
这不是辩论,我不是在问哪一个比其他人好。 我只想知道哪些语言包含此编程功能或类似的东西。如果可以的话,我想看一些示例代码来说明这个功能。
我之前在ASP.NET中做过类似的事情,动态构建了要发送到要执行的页面的javascript代码,或者C#生成SQL查询,但从未在同一种语言中使用过。即C#生成C#。
这是一个它可能是什么样子的例子(我用C#/ Javaish语言编写)
/表示代码块转义序列
CodeBlock codeblock = new CodeBlock();
codeblock+= / print("interesting "); int x = 0; /
for(int i=0; i++; i<10)
{
codeblock+= / for(int i=0; i++; i<10) { x++; Canvas.Draw(new line(x,x+50); } /
}
executionMethod(codeblock);
public void executionMethod(ExecutableCode block)
{
block.exectute();
}
答案 0 :(得分:2)
“执行动态构造的代码块”与“元编程”不同。
执行动态代码块的功能很容易识别:语言具有“eval”等功能(如您的示例所示)。
“元编程”是指一个程序操纵其他程序(有时适用于自身)的能力。它不一定是编程语言的属性;它可以简单地是一组大量的设施,恰好以某种语言实现,旨在支持这些活动,例如程序转换工具。由语言特征直接实现的元编程通常缺乏完整的通用性;你可以做langauge设计师决定让你做的事情,而不是更多。 (尝试在大多数存在的“反射”语言中重命名变量)。这就是更通用的工具更有效的地方;它不一定受到语言设计师的限制。