2010-03-10 66 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是進程間的。

相關問題