एरलैंग में प्रक्रियाओं / संदेशों और स्मॉलटाक में ऑब्जेक्ट्स / संदेशों के बीच अंतर क्या है?


12

मैं स्मॉलटॉक में ऑब्जेक्ट्स / संदेशों और Erlang में प्रक्रियाओं / संदेशों के बीच अंतर को समझने की कोशिश कर रहा हूं । मैंने विषय पर निम्नलिखित पोस्ट पढ़ी

जहां तक ​​मैं समझता हूं, स्मालटाक में, सब कुछ एक वस्तु है , और हर चीज का एक ही "ऑब्जेक्ट / संदेश" अमूर्त है - यहां तक ​​कि संख्या 1एक वस्तु है जो केवल संदेश पारित करने के साथ ही पहुंच सकती है। है 1Erlang / अमृत में एक प्रक्रिया? क्या एरलांग में सब कुछ संदेश / कार्यक्रम प्रतिमान की प्रतिक्रिया है? क्या आप एर्लांग में एक नंबर पर एक संदेश भेज सकते हैं?

बहुत बहुत धन्यवाद।


पूर्णांक 1 एक प्रक्रिया नहीं है - इसलिए आप इसे संदेश नहीं भेज सकते। आप एक पूर्णांक की स्थिति को एक समवर्ती प्रक्रिया के अंदर लपेट सकते हैं और उस प्रक्रिया संदेश को भेज सकते हैं - उदाहरण के लिए मूल्य बढ़ाने या घटाने का निर्देश। लेकिन फिर से यह अब मूल्य का नहीं होगा। 1. अमृत उदाहरण के लिए नीचे स्क्रॉल करें यहां dantswain.herokuapp.com/blog/2015/01/06/…
GavinBrelstaff

उत्तर के लिए धन्यवाद!
फुलफंक्शनल

जवाबों:


18

इरलैंग में प्रक्रियाएं और स्मॉलटाक में ऑब्जेक्ट्स वास्तव में एक ही चीज हैं।

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

इसलिए, अभिनेताओं और वस्तुओं के बीच घनिष्ठ संबंध है, और इसलिए, यह आश्चर्य की बात नहीं होनी चाहिए कि एर्लैंग की प्रक्रियाएं और स्मॉलटॉक की वस्तुएं समान हैं।

एक बात को छोड़कर: एर्लांग के डिजाइनरों को अभिनेता मॉडल के बारे में नहीं पता था !!! उन्होंने केवल इसके बारे में बाद में सीखा, विशेष रूप से जब जो आर्मस्ट्रांग ने 1990 के दशक के उत्तरार्ध में Seif Haridi (प्रोग्रामिंग पैराडाइज पर निश्चित पुस्तक के सह-लेखक) के तहत अपनी पीएचडी थीसिस लिखी।

जो आर्मस्ट्रांग ने एक लेख लिखा था जिसमें उन्होंने OO ( Why OO Sucks ) के खिलाफ पुरजोर वकालत की थी , लेकिन बाद में उन्होंने अपना मन बदल लिया जब उन्हें एहसास हुआ कि Erlang वास्तव में बहुत ऑब्जेक्ट ओरिएंटेड है। वास्तव में, वह यहां तक ​​दावा करने के लिए चला गया कि एर्लैंग जो आर्मस्ट्रांग और राल्फ जॉनसन के साथ इस साक्षात्कार में एकमात्र वस्तु-उन्मुख भाषा है ।

यह एक दिलचस्प मामला है कि विकासवादी जीवविज्ञानी अभिसरण विकास को कहेंगे , अर्थात दो असंबंधित प्रजातियां समान बाहरी दबावों के जवाब में समान होने के लिए विकसित हो रही हैं।

एर्लांग और स्मालटाक के बीच अभी भी बहुत से रिश्ते हैं, हालांकि:

Erlang ने Prolog के लिए एक संगामिति एक्सटेंशन के रूप में शुरुआत की (और यहां तक ​​कि जब Erlang अपनी अलग भाषा बन गई, तो पहले कार्यान्वयन Prolog में लिखे गए थे) और अभी भी Prolog में भारी रूप से निहित है। प्रोलोग कार्ल हेविट के प्लानर से काफी प्रभावित हैं।

स्मॉलटाक भी काफी प्रभावित था जो बाद में ARPANet बन जाएगा (और बाद में इंटरनेट भी); Erlang नेटवर्क सिस्टम के लिए डिज़ाइन किया गया था।

हालांकि, एरलंग और स्मॉलटाक के बीच एक महत्वपूर्ण अंतर यह है कि सब कुछ एक प्रक्रिया नहीं है। 1एक संख्या है, एक प्रक्रिया नहीं है। आप एक नंबर पर एक संदेश नहीं भेज सकते।

Erlang की कई "परतें" हैं:

  • फंक्शनल एरलैंग : प्रोलोग से विरासत में मिली कुछ "विषमताओं" के साथ ज्यादातर विशिष्ट, गतिशील रूप से टाइप की गई कार्यात्मक भाषा, जैसे एकीकरण।
  • समवर्ती एरलैंग : कार्यात्मक एरलैंग + प्रक्रियाएं और संदेश।
  • वितरित एरलैंग : समवर्ती एरलंग + दूरस्थ प्रक्रियाएं।
  • दोष-सहिष्णु Erlang : वितरित Erlang + OTP पुस्तकालयों, जैसे पर्यवेक्षक पेड़ों और में कोडित कुछ डिज़ाइन पैटर्न gen_server

Erlang / OTP में लिखा एक फॉल्ट-टॉलरेंट सिस्टम आमतौर पर कुछ ऐसा दिखेगा जिसे हम "ऑब्जेक्ट-ओरिएंटेड" के रूप में पहचान सकते हैं। लेकिन उन वस्तुओं के अंदरूनी हिस्से को अक्सर ऑब्जेक्ट-ओरिएंटेड शैली की तुलना में अधिक कार्यात्मक रूप से लागू किया जाएगा।

दिलचस्प बात यह है कि एर्लैंग जिस "विकासवादी दबाव" के तहत दूसरे शब्दों में समस्या एर्लांग के डिजाइनरों को हल करने की कोशिश कर रहा था (विश्वसनीयता, प्रतिकृति, अतिरेक, ...) वही दबाव है जो कोशिकाओं के विकास का कारण बना। एलन केई ने सूक्ष्म जीव विज्ञान में काम किया, और जैविक कोशिकाओं पर स्पष्ट रूप से OO का निर्माण किया। यह एरलांग और स्मॉलटॉक के बीच एक और समानांतर है।

मैंने इसके बारे में एक और जवाब में थोड़ा सा लिखा ।


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