2010-03-10 12 views
10

क्या पाइथन (और/या पर्ल) और रूबी को एकीकृत करना संभव होगा? मैंने http://www.goto.info.waseda.ac.jp/~fukusima/ruby/python/doc/ और http://code.google.com/p/ruby-perl/ पर देखा है, लेकिन वे दोनों पुराने हैं।रुबी के साथ पाइथन या पर्ल को एकीकृत करना संभव होगा?

क्या किसी ने पाइथन के सी एपीआई के लिए रूबी इंटरफ़ेस उत्पन्न किया है?

संपादित करें: http://wiki.python.org/moin/IntegratingPythonWithOtherLanguages के अनुसार पायथन को कई अन्य भाषाओं के साथ एकीकृत किया जा सकता है। हालांकि, उस सूची में रूबी शामिल नहीं है।

+2

आप वास्तव में क्या करना चाहते हैं? यह ऐसी समस्या की तरह लगता है जो किसी अन्य कोण से बेहतर संपर्क किया जा सकता है (जैसे एक भाषा में लापता लाइब्रेरी को पोर्ट करना)। – bta

उत्तर

4

गतिशील भाषाओं को एकीकृत करना Parrot प्रोजेक्ट के लक्ष्यों में से एक है। यह एक आभासी मशीन है जो गतिशील भाषा संकलक लक्ष्य है। एक बार वर्चुअल मशीन पर संकलित होने के बाद, आप किसी ऑब्जेक्ट के स्रोत से कोई फर्क नहीं पड़ता कि किसी भी भाषा में "ऑब्जेक्ट" फ़ॉर्म का उपयोग करने में सक्षम होना चाहिए।

हालांकि, इस समय मुद्दा वर्चुअल मशीन को स्थिर कर रहा है और अधिकतर किए गए कंपाइलरों को खत्म कर रहा है। हालांकि, यह लंबे समय तक राज्य रहा है। :)

+5

मज़ा ट्रिविया: तोता पाइथन और पर्ल के विलय की घोषणा करते हुए अप्रैल फूल दिवस के मजाक के रूप में शुरू हुई। –

2

यह संभवतः संभवतः, लेकिन बहुत व्यावहारिक नहीं हो सकता है। पोर्ट को बंद करना काफी आसान होगा, जो आपको मॉड्यूल को एक से दूसरे में चाहिए, दूसरे के भीतर दुभाषियों में से एक को एम्बेड करना होगा।

यदि आपको पूरी तरह से एक परियोजना में दोनों भाषाओं का उपयोग करना है, तो आपका सबसे अच्छा विकल्प शायद ज्योथन और जुर्बी, या आयरनपीथन और आयरन रूबी का संयोजन होगा। मुझे यकीन नहीं है कि क्या आप उन्हें एक दूसरे से बात करने के लिए मिल सकते हैं, लेकिन कम से कम आप उन्हें एक ही वर्चुअल मशीन पर होस्ट कर सकते हैं।

2

एक शोध परियोजना के लिए मैं पाइथन के लिए उपलब्ध शानदार matplotlib का उपयोग करना चाहता था। मैंने उस लाइब्रेरी को भी पाया जिसे आपने संदर्भित किया था। हालांकि, यह कुछ लोकप्रिय और अच्छी तरह से परीक्षण की तरह दिखता नहीं है। इसलिए मैंने स्क्रिप्ट लिखने का फैसला किया जो शुद्ध पायथन का उपयोग करके ग्राफ उत्पन्न करता है और इसे रूबे से पॉपन के माध्यम से बुलाता है। यह मेरे लिए बहुत अच्छा काम किया।

+0

मैं मासाकी फुकुशिमा की रूबी/पायथन परियोजना की तरह कुछ और ढूंढ रहा था, लेकिन यह एक अच्छा विचार है। धन्यवाद। – Yktula

7

मेरा स्कूल (जॉर्जिया टेक), ब्रायन मॉवर और माइक्रोसॉफ्ट रिसर्च के साथ, अब एक परियोजना कर रहे हैं जिसे Pyjama कहा जाता है। असल में, यह माइक्रोसॉफ्ट डीएलआर का उपयोग करता है ताकि आप आसानी से पाइथन और रूबी को मिला सकें। मैंने कोशिश नहीं की है, लेकिन यह बहुत अच्छा लगता है।

यहां वेबसाइट से एक उदाहरण दिया गया है। आप "पायथन मोड" में कक्षा दर्ज करते हैं। फिर यह संकलित हो जाता है, और आप "रूबी मोड" में कमांड चलाते हैं।

class PythonClass: 
    def hello(self, value): 
     print "Python says hello to", value 

pc = python_class().new 
pc.hello "Ruby" 

जो "पाइथन रूबी को हैलो कहते हैं" उत्पन्न करता है।

+0

यह दिलचस्प है।मैंने माइक्रोसॉफ्ट के डीएलआर और मोनो दोनों को क्रॉस-भाषा इंटरऑपरेबिलिटी के लिए सक्षम थे, लेकिन मैंने ऐसा प्रोजेक्ट नहीं देखा जो इसका उपयोग करता है। धन्यवाद। – Yktula

2

आप सी

में रूबी के लिए एक्सटेंशन लिख सकते हैं

तो, अगर अजगर एक सी एपीआई है, तो आप जो इस API का उपयोग करता रूबी के लिए एक सी विस्तार लिख सकते हैं।

मुझे पाइथन एपीआई के बारे में कुछ भी पता नहीं है या आप कितने बड़े टुकड़े को एकीकृत करना चाहते हैं, लेकिन यदि यह बहुत बड़ा नहीं है, तो यह संभवतः आपको रूबी से पाइथन कोड चलाने का एक तरीका दे सकता है।

+1

रूबी के लिए सी एक्सटेंशन का उपयोग करने के लिए आपको रूबी एफएफआई प्रोजेक्ट का उपयोग करना होगा - http://github.com/ffi/ffi –

+2

एफएफआई एक आवश्यकता नहीं है, लेकिन यह अन्य गैर एमआरआई रूबी कार्यान्वयन के साथ एकीकरण करता है। –

+0

रूबी/डीएल की तुलना में इसका उपयोग करना अधिक सरल है। मैं इसे बाद में पायथन के सी एपीआई के साथ करने की कोशिश करना चाहता हूं। धन्यवाद। – Yktula

1

फेसबुक द्वारा उपयोग की जाने वाली एक और रणनीति, Thrift के माध्यम से एपीआई का पर्दाफाश करना है। आप हल्के सेवा एपीआई को परिभाषित करते हैं और आरपीसी इंटर-प्रोसेस होते हैं।

संबंधित मुद्दे