除了 Erlang 之外,其他语言是否能够向正在运行的实例发送代码?
我刚刚了解到 Erlang 可以使用“nl”命令将代码和模块远程加载到集群的所有实例上。其他语言可以做到这一点吗?
I just learnt that Erlang can remote load code and modules onto all instances of a cluster by using the "nl" command. Can any other languages do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
从技术上讲,任何 lisp 方言都可以做到这一点。由于 lisp 中的“代码就是数据”,将一些代码传递到不同的盒子上并进行“评估”就可以完成这项工作。 SLIME 在某种程度上通过使用套接字的远程复制来做到这一点。
Technically any of the lisp dialects could do it. Since 'code is data' in lisp, passing some code onto a different box and 'eval'-ing it would do the job. SLIME does this to some extent via remote repl using sockets.
你可以在java中编写一个类似于erlang中的codeloader的ClassLoader。 Java 类加载器有很多隔离性,因此它可能会稍微复杂一些(但是如果您利用它来发挥自己的优势而不是将其视为敌人,则可以利用它做一些好事)。
类加载器很容易编写,但 java 并没有提供与 erlang 相同的类加载器。 Java 也没有 erlang 那样的集群工具,所以这并不特别令人惊讶。
You can write a ClassLoader in java similar to the codeloader in erlang. Java ClassLoaders have a lot of isolation, so it can be a bit more complicated (but you could do some nice things with this if you use it to your advantage rather than think of it as the enemy).
ClassLoaders are easy to write, but java doesn't ship with one that does the same kinds of things erlang does. Java also doesn't have the clustering tools erlang does, so it's not particularly surprising.
理论上纯函数式语言应该有这种可能性,但到目前为止我也只听说过 Erlang。
In theory pure functional languages should have such possibility but till this moment I've heard only about Erlang too.
我不知道,但应该可以用 Python、Perl 或 Lisp 等动态语言来实现它。
None that I know, but it should be possible to implement it in dynamic languages such as Python, Perl or Lisp.