2011-04-20 21 views
7

मैं एक नौसिखिया प्रोग्रामर हूं जो मुख्य रूप से जावा का उपयोग करता है। हाल ही में मुझे रूबी में दिलचस्पी है, और जब मैं एक आईडीई डाउनलोड करने गया, तो मुझे यह जानकर आश्चर्य हुआ कि भाषा का कोई भी कार्यान्वयन या दुभाषिया नहीं है। मैं इस मुद्दे पर शोध करने की कोशिश कर रहा हूं, लेकिन मुझे वास्तव में समझ में नहीं आता कि एक भाषा कैसे बनाई जाती है, यह जानने के लिए कि क्या देखना है।अलग रूबी कार्यान्वयन क्यों हैं?

एक भाषा के लिए एकाधिक दुभाषियों के लिए यह कैसे संभव है? क्या इसका मतलब यह है कि उनके बीच महत्वपूर्ण अंतर हैं, और प्रोग्रामर के लिए इसका क्या अर्थ है? कृपया मुझे क्षमा करें अगर यह पहली जगह में एक गुमराह सवाल है!

+8

* अधिकांश * भाषाओं, [जावा सहित] [http://en.wikipedia.org/wiki/Blackdown_Java) के कई कार्यान्वयन हैं। – meagar

+1

सिर्फ भाषा नहीं। लगभग किसी भी प्रकार का सॉफ़्टवेयर: वेब ब्राउजर, जीएनयू एमएक्स बनाम xemacs बनाम xyzzy, एक ही शैल भाषा साझा करने वाले विभिन्न टर्मिनल .... – sawa

+0

@meagar उस उत्तर के लिए धन्यवाद, मुझे संदेह था कि यह मामला था, लेकिन ' यकीन नहीं है! – cotroxell

उत्तर

7

क्योंकि विभिन्न भाषा कार्यान्वयनकर्ता किसी विशेष क्षेत्र पर ध्यान केंद्रित करने का निर्णय लेते हैं। उदाहरण के लिए, जावा रनटाइम (जेआरबीई) के साथ संगतता, या जेआईटी (रूबिनीस) के साथ प्रयोग, उद्यम में रूबी को लक्षित करें (आरईई) इत्यादि ...

यह रूबी के लिए अद्वितीय नहीं है, यह है एक भाषा में स्वस्थ, यदि कोई विशेष समूह किसी निश्चित क्षेत्र में भाषा के साथ संभावित रूप से देखता है, तो वह उस समुदाय के भीतर विकास को बढ़ावा देने में मदद कर सकता है।

1

यह लगभग सभी भाषाएं हैं जिनमें जावा (उदा। ओरेकल जावा, अपाचे हार्मनी, ओपनजेडीके) सहित कई कार्यान्वयन हैं। लेकिन यदि आप रूबी के डिफ़ॉल्ट कार्यान्वयन चाहते हैं तो आप निम्न का उपयोग कर सकते हैं: default ruby implementation using YARV

लेकिन अन्यथा, विभिन्न कार्यान्वयन देखते हैं आप, जावा वी एम के साथ JRuby, और IronRuby साथ के रूप में एक मौजूदा ढांचे पर गहरे लाल रंग का उपयोग करने के लिए के रूप में एक मौजूदा मंच या उद्योग में आवेदन के लिए पूरा करने में सक्षम होने के लिए।

4

अधिकांश भाषाओं में कई कार्यान्वयन होते हैं। यह पता चला है कि ट्रेडऑफ हैं जिन्हें हमेशा एक परियोजना के साथ काम नहीं किया जा सकता है।

  • मंच एकता
    करीब आप एक मंच के साथ एकीकृत, आगे आप दूसरों पर एकीकरण से कर रहे हैं। तो बनाने के लिए एक मौलिक विकल्प है: विशेषज्ञता या सामान्यता

  • स्थिरता
    यदि आप अस्थिरता को स्वीकार करने के इच्छुक हैं, तो अधिक महत्वाकांक्षी लक्ष्यों का पीछा किया जा सकता है। तो बनाने के लिए एक मौलिक पसंद विकल्प है: विकास या स्थिरता

  • प्रबंधन टीम
    किसी दिए गए प्रोजेक्ट में इतना प्रबंधन के लिए केवल एक कमरा है। एक नया प्रबंधन स्थान बनाने का एकमात्र तरीका एक नई परियोजना बनाना है। तो बनाने के लिए एक मौलिक विकल्प है: आपकी परियोजना या मेरी परियोजना। एक अर्थ में, यह "मास्टर कारण" है, क्योंकि विभिन्न प्रबंधक विभिन्न प्राथमिकताओं का चयन करेंगे।

+0

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

+0

हां, हर भाषा में एक संबद्ध सिस्टम इंटरफेस है। यदि यह जावा की तरह पूरी तरह सामान्य है, तो यह सभी ग्राहकों पर सीमित और असफल हो जाता है लेकिन यह सर्वर (जावा के रूप में) सर्वर पर बहुत सफल हो सकता है। यदि यह एक दिशा में पूर्ण और झुका हुआ है (जैसे रूबी यूनिक्स की ओर है) तो यह ग्राहकों पर भी सफल हो सकता है, हालांकि इस मामले में रूबी समृद्ध ग्राहक के लिए बहुत देर हो गई। मैं भाषाओं बनाम जीयूआई-एकीकरण के बारे में एक पूरी किताब लिख सकता हूं। यह एक एसओ टिप्पणी के लिए एक विषय बहुत बड़ा है। – DigitalRoss