【问题标题】:Which programming languages support hot code swapping and/or sandboxing?哪些编程语言支持热代码交换和/或沙盒?
【发布时间】:2011-01-07 13:29:31
【问题描述】:

我想编写一个基于网络的 MMO 游戏,允许用户编写 AI 并将其作为游戏的一部分运行。我计划将 Html5 用于图形,并希望它基于网络,以便可以从智能手机访问。我需要找到一种支持沙盒、并发、热代码交换和大型库的编程语言,以使事情变得更容易。

目前我的研究对象是 Erlang、Stackless Python 和 Lua。任何帮助表示赞赏。

【问题讨论】:

  • 我会看看嵌入 JavaScript。

标签: erlang lua sandbox stackless python-stackless


【解决方案1】:

Erlang 支持沙盒,所以您可能不想使用它,至少对于您的脚本语言。 Erlang 无论如何都不适合编写脚本,所以这可能没问题。

Erlang 为这样的项目提供良好的后端语言,但是,我强烈推荐个人经验。

我认为 Stackless 也不支持沙盒,所以这也可能不在列表中。

另一方面,Lua 明确支持沙盒,并且也有协程:http://lua-users.org/wiki/SandBoxeshttp://lua-users.org/wiki/CoroutinesTutorial,所以我建议您将其用于您的脚本语言。

Lua 也非常容易嵌入,正如在这个小教程中看到的那样:http://heavycoder.com/tutorials/lua_embed.php(你甚至可以在不加载所有库的情况下逃脱,因为你无论如何都想对它进行沙盒处理)。

【讨论】:

  • Erlang 会很好用。只需确保用户仅向 AI 系统提交有效的 dsl 语言即可。并制定人工智能必须遵循的规则。 AI不能在一秒钟内发送很多消息,并且必须回答活生生的问题。为什么那行不通?
  • 好吧,对于初学者来说,如果他们使用的是 DSL,那么它不是作为嵌入式语言的 Erlang,而是一种 DSL。该问题表明他正在寻找找到一种语言来嵌入,而不是编写一种语言。
【解决方案2】:

我也会选择 Lua,因为它具有荒谬的可定制性和通用性(如果您不喜欢它的语法,您可以 change it 使用函数式或类似 Python 的语法)。如上一个答案所述,您拥有沙盒和强大的并发性。我个人从没想过嵌入 Lua 以外的任何东西;>.

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

【讨论】:

  • 对于不需要扩展标准库的嵌入式语言,它是完美的。尤其是在这种运行不受信任的代码的情况下,您希望尽可能地限制潜在的破坏区域。对于通用编程语言,Python 始终是我所追求的,这是肯定的。
  • JavaScript、Forth 和 Lisp 是我考虑嵌入的其他语言之一,但我不确定 Lua 是否有强大的竞争对手来完成这样的任务......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-09
  • 1970-01-01
相关资源
最近更新 更多