एर्लैंग और गो समवर्ती प्रोग्रामिंग, सीएसपी और अभिनेताओं के बीच उद्देश्य अंतर?


19

मैं एरलांग और गो प्रोग्रामिंग भाषाओं में समवर्ती प्रोग्रामिंग में देख रहा था। मेरी खोज के अनुसार वे क्रमशः अभिनेता मॉडल और सीएसपी का उपयोग करते हैं।

लेकिन फिर भी मैं इस बात को लेकर असमंजस में हूं कि सीएसपी और अभिनेताओं के बीच उद्देश्य अंतर क्या हैं? क्या यह केवल सैद्धांतिक रूप से भिन्न है लेकिन समान अवधारणा है?


खैर, वे एक ही नहीं हैं क्योंकि गो, एर्लैंग की तुलना में आदिम का एक अलग सेट प्रदान करता है। इसके अतिरिक्त गो एरलांग और सी-लाइक की तुलना में काफी निचला स्तर है।
डैनियल ग्रैजर

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

3
@gnat मैं असहमत हूं, यह CSP और अभिनेताओं के बीच उद्देश्य अंतर के बारे में पूछ रहा है। यह बिलकुल वाजिब सवाल है
डैनियल ग्रैज़र

2
प्रश्न अच्छे या बुरे के बारे में नहीं है, बल्कि निर्धारित किए जाने वाले भिन्न है, इस प्रकार यह प्रश्न ठोस है और व्यक्तिपरक बहस का कारण नहीं है।
nish1013

1
CS थ्योरी StackExchange पर इस सवाल का बहुत अच्छा जवाब है: कॉनकॉरिटी के अभिनेता मॉडल और
Jörg W Mittag

जवाबों:


21

व्यवहार में, बहुत कम अंतर है: दोनों निष्पादन की अलग-अलग इकाइयों का प्रतिनिधित्व करते हैं जिनका बाहरी दुनिया के साथ प्राथमिक इंटरफ़ेस संदेशों के माध्यम से है।

अंतर भाषाओं के कार्यान्वयन विवरण में हैं। यहाँ कुछ इस तरह के विवरण हैं:

  • गो में चैनल टाइप किए जाते हैं; यदि आप अलग-अलग डेटा के साथ संदेश भेजना चाहते हैं, तो आपको अलग-अलग चैनल चाहिए। एर्लैंग के साथ, किसी receiveको भी प्रक्रिया में भेजा गया सब कुछ मिल जाता है और पैटर्न-मैच होना चाहिए (गो में, आप selectकई मामलों के साथ उपयोग करेंगे , इसलिए कोड बहुत समान दिखाई देगा, बस विभिन्न चैनलों के साथ)।
  • कोई भी गो चैनल पढ़ या लिख ​​सकता है। एर्लैंग में, कोई भी एक प्रक्रिया को भेज सकता है, लेकिन केवल उस प्रक्रिया को प्राप्त होगा। यह महत्वपूर्ण हो जाता है यदि आप कई श्रमिकों के बीच एक कार्य को विभाजित करना चाहते हैं: एर्लांग में आपको एक वितरण प्रक्रिया बनाने की आवश्यकता है, जबकि गो केवल एक चैनल साझा कर सकता है।
  • एरलैंग कई मेजबानों / वीएम पर प्रक्रियाओं को वितरित करने के लिए (अधिकतर) पारदर्शी मार्ग प्रदान करता है। गोर्यूटाइंस एक ही प्रक्रिया तक सीमित हैं (हालांकि वितरण के लिए पुस्तकालय हैं)।
  • एरर हैंडलिंग बहुत अलग है। एरलैंग प्रत्येक प्रक्रिया को स्वतंत्र मानता है: एक प्रक्रिया में त्रुटि (डिवाइड-बाय -० कहो) किसी अन्य प्रक्रिया को प्रभावित नहीं करेगी जब तक कि आप उन्हें स्पष्ट रूप से लिंक नहीं करते हैं (हालांकि मृत प्रक्रिया से संदेश की प्रतीक्षा में कुछ लटका रहेगा)। गोराउटाइन सभी एक ही प्रक्रिया के स्थान पर चलते हैं; एक डिवाइड-बाय -0 पूरे कार्यक्रम को नीचे ले जाएगा।
  • एर्लैंग में, डेटा अपरिवर्तनीय है। इसका मतलब यह है कि एक प्रक्रिया और बाहरी दुनिया के बीच सभी संचार संदेशों के माध्यम से होते हैं। गो आपको गोरोइनों के बीच स्थिति साझा करने की अनुमति देता है (हालाँकि आपको ऐसा नहीं करना चाहिए)।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.