是否可以集成Python(和/或Perl)和Ruby?我看过http://www.goto.info.waseda.ac.jp/~fukusima/ruby/python/doc/和http://code.google.com/p/ruby-perl/,但它们看起来都已经过时了。
有人为Python的C API生成了Ruby接口吗?
编辑:根据http://wiki.python.org/moin/IntegratingPythonWithOtherLanguages,Python可以与许多其他语言集成。但是,该列表不包括Ruby。
答案 0 :(得分:7)
我的学校(佐治亚理工学院),以及Bryn Mawr和Microsoft Research,正在开展一个名为Pyjama的项目。基本上,它使用Microsoft DLR允许您自由地混合Python和Ruby。我没试过,但听起来很酷。
这是网站上的一个例子。您以“Python模式”进入该类。然后编译,然后在“Ruby模式”下运行命令。
class PythonClass:
def hello(self, value):
print "Python says hello to", value
pc = python_class().new
pc.hello "Ruby"
产生“Python向Ruby问好”。
答案 1 :(得分:4)
集成动态语言是Parrot项目的目标之一。它是动态语言编译器所针对的虚拟机。编译到同一个虚拟机后,无论对象的来源如何,您都应该能够使用任何语言的“对象”形式。
然而,目前的问题是稳定虚拟机并完成大部分完成的编译器。然而,这是很长一段时间的状态。 :)
答案 2 :(得分:2)
它可能是可能的,但不是很实用。将所需的模块从一个模块移植到另一个模块将比将一个解释器嵌入另一个模块中要容易得多。
如果您绝对必须在项目中使用这两种语言,那么最好的选择可能是Jython和Jruby,或IronPython和IronRuby的组合。我不确定你是否可以让他们互相交谈,但至少你可以将它们托管在同一个虚拟机上。
答案 3 :(得分:2)
对于一个研究项目,我想使用可用于Python的神话般的matplotlib。我还发现你提到的那个库。然而,它看起来并不像流行和经过充分测试的东西。所以我决定编写使用纯Python生成图形的脚本,并通过popen从Ruby调用它。这对我很有用。
答案 4 :(得分:2)
您可以在C中编写Ruby的扩展名。
因此,如果Python有一个C API,你可以为使用这个API的Ruby编写一个C扩展。
我对Python API一无所知或者想要集成多大部分,但如果它不是太大,这可能(可能)为您提供从Ruby运行Python代码的方法。
答案 5 :(得分:1)
Facebook使用的另一种策略是通过Thrift公开API。您定义轻量级服务API,RPC是进程间的。