2010-03-10 58 views
10

是否可以集成Python(和/或Perl)和Ruby?我看过http://www.goto.info.waseda.ac.jp/~fukusima/ruby/python/doc/http://code.google.com/p/ruby-perl/,但他们都显得过时了。是否可以将Python或Perl与Ruby集成?

有人为Python的C API生成了一个Ruby接口吗?

编辑:根据http://wiki.python.org/moin/IntegratingPythonWithOtherLanguages,Python可以与许多其他语言集成。但是,该列表不包括Ruby。

+2

你究竟想要做什么?这听起来像是一个问题,可能更好地从另一个角度来处理(例如移植一种语言中缺少的库)。 – bta 2010-03-15 19:54:16

回答

4

集成动态语言是Parrot项目的目标之一。它是动态语言编译器所针对的虚拟机器。一旦编译到同一个虚拟机上,无论对象的来源如何,您都应该能够以任何语言使用“对象”形式。

但是,目前的问题是稳定虚拟机并完成主要完成的编译器。然而,这是很长一段时间的状态。 :)

+5

有趣的琐事:鹦鹉最初是愚人节玩笑,宣布合并Python和Perl。 – 2011-08-09 00:01:10

2

它可能是可能的,但不是很实际。将一个需要的模块从一个模块移植到另一个模块比将另一个解释器嵌入另一个模块要容易得多。

如果您绝对必须在项目中使用这两种语言,最好的选择可能是Jython和Jruby,或IronPython和IronRuby的组合。我不确定是否可以让他们互相交流,但至少可以将他们托管在同一台虚拟机上。

2

对于一个研究项目,我想使用可用于Python的神话般的matplotlib。我也找到了你提到的那个库。但是,它看起来并不像流行和经过良好测试。所以我决定编写使用纯Python生成图表的脚本,并通过popen从Ruby中调用它。这对我来说非常有效。

+0

我正在寻找更像Masaki Fukushima的Ruby/Python项目,但这是一个好主意。谢谢。 – Yktula 2010-03-15 19:45:32

7

我的学校(乔治亚理工学院)与Bryn Mawr和微软研究院一起正在做一个项目,现在名为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致敬”。

+0

这很有趣。我曾听说微软的DLR和Mono都能够实现跨语言的互操作性,但我还没有看到过使用它的项目。谢谢。 – Yktula 2010-03-15 20:01:00

2

你可以写Ruby扩展在C.

所以,如果Python有一个C API,你可以写一个Ruby的C扩展使用这个API。

我对Python API一无所知,或者你想要整合多少块Python,但如果它不是太大,可能(可能)给你一种从Ruby运行Python代码的方法。

+1

要使用Ruby的C扩展,您必须使用Ruby FFI项目 - http://github.com/ffi/ffi – 2010-03-10 02:38:56

+2

ffi不是必需的,但它确实可以与其他非MRI ruby​​实现进行集成。 – 2010-03-15 22:06:11

+0

比Ruby/DL更直接。我想稍后用Python的C API来做这件事。谢谢。 – Yktula 2010-03-16 02:26:02

1

Facebook使用的另一种策略是通过Thrift公开API。您可以定义轻量级服务API,并且RPC是进程间的。

相关问题