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