哪些编程语言支持热代码交换和/或沙箱技术?

9
我希望编写一个基于Web的MMO游戏,允许用户编写AI并将其作为游戏的一部分运行。我计划使用Html5进行图形处理,并希望它是基于Web的,以便可以从智能手机中访问。我需要找到一种编程语言,支持沙盒、并发、热代码交换和大型库以使事情更容易。
目前我的研究结果表明Erlang、Stackless Python和Lua等语言可以支持这些要求。欢迎提供任何帮助。

我会看看嵌入JavaScript。 - Michael Greene
2个回答

16

Erlang不支持沙箱,所以你可能不想使用它作为脚本语言。无论如何,Erlang并不是脚本编程的理想选择,所以这没关系。

但是,Erlang对于像这样的项目来说是一个很好的后端语言,基于个人经验,我强烈推荐使用它。

我认为Stackless也没有沙箱支持, 所以这也不在考虑范围之内。

另一方面,Lua明确支持沙箱,并且还有协程:http://lua-users.org/wiki/SandBoxes, http://lua-users.org/wiki/CoroutinesTutorial,所以我建议你使用它作为脚本语言。

Lua也非常容易嵌入,就像在这个简单的教程中看到的: http://heavycoder.com/tutorials/lua_embed.php (而且你甚至可以不用加载所有的库,因为你需要对它进行沙箱隔离)。


1
Erlang非常适合。只需确保用户向AI系统提交有效的DSL语言,并制定AI必须遵循的规则。AI不能在一秒钟内发送太多消息,并且必须回答有关存活的问题。为什么这不行呢? - FlinkmanSV
首先,如果他们正在使用DSL,则不是将Erlang作为嵌入式语言,而是DSL。问题陈述指出,他正在寻找要嵌入的语言,而不是编写语言。 - pib

7
我会选择Lua,因为它具有荒谬的可定制性和多功能性(如果您不喜欢其语法,可以将其更改为函数式或类似Python的语法)。正如前面的回答所说,您可以获得沙箱和强大的并发性。个人而言,我甚至不会考虑嵌入除Lua之外的任何东西; >。

然而,Lua缺乏扩展标准库,这就是Python大获全胜的地方 :/。


对于嵌入式语言而言,如果无需扩展标准库的功能,则它是完美的选择。尤其在像这种运行不可信代码的情况下,您希望尽可能地限制潜在的错误范围。对于一般用途的编程语言,我总是首选Python。 - pib
1
JavaScript、Forth 和 Lisp 是我考虑嵌入的其他语言,但我不确定是否有任何强有力的竞争对手能像 Lua 一样完成这样的任务... - pib

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接