-1

基本上,我很好奇(肯定是一件危险的事情)哪种语言或哪些语言允许您动态构建代码块以供以后执行。

我查看了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();
}
4

1 回答 1

2

“执行动态构造的代码块”与“元编程”不同。

执行动态代码块的能力很容易检测:该语言具有“eval”之类的功能(如您的示例中所示)。

“元编程”是一个程序操纵其他程序(有时应用于自身)的能力。它不一定是编程语言的属性;它可以只是一组大量的设施,这些设施恰好以某种语言实现,旨在支持这些活动,例如程序转换工具。由语言特性直接实现的元编程通常缺乏完全的通用性;你可以做语言设计师决定让你做的事情,仅此而已。(尝试在大多数存在的“反射”语言中重命名变量)。这就是更通用的工具更有效的地方。它不一定有语言设计师施加的限制。

于 2013-10-22T18:13:03.337 回答