architecture समस बहुभाषी प्रोग्रामिंग: क्या कई भाषाओं के साथ एक अच्छा अभ्यास अभ्यास कर रहे हैं?




लेखकों द्वारा बहुभाषावाद की परिभाषा (9)

मैं एक ऐसे आवेदन के निर्माण पर विचार कर रहा हूं जो गतिशील भाषा (अजगर या रूबी) का मिश्रण है और संकलित भाषा और कुछ मदद की ज़रूरत है जो मुझे समझाने में मदद करती है कि यह एक अच्छा विचार है

मेरा विचार यह है कि मैं एक गतिशील भाषा का उपयोग बहुत जल्दी कोड लिखने के लिए कर सकता हूं, और फिर प्रदर्शन जटिल कोड को लागू करने के लिए सी / सी ++ जैसे संकलित भाषा में नीचे गिरता हूं।

मैं इस दृष्टिकोण के बहुत से लाभ देख सकता हूं:

  1. गतिशील भाषा में मुख्य रूप से कोडिंग द्वारा उत्पादकता में वृद्धि
  2. दोनों भाषाओं से पुस्तकालयों की उपलब्धता

लेकिन कुछ डाउनसाइड्स भी हैं:

  1. दो भाषाओं के बीच पुल को बनाए रखना
  2. एक की बजाय दो भाषाओं और भाषा / पुस्तकालय की बगों पर निर्भरता

इस दृष्टिकोण के अन्य पेशेवर / विपक्ष क्या हैं? क्या कोई इस बारे में किसी भी संसाधन और / या सर्वोत्तम अभ्यासों के बारे में जानता है?


मुझे लगता है कि यह एक अच्छा विचार है।

चूंकि अधिकांश (लगभग सभी?) ओएस सी या सी ++ में लिखे गए हैं, हर गतिशील या व्याख्या की गई भाषा कुछ स्तर पर होती है जो कम स्तर की सामग्री के लिए संकलित, अनुकूलित भाषा में वापस आती है।


जा, बिएन सुर, मैं फ्रंड यह वास्तव में अनदेदा मेरविगलीसा है बोआ सॉर्ट

मैं बिल्कुल मजाक कर रहा हूँ एक वेब डेवलपर रोज़ देखे बिना ऐसा करता है: जावा, जेएसपी, ईएल / ओजीएनएल, एचटीएमएल, सीएसएस, जावास्क्रिप्ट, एंट, एक्सएमएल, एक्सएसएलटी ...

मुझे लगता है कि बहुभाषी प्रोग्रामिंग प्राकृतिक, शक्तिशाली, कुशल और ठंडे से ज्यादा है। इसे सही तरीके से इस्तेमाल किया जाना है, हर भाषा की अधिकतम शक्ति को टैप करने के लिए, और अपनी टीम के अन्य लोगों को भ्रमित न करने के लिए।


आप पा सकते हैं कि आपको बाद के समय तक कोई प्रदर्शन महत्वपूर्ण सामग्री को लागू करने की आवश्यकता नहीं है। इसलिए, मैं इन प्रदर्शनों में से किसी के प्रवेश द्वार के खिलाफ कड़ी मेहनत करूंगा, जब तक आप वास्तव में यह नहीं जानते कि आपको यह करना है।

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

नहीं सभी प्रदर्शन समस्याओं के लिए आप एक निम्न स्तर की भाषा के लिए नीचे छोड़ने की आवश्यकता होगी, तो एक fligergee में पहले इसे प्रयास करें और निपटने, इससे पहले कि आप जल्दी से दूसरे के लिए कूद

सौभाग्य,


हाँ। कई प्रोग्राम एक उच्च-स्तरीय भाषा का मिश्रण है, जैसे पायथन या रूबी, और सी की तरह एक निम्न-स्तरीय भाषा। आपको कूड़ा-एकत्रित ओ ओ भाषा में कोडिंग तर्क का लाभ मिलता है और अभी भी तंग इनर लूप में रजिस्टरों को मैन्युअल रूप से प्रबंधित कर सकता है ।


मैं आपके प्रश्न को फिर से पढ़ता हूं- आपके प्रदर्शन के लिए सी का प्रयोग करने का प्रस्ताव महत्वपूर्ण है। अपने नमून के किसी भी गतिशील भाषा में आपको देशी कोड को कुशलता से पहुंचने देने के उपकरण हैं। तो गतिशील भाषा में पूरी चीज लिखकर शुरू करें आप पा सकते हैं कि आपको सी की आवश्यकता नहीं है।

लेकिन यदि आप करते हैं, तो एक प्रोफ़फ़ेलर को तोड़कर, अनुकूलन करने के लिए कुछ चुनिए, और इसके लिए जाएं।


यह ध्यान देने योग्य है कि Gambit योजना और चिकन (और उस मामले के लिए कुछ अन्य लागू) एक व्याख्या मोड में चलाए जाते हैं, और फिर इसे सी में संकलित किया जा सकता है।


@ ज़ोरकर्मैन

मुझे दोनों ज्योथन और जेरुबी के साथ अनुभव है ... जेआरयूबी के साथ बहुत कुछ।

मुझे कहना चाहिए कि वे महान प्लेटफार्म हैं, और आपको गतिशील भाषाओं का विशाल लाभ मिलता है, प्लस, जावा के समृद्ध तृतीय और प्रथम पक्ष पुस्तकालय समर्थन, PLUS एक उच्च मंच स्वतंत्र आधार संकलित भाषा, दोनों भाषाओं में प्लस कूड़ा संग्रह (यह समझना महत्वपूर्ण है मेमोरी प्रबंधन, लेकिन मैं शिविर का हूँ जब तक कि आपको इसकी ज़रूरत नहीं है, जैसे कि आप ड्राइवर या कर्नेल स्तरीय सामान या सामान जो हर प्रदर्शन के औंस की आवश्यकता होती है, उसे पूरा करने की आवश्यकता नहीं है।

मैं सिर्फ एक त्वरित उपाख्यान देना चाहता हूं मैं हाल ही में एक सॉलर इंस्टेंस को इंडेक्स के लिए एक रूबी स्क्रिप्ट का निर्माण कर रहा था, और मुझे डीबी 2 डाटाबेस (हमारे डेटा का स्रोत अनुक्रमित करने के लिए) तक पहुंचने की आवश्यकता है। सीधे रूबी बुरी तरह विफल हो गया ... यह भयानक डीबी 2 समर्थन है, जिसके लिए डीबी 2 एक्सप्रेस संस्करण की पूरी स्थापना की आवश्यकता है ... जो अभी भी विज्ञापन के रूप में काम नहीं करता (मैं स्थापना समाप्त होने के बाद रूबी ड्राइवरों को संकलित नहीं कर सका)। इसका समाधान सिर्फ जेआरबी को स्विच करना था और रूबी की तरफ से जेडीबीसी का उपयोग करना था, जोड़ी का उपयोग करने के लिए कुछ जार (और डीबी 2 इंस्टॉल की तुलना में काफी अधिक छोटी फाइलें) का उपयोग करना आसान था।

मैं निश्चित रूप से सीआर को अपने पीछे के अंत के रूप में सी का उपयोग करने के बजाय JRuby या Jython पर विचार करने की सलाह देगा ... मैंने पाया है कि एल्गोरिदम और संसाधन प्रदर्शन का आमतौर पर आपके द्वारा चुनी जाने वाली भाषा की तुलना में ऐप्लिकेशन के प्रदर्शन पर बहुत बड़ा प्रभाव पड़ता है, और जावा प्लेटफ़ॉर्म पेशकश करने के लिए बहुत कुछ (और शुरुआती दिनों के बाद से लोग सी / सी ++ की तुलना में बेहद धीमी गति से डिक्री कर रहे थे)। जब तक आप बहुत भारी गणना गहन बातों को नहीं कर रहे हैं, जिन्हें एल्गोरिथम रीफ़ैक्चर नहीं किया जा सकता है, तो आपको सबसे अधिक संभावना संकलित भाषा में ड्रॉप डाउन करने की आवश्यकता नहीं होगी, भले ही आपका चयन न हो।

पीएस। जेआरबी में जावा के साथ एकीकरण बहुत सहज है (जेआरबी से जवाबी तरफ से), इसलिए एक पुल बनाए रखने का कोई मुद्दा नहीं है। ज्योथन मुझे लगता है कि वही है, लेकिन इसके साथ मेरा अनुभव बहुत कम है।


मैं नौकरी के लिए सबसे अच्छा उपकरण का उपयोग करने के पक्ष में हूं सॉफ्टवेयर इंजीनियरिंग के मामले में जिसका अर्थ है बहुभाषी होना आप कभी भी एक ठेकेदार को केवल एक हथौड़ा का उपयोग करने की उम्मीद नहीं करेंगे, चाहे वह / वह निर्माण कर रहे हों यह हमारे लिए अलग क्यों होना चाहिए?


यह काफी आम है, लेकिन सुनिश्चित करें कि आप जानते हैं कि आप इसे जिस तरीके से करते हैं, उसे आप आर्किटेक्ट क्यों कर रहे हैं।

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

इसका मतलब यह है कि प्रदर्शन गियक्स एक ऐसी भाषा में काम कर रहे हैं, जो उन्हें पसंद हैं और जो उन्हें निम्न स्तर पर नियंत्रण की आवश्यकता होती है, जबकि स्तर के डिजाइनर उच्च स्तर की भाषा में काम कर सकते हैं, जहां उन्हें स्मृति प्रबंधन और इसके बारे में चिंता करने की आवश्यकता नहीं है।





polyglot