【发布时间】:2013-06-10 08:08:47
【问题描述】:
我目前正在试验自我复制代码。出于对语言的热爱,我想用 javascript 编写它。
我正在编写一个编写函数代码的程序,该代码又编写函数自己的代码等等。基本上,所需的过程是这样的:
- 我手动创建了一个函数,它返回代码(包括一些随机性)和一个数值(提出的问题解决方案)。
- 我多次调用此函数,评估每个返回函数的结果,然后继续该过程,直到我的代码足以满足我的要求。
现在,我一直被告知如何eval is evil,如何never to use it 等等。但是,对于我的特定用例,Function 构造函数或 eval 似乎正是我正在寻找的。p>
所以,简而言之,问题是:
在我的案例中,eval/Function 构造函数确实是最好的工具吗?如果是这样,我想我会使用 Function 构造函数来确定执行代码的范围,但是有没有办法真正限制它访问全局范围?另外,在我的案例中,评估使用的一些好的做法是什么?
【问题讨论】:
-
注意:我没有将其标记为遗传编程,因为问题严格与使用 eval/Function ctor 的语言特定实践有关,
-
为了做你描述的事情,
eval()和Function()构造函数是你唯一的工具。只有在不必要或不正确使用时它们才是邪恶的。 -
受控环境怎么样?我知道我可以将 javascript 集成到另一种语言中并将其用于该语言内的脚本,有没有办法在 javascript VM 中限定 javascript VM 以防止范围违规? (我没有使用浏览器)
-
嗯,你可以使用 Java 中的 Rhino,但这有点痛苦。如果你正在做一个研究项目,我不明白为什么保护全球范围很重要,而且这可能是不可能的。
-
@EvaCohen 确定:en.wikipedia.org/wiki/Genetic_programming
标签: javascript