ऐक्टर मॉडल: Difference between revisions
No edit summary |
|||
(8 intermediate revisions by 4 users not shown) | |||
Line 2: | Line 2: | ||
{{Programming paradigms}} | {{Programming paradigms}} | ||
[[कंप्यूटर विज्ञान]] में ऐक्टर मॉडल समवर्ती | [[कंप्यूटर विज्ञान]] में '''ऐक्टर मॉडल''' समवर्ती कम्प्यूटेशन का एक गणितीय मॉडल है जो एक 'ऐक्टर' को समवर्ती कम्प्यूटेशन के मौलिक मूलभूत अंग के रूप में मानता है। संदेश प्राप्त करने के जवाब में, ऐक्टर स्थानीय निर्णय ले सकता है, अधिक ऐक्टर बना सकता है, अधिक संदेश भेज सकता है, और यह निर्धारित कर सकता है कि प्राप्त अगले संदेश का जवाब कैसे दिया जाए। ऐक्टर अपने स्वयं के निजी स्थिति को संशोधित कर सकते हैं, लेकिन लॉक-आधारित सिंक्रनाइज़ेशन की आवश्यकता को हटाकर संदेश के माध्यम से अप्रत्यक्ष रूप से एक-दूसरे को प्रभावित कर सकते हैं। | ||
ऐक्टर मॉडल की उत्पत्ति 1973 में हुई थी।<ref>{{cite journal|ref={{harvid|Hewitt et al.|1973}} |last1=Hewitt|first1=Carl|author-link=Carl Hewitt|last2=Bishop|first2=Peter|last3=Steiger|first3=Richard|title=आर्टिफिशियल इंटेलिजेंस के लिए एक सार्वभौमिक मॉड्यूलर अभिनेता औपचारिकता|publisher=IJCAI|year=1973}}</ref> इसका उपयोग | ऐक्टर मॉडल की उत्पत्ति 1973 में हुई थी।<ref>{{cite journal|ref={{harvid|Hewitt et al.|1973}} |last1=Hewitt|first1=Carl|author-link=Carl Hewitt|last2=Bishop|first2=Peter|last3=Steiger|first3=Richard|title=आर्टिफिशियल इंटेलिजेंस के लिए एक सार्वभौमिक मॉड्यूलर अभिनेता औपचारिकता|publisher=IJCAI|year=1973}}</ref> इसका उपयोग गणना के सैद्धांतिक समझ (कंप्यूटर विज्ञान) के लिए एक रूपरेखा के रूप में और समवर्ती प्रणालियों के कई व्यावहारिक कार्यान्वयन के लिए सैद्धांतिक आधार के रूप में उपयोग किया गया है। मॉडल का अन्य कार्य से संबंध [[अभिनेता मॉडल और प्रक्रिया गणना|ऐक्टर मॉडल और प्रक्रिया गणना]] में चर्चा की गई है। | ||
== इतिहास == | == इतिहास == | ||
{{Main| | {{Main|ऐक्टर मॉडल का इतिहास}} | ||
[[कार्ल हेविट]] के अनुसार, | [[कार्ल हेविट]] के अनुसार, कम्प्यूटेशन के पूर्व मॉडलों के विपरीत, ऐक्टर मॉडल [[सामान्य सापेक्षता]] और [[क्वांटम यांत्रिकी]] सहित भौतिकी से प्रेरित था।{{Citation needed|date=March 2018}} यह प्रोग्रामिंग भाषा [[ लिस्प (प्रोग्रामिंग भाषा) |एलआईएसपी (प्रोग्रामिंग भाषा)]], सिमुला, स्मॉलटाक के प्रारम्भिक संस्करणों, क्षमता-आधारित सिस्टम और [[ पैकेट बदली |पैकेट स्विचन]] से भी प्रभावित था। इसका विकास अत्यधिक पैरेलेल कंप्यूटिंग मशीनों की संभावना से प्रेरित था जिसमें दर्जनों, सैकड़ों, या यहां तक कि हजारों स्वतंत्र माइक्रोप्रोसेसर सम्मिलित थे, जिनमें से प्रत्येक की अपनी स्थानीय मेमोरी और संचार प्रोसेसर था, जो एक उच्च-प्रदर्शन संचार नेटवर्क के माध्यम से संचार करता था।<ref name="clinger1981">{{cite journal|author=William Clinger|author-link=William Clinger (computer scientist)|title=अभिनेता शब्दार्थ की नींव|publisher=MIT|version=Mathematics Doctoral Dissertation|date=June 1981|hdl=1721.1/6935}}</ref> उस समय से, [[मल्टी-कोर (कंप्यूटिंग)|बहु-कोर (कंप्यूटिंग)]] और [[ mycore |माईकोर]] कंप्यूटर संरचना के माध्यम से बड़े पैमाने पर समरूपता के आगमन ने ऐक्टर मॉडल में रुचि को पुनर्जीवित किया है। | ||
हेविट, बिशप और स्टीगर के 1973 के प्रकाशन के बाद, [[आइरीन ग्रीफ]] ने अपने डॉक्टरेट अनुसंधान के | हेविट, बिशप और स्टीगर के 1973 के प्रकाशन के बाद, [[आइरीन ग्रीफ]] ने अपने डॉक्टरेट अनुसंधान के भाग के रूप में ऐक्टर मॉडल के लिए एक [[परिचालन शब्दार्थ|परिचालन सेमेन्टिक्स]] विकसित किया।<ref name="greif1975">{{cite journal|author=Irene Greif|author-link=Irene Greif|title=समानांतर प्रक्रियाओं का संचार करने का शब्दार्थ|publisher=MIT|version=EECS Doctoral Dissertation|date=August 1975}}</ref> दो साल बाद, [[हेनरी बेकर (कंप्यूटर वैज्ञानिक)]] और हेविट ने ऐक्टर प्रणालियों के लिए स्वयंसिद्ध नियमों का एक सेट प्रकाशित किया।<ref name="baker1977">{{cite journal|author=Henry Baker|author-link=Henry Baker (computer scientist)|author2=Carl Hewitt|title=समानांतर प्रक्रियाओं के संचार के लिए कानून|publisher=IFIP|date=August 1977|author-link2=Carl Hewitt}}</ref><ref>{{cite web|url=http://dspace.mit.edu/bitstream/handle/1721.1/41962/AI_WP_134A.pdf|title=समानांतर प्रक्रियाओं के संचार के लिए कानून|date=10 May 1977|access-date=11 June 2014|archive-date=24 June 2016|archive-url=https://web.archive.org/web/20160624000258/http://dspace.mit.edu/bitstream/handle/1721.1/41962/AI_WP_134A.pdf|url-status=live}}</ref> अन्य प्रमुख लक्ष्य में विलियम क्लिंजर (कंप्यूटर वैज्ञानिक) सम्मिलित हैं। विलियम क्लिंजर का 1981 का शोध प्रबंध [[शक्ति डोमेन|पावर डोमेन]] पर आधारित ऐक्टर मॉडल के एक सांकेतिक सेमेन्टिक्स को प्रस्तुत करता है।<ref name="clinger1981" />और [[गुल आगा (कंप्यूटर वैज्ञानिक)]] का 1985 का शोध प्रबंध जिसने क्लिंगर्स के पूरक के लिए एक संक्रमण-आधारित सिमेंटिक मॉडल विकसित किया।<ref name="agha1986">{{cite journal|author=Gul Agha|title=Actors: A Model of Concurrent Computation in Distributed Systems|version= Doctoral Dissertation|publisher=MIT Press|year=1986|hdl=1721.1/6952}}</ref> इसके परिणामस्वरूप ऐक्टर मॉडल सिद्धांत का पूर्ण विकास हुआ। | ||
रस एटकिन्सन, ग्यूसेप अटारडी, हेनरी बेकर, गेरी बार्बर, पीटर बिशप, पीटर डी जोंग, केन कान, हेनरी लिबरमैन, कार्ल मैनिंग, टॉम रेनहार्ड्ट, रिचर्ड स्टीगर और डैन थेरियॉल्ट द्वारा | रस एटकिन्सन, ग्यूसेप अटारडी, हेनरी बेकर, गेरी बार्बर, पीटर बिशप, पीटर डी जोंग, केन कान, हेनरी लिबरमैन, कार्ल मैनिंग, टॉम रेनहार्ड्ट, रिचर्ड स्टीगर और डैन थेरियॉल्ट द्वारा संदेश प्रेषण सिमेंटिक्स समूह में प्रमुख सॉफ्टवेयर कार्यान्वयन कार्य [[मैसाचुसेट्स की तकनीकी संस्था]] (एमआईटी) मे किया गया था। [[कैलिफोर्निया प्रौद्योगिकी संस्थान]] (कैल्टेक) में चक सेइट्ज और एमआईटी में [[बिल डेली]] के नेतृत्व में अनुसंधान समूहों ने कंप्यूटर संरचना का निर्माण किया जिसने मॉडल में पारित होने वाले संदेश को अधिक विकसित किया। ऐक्टर मॉडल कार्यान्वयन देखें। | ||
[[कैलिफोर्निया प्रौद्योगिकी संस्थान]], क्योटो यूनिवर्सिटी टोकोरो प्रयोगशाला, माइक्रोइलेक्ट्रॉनिक और कंप्यूटर प्रौद्योगिकी निगम (एमसीसी), [[मैसाचुसेट्स की तकनीकी संस्था]] कृत्रिम इंटेलिजेंस प्रयोगशाला, एसआरआई, स्टैनफोर्ड यूनिवर्सिटी, इलिनोइस विश्वविद्यालय अर्बाना-शैंपेन में <ref>{{cite web|url=http://osl.cs.uiuc.edu |title=घर|publisher=Osl.cs.uiuc.edu |access-date=2012-12-02 |url-status=dead |archive-url=https://web.archive.org/web/20130222175604/http://osl.cs.uiuc.edu/ |archive-date=2013-02-22}}</ref> [[पियरे और मैरी क्यूरी विश्वविद्यालय]] (यूनिवर्सिटी ऑफ पेरिस 6), [[पीसा विश्वविद्यालय]], [[टोक्यो विश्वविद्यालय]] योनेजावा प्रयोगशाला, सेंट्रम विस्कुंडे और सूचना विज्ञान (सीडब्ल्यूआई) और अन्य स्थानों पर ऐक्टर मॉडल पर शोध किया गया है। | |||
== मौलिक अवधारणाएँ == | == मौलिक अवधारणाएँ == | ||
ऐक्टर मॉडल इस दर्शन को | ऐक्टर मॉडल इस दर्शन को स्वीकृत है कि सब कुछ ऐक्टर है। यह सब कुछ एक वस्तु दर्शन के समान है जिसका उपयोग कुछ वस्तु-उन्मुख प्रोग्रामिंग भाषाओं द्वारा किया जाता है। | ||
ऐक्टर एक कम्प्यूटेशनल इकाई है, जो इसे प्राप्त संदेश के जवाब में समवर्ती रूप से कर सकता है: | |||
* अन्य | * अन्य ऐक्टर को सीमित संख्या में संदेश भेजें; | ||
* नए | * नए ऐक्टर की एक सीमित संख्या बनाएँ; | ||
* प्राप्त होने वाले अगले संदेश के लिए उपयोग किए जाने वाले व्यवहार को निर्दिष्ट करें। | * प्राप्त होने वाले अगले संदेश के लिए उपयोग किए जाने वाले व्यवहार को निर्दिष्ट करें। | ||
उपरोक्त क्रियाओं का कोई अनुमानित क्रम नहीं है और उन्हें | उपरोक्त क्रियाओं का कोई अनुमानित क्रम नहीं है और उन्हें पैरेलेल में किया जा सकता है। | ||
प्रेषित किए गए संचार से प्रेषक को अलग करना ऐक्टर मॉडल का मौलिक अग्रिम था जो [[अतुल्यकालिक संचार]] और नियंत्रण संरचनाओं को संदेश प्रेषित करने के पैटर्न के रूप में सक्षम बनाता था।<ref>Carl Hewitt. ''[https://web.archive.org/web/20170924160220/http://www.dtic.mil/get-tr-doc/pdf?AD=ADA038246 Viewing Control Structures as Patterns of Passing Messages]'' Journal of Artificial Intelligence. June 1977.</ref> | |||
ऐक्टर मॉडल को | संदेशों के प्राप्तकर्ता एड्रैस से पहचाने जाते हैं, जिसे कभी-कभी पोस्ट एड्रैस कहा जाता है। इस प्रकार ऐक्टर केवल उन ऐक्टर के साथ संवाद कर सकता है जिनके एड्रैस उसके पास हैं। यह उन्हें प्राप्त होने वाले संदेश से प्राप्त कर सकता है, या यदि एड्रैस किसी ऐक्टर के लिए है जिसे उसने स्वयं बनाया है। | ||
ऐक्टर मॉडल को ऐक्टर के अंदर और ऐक्टर के बीच कम्प्यूटेशन की अंतर्निहित समरूपता, ऐक्टर के गतिशील निर्माण, संदेशों में ऐक्टर के एड्रैस को सम्मिलित करने और केवल सीधे अतुल्यकालिक संदेश के माध्यम से संदेश आगमन आदेश पर कोई प्रतिबंध नहीं होने की विशेषता है। | |||
== औपचारिक प्रणाली == | == औपचारिक प्रणाली == | ||
इन वर्षों में, कई | इन वर्षों में, कई विभिन्न औपचारिक प्रणालियाँ विकसित की गई हैं जो ऐक्टर मॉडल में प्रणालियों के बारे में तर्क करने की स्वीकृति देती हैं। इसमे सम्मिलित है: | ||
* परिचालन | * परिचालन सेमेन्टिक्स<ref name="greif1975"/><ref name="agha1993">{{cite journal|author=Gul Agha|author2=Ian Mason|author3=Scott Smith|author4=Carolyn Talcott|title=अभिनेता संगणना के लिए एक फाउंडेशन|journal=Journal of Functional Programming|date=January 1993}}</ref> | ||
* ऐक्टर प्रणालियों के लिए | * ऐक्टर प्रणालियों के लिए नियम<ref name="baker1977"/> | ||
* संक्रमण | *[[सांकेतिक शब्दार्थ|सांकेतिक सेमेन्टिक्स]]<ref name="clinger1981" /><ref name="hewitt2006">{{cite journal|author=Carl Hewitt|author-link=Carl Hewitt|url=http://www.pcs.usp.br/~coin-aamas06/10_commitment-43_16pages.pdf|title=What is Commitment? Physical, Organizational, and Social|date=2006-04-27|access-date=2006-05-26|archive-date=2021-02-11|archive-url=https://web.archive.org/web/20210211011938/http://www2.pcs.usp.br/~coin-aamas06/10_commitment-43_16pages.pdf|url-status=live}}</ref> | ||
* संक्रमण सेमेन्टिक्स<ref name="agha1986"/> | |||
ऐसी औपचारिकताएं भी हैं जो ऐक्टर मॉडल के लिए पूरी तरह से | ऐसी औपचारिकताएं भी हैं जो ऐक्टर मॉडल के लिए पूरी तरह से विश्वसनीय नहीं हैं, जिसमें वे संदेशों की प्रत्याभूतिकृत वितरण को औपचारिक रूप नहीं देते हैं, जिसमें निम्न सम्मिलित हैं ऐक्टर सेमेन्टिक्स को बीजगणित और रैखिक तर्क से संबंधित करने का प्रयास देखें: | ||
* कई अलग ऐक्टर बीजगणित<ref name="gaspari1997">{{cite book|author=Mauro Gaspari|title=ओपन ऑब्जेक्ट-आधारित वितरित सिस्टम के लिए औपचारिक तरीके|pages=3–18|author2=Gianluigi Zavattaro|chapter=An Algebra of Actors|version=Technical Report UBLCS-97-4|publisher=University of Bologna|date=May 1997|chapter-url=https://link.springer.com/content/pdf/10.1007/978-0-387-35562-7_2.pdf|doi=10.1007/978-0-387-35562-7_2|isbn=978-1-4757-5266-3|access-date=2019-04-08|archive-date=2018-07-26|archive-url=https://web.archive.org/web/20180726193514/https://link.springer.com/content/pdf/10.1007%2F978-0-387-35562-7_2.pdf|url-status=live}}</ref><ref name="gaspari1999">{{cite journal|author= M. Gaspari|author2=G. Zavattaro|title=अभिनेताओं का एक बीजगणित|publisher=Formal Methods for Open Object Based Systems |year=1999}}</ref><ref name="agha2004">{{cite journal|author=Gul Agha|author-link=Gul Agha (computer scientist)|author2=Prasanna Thati|url=http://formal.cs.uiuc.edu/papers/ATactors_festschrift.pdf|archive-url=https://web.archive.org/web/20040420064252/http://formal.cs.uiuc.edu/papers/ATactors_festschrift.pdf|url-status=dead|archive-date=2004-04-20|title=अभिनेताओं का एक बीजगणितीय सिद्धांत और एक साधारण वस्तु-आधारित भाषा में इसका अनुप्रयोग|publisher=From OO to FM (Dahl Festschrift) LNCS 2635|year=2004}}</ref> | * कई अलग ऐक्टर बीजगणित<ref name="gaspari1997">{{cite book|author=Mauro Gaspari|title=ओपन ऑब्जेक्ट-आधारित वितरित सिस्टम के लिए औपचारिक तरीके|pages=3–18|author2=Gianluigi Zavattaro|chapter=An Algebra of Actors|version=Technical Report UBLCS-97-4|publisher=University of Bologna|date=May 1997|chapter-url=https://link.springer.com/content/pdf/10.1007/978-0-387-35562-7_2.pdf|doi=10.1007/978-0-387-35562-7_2|isbn=978-1-4757-5266-3|access-date=2019-04-08|archive-date=2018-07-26|archive-url=https://web.archive.org/web/20180726193514/https://link.springer.com/content/pdf/10.1007%2F978-0-387-35562-7_2.pdf|url-status=live}}</ref><ref name="gaspari1999">{{cite journal|author= M. Gaspari|author2=G. Zavattaro|title=अभिनेताओं का एक बीजगणित|publisher=Formal Methods for Open Object Based Systems |year=1999}}</ref><ref name="agha2004">{{cite journal|author=Gul Agha|author-link=Gul Agha (computer scientist)|author2=Prasanna Thati|url=http://formal.cs.uiuc.edu/papers/ATactors_festschrift.pdf|archive-url=https://web.archive.org/web/20040420064252/http://formal.cs.uiuc.edu/papers/ATactors_festschrift.pdf|url-status=dead|archive-date=2004-04-20|title=अभिनेताओं का एक बीजगणितीय सिद्धांत और एक साधारण वस्तु-आधारित भाषा में इसका अनुप्रयोग|publisher=From OO to FM (Dahl Festschrift) LNCS 2635|year=2004}}</ref> | ||
* [[रैखिक तर्क]]<ref name="darlington1994">{{cite journal|author=John Darlington|author2=Y. K. Guo|title=रैखिक तर्क में अभिनेताओं को औपचारिक बनाना|publisher=International Conference on Object-Oriented Information Systems|year=1994}}</ref> | * [[रैखिक तर्क]]<ref name="darlington1994">{{cite journal|author=John Darlington|author2=Y. K. Guo|title=रैखिक तर्क में अभिनेताओं को औपचारिक बनाना|publisher=International Conference on Object-Oriented Information Systems|year=1994}}</ref> | ||
== | == एप्लीकेशन == | ||
ऐक्टर मॉडल का उपयोग समवर्ती प्रणालियों की एक विस्तृत श्रृंखला के बारे में मॉडलिंग, समझ और तर्क के लिए एक रूपरेखा के रूप में किया जा सकता है।<ref>{{Cite web|title=What is the Actor Model & When Should You Use it?|url=https://mattferderer.com/|access-date=2021-08-25|website=Matt Ferderer|language=en|archive-date=2021-08-25|archive-url=https://web.archive.org/web/20210825180156/https://mattferderer.com/|url-status=live}}</ref> उदाहरण के लिए: | ऐक्टर मॉडल का उपयोग समवर्ती प्रणालियों की एक विस्तृत श्रृंखला के बारे में मॉडलिंग, समझ और तर्क के लिए एक रूपरेखा के रूप में किया जा सकता है।<ref>{{Cite web|title=What is the Actor Model & When Should You Use it?|url=https://mattferderer.com/|access-date=2021-08-25|website=Matt Ferderer|language=en|archive-date=2021-08-25|archive-url=https://web.archive.org/web/20210825180156/https://mattferderer.com/|url-status=live}}</ref> उदाहरण के लिए: | ||
* इलेक्ट्रॉनिक मेल ([[ईमेल]]) को ऐक्टर प्रणाली के रूप में तैयार किया जा सकता है। खातों को ऐक्टर के रूप में और ईमेल एड्रैस को ऐक्टर के एड्रैस के रूप में तैयार किया जाता है। | |||
* [[वेब सेवा]]ओं को सरल ऑब्जेक्ट अभिगम प्रोटोकॉल ([[SOAP|सरल ऑब्जेक्ट अभिगम प्रोटोकॉल]]) एंडपॉइंट्स के साथ ऐक्टर के एड्रैस के रूप में तैयार किया जा सकता है। | |||
* ऑब्जेक्ट्स लॉक (कंप्यूटर विज्ञान) के साथ (उदाहरण के लिए, [[ जावा (प्रोग्रामिंग भाषा) |जावा (प्रोग्रामिंग भाषा)]] और C# (प्रोग्रामिंग भाषा) ) में सीरिअलाइज़र के रूप में मॉडल किया जा सकता है, बशर्ते कि उनका कार्यान्वयन ऐसा हो कि संदेश निरंतर आ सकें। एक आंतरिक [[कतार (सार डेटा प्रकार)|क्यू (अमूर्त डेटा प्रकार)]] में संग्रहीत किया जा रहा है। एक सीरियलाइज़र एक महत्वपूर्ण प्रकार का ऐक्टर है जो गुण द्वारा परिभाषित किया गया है कि यह नए संदेशों के आगमन के लिए निरंतर उपलब्ध है; सीरियलाइज़र को प्रेषित किए गए प्रत्येक संदेश के आने की प्रत्याभूति है।<ref>{{Cite web|last=Cheung|first=Leo|date=2017-07-25|title=अक्का और अभिनेता मॉडल IoT अनुप्रयोगों के लिए क्यों चमकते हैं|url=https://www.infoworld.com/article/3209728/why-akka-and-the-actor-model-shine-for-iot-applications.html|access-date=2021-08-25|website=InfoWorld|language=en|archive-date=2021-08-25|archive-url=https://web.archive.org/web/20210825181648/https://www.infoworld.com/article/3209728/why-akka-and-the-actor-model-shine-for-iot-applications.html|url-status=live}}</ref> | |||
* परीक्षण और निरीक्षण नियंत्रण संकेतन (टीटीसीएन), दोनों टीटीसीएन-2 और [[TTCN-3|टीटीसीएन-3]], ऐक्टर मॉडल का अपेक्षाकृत अधिक स्थूलता से अनुसरण करते हैं। परीक्षण और निरीक्षण नियंत्रण संकेतन में ऐक्टर एक परीक्षण : या तो पैरेलेल परीक्षण घटक (पीटीसी) या मुख्य परीक्षण घटक (एमटीसी) घटक है। परीक्षण घटक दूरस्थ भागीदारों (सहकर्मी परीक्षण घटक या परीक्षण प्रणाली इंटरफ़ेस) को संदेश प्रेषित कर और प्राप्त कर सकते हैं, बाद वाले को इसके एड्रैस से पहचाना जा सकता है। प्रत्येक परीक्षण घटक के पास एक व्यवहार ट्री होता है जो उससे जुड़ा होता है; परीक्षण घटक पैरेलेल में सक्रिय हैं और मूल परीक्षण घटकों द्वारा गतिशील रूप से बनाए जा सकते हैं। अंतर्निहित भाषा संरचना आंतरिक संदेश क्यू से अपेक्षित संदेश प्राप्त होने पर क्रियाओं की परिभाषा लेने की स्वीकृति देती है, जैसे किसी अन्य सहकर्मी इकाई को संदेश प्रेषित करने या नए परीक्षण घटक बनाना। | |||
== संदेश-प्रेषण सेमेन्टिक्स == | |||
ऐक्टर मॉडल संदेश पारित करने के सेमेन्टिक्स के बारे में है। | |||
== | === असंबद्ध गैर-निर्धारणवाद विवाद === | ||
विश्वसनीय रूप से, पहले समवर्ती प्रोग्राम [[इंटरप्ट हैंडलर]] थे। अपने सामान्य संचालन के समय एक कंप्यूटर को बाहर से जानकारी प्राप्त करने में सक्षम होना चाहिए (कीबोर्ड से वर्ण, नेटवर्क से पैकेट इत्यादि)। इसलिए जब सूचना पहुंची तो कंप्यूटर का निष्पादन बाधित हो गया और सूचना को [[डेटा बफर]] में रखने के लिए विशेष कोड (इंटरप्ट हैंडलर कहा जाता है) को बुलाया गया जहां इसे बाद में पुनर्प्राप्त किया जा सके। | |||
=== | 1960 के दशक के प्रारंभ में, एक प्रोसेसर पर कई प्रोग्राम के समवर्ती निष्पादन को अनुकरण करने के लिए इंटरप्ट्स का उपयोग किया जाने लगा।<ref>{{cite book |last=Hansen |first=Per Brinch |author-link=Per Brinch Hansen |title=The Origins of Concurrent Programming: From Semaphores to Remote Procedure Calls |isbn=978-0-387-95401-1 |publisher=Springer |year=2002}}</ref> साझा मेमोरी के साथ समवर्ती होने से समवर्ती नियंत्रण की समस्या उत्पन्न हुई। मूल रूप से, इस समस्या की कल्पना समान कंप्यूटर पर परस्पर बहिष्करण के रूप में की गई थी। एडजर डिज्कस्ट्रा ने [[सेमाफोर (प्रोग्रामिंग)]] विकसित किया और बाद में, 1971 और 1973 के बीच,<ref>{{cite journal |last=Hansen |first=Per Brinch |author-link=Per Brinch Hansen |date=1996 |title=Monitors and Concurrent Pascal: A Personal History |journal=Communications of the ACM |pages=121–172}}</ref> [[टोनी होरे]]<ref>{{cite journal |last=Hoare |first=Tony |author-link=Tony Hoare |date=October 1974 |title=Monitors: An Operating System Structuring Concept |journal=Communications of the ACM |volume=17 |issue=10 |pages=549–557|doi=10.1145/355620.361161 |s2cid=1005769 }}</ref> और [[प्रति ब्रिन्च हैनसेन]]<ref>{{cite book |last=Hansen |first=Per Brinch |author-link=Per Brinch Hansen |date=July 1973 |title=ऑपरेटिंग सिस्टम सिद्धांत|publisher=Prentice-Hall}}</ref> पारस्परिक बहिष्करण समस्या को हल करने के लिए विकसित [[मॉनिटर (सिंक्रनाइज़ेशन)]] के रूप में की गई थी। हालाँकि, इनमें से किसी भी समाधान ने प्रोग्रामिंग भाषा निर्माण प्रदान नहीं किया है जो साझा संसाधनों तक अभिगम्य को समाहित करता है। इस एनकैप्सुलेशन को बाद में [[क्रमबद्धता]] निर्माण ([हेविट और एटकिंसन 1977, 1979] और [एटकिंसन 1980]) द्वारा पूरा किया गया था। | ||
गणना के पहले मॉडल (जैसे, [[ट्यूरिंग मशीनें]], पोस्ट उत्पादन, [[लैम्ब्डा कैलकुलस]], आदि) गणित पर आधारित थे और एक कम्प्यूटेशनल चरण का प्रतिनिधित्व करने के लिए एक वैश्विक स्थिति का उपयोग किया बाद में [मैककार्थी और हेस 1969] और [डिज्क्स्ट्रा में सामान्यीकृत] 1976] इवेंट ऑर्डरिंग बनाम वैश्विक स्थिति देखें। प्रत्येक कम्प्यूटेशनल चरण गणना की एक वैश्विक स्थिति से अगले वैश्विक स्थिति तक था। परिमित-स्थिति मशीनों के लिए [[ऑटोमेटा सिद्धांत]] में वैश्विक अवस्था दृष्टिकोण जारी रखा गया था और [[स्टैक मशीन]] को नीचे प्रविष्ट कर दिया गया था, जिसमें उनके गैर-नियतात्मक संस्करण भी सम्मिलित थे। इस तरह के गैर-नियतात्मक ऑटोमेटा में परिबद्ध हुए गैर-नियतात्मकता का गुण होता है; अर्थात्, यदि कोई मशीन अपनी प्रारंभिक अवस्था में प्रारंभ होने पर सदैव प्रतिबंधित करता है, तो यह उन अवस्थाओ की संख्या पर बाध्य होती है जिनमें वह प्रतिबंधित करते है। | |||
एडजर डिज्कस्ट्रा ने गैर-नियतात्मक वैश्विक अवस्था दृष्टिकोण को और विकसित किया। दिज्क्स्ट्रा के मॉडल ने असीमित अनिर्धारणवाद (जिसे असीमित अनिश्चितता भी कहा जाता है) से संबंधित एक विवाद को उत्पन्न किया, जो समवर्ती (कंप्यूटर विज्ञान) की एक गुण है, जिसके द्वारा साझा संसाधनों के लिए विवाद की मध्यस्थता के परिणामस्वरूप अनुरोध की सेवा में विलंबता की मात्रा अबाधित हो सकती है। जबकि अभी भी प्रत्याभूति (गारंटी) है कि अनुरोध अंत में सेवा की जाएगी हेविट ने तर्क दिया कि ऐक्टर मॉडल को सेवा की प्रत्याभूति प्रदान करनी चाहिए। दिज्क्स्ट्रा के मॉडल में, हालांकि एक कंप्यूटर पर अनुक्रमिक निर्देशों के निष्पादन के बीच असीमित समय हो सकता है, एक (पैरेलेल) प्रोग्राम जो एक अच्छी तरह से परिभाषित अवस्था में प्रारंभ हुआ था, केवल अवस्थाओ की सीमित संख्या में [दिज्क्स्ट्रा 1976] समाप्त हो सकता है। परिणामस्वरूप, उनका मॉडल सेवा की प्रत्याभूति प्रदान नहीं कर सका। दिज्क्स्ट्रा ने तर्क दिया कि असीमित गैर-निर्धारणवाद को प्रयुक्त करना असंभव था। | |||
हेविट ने अन्यथा तर्क दिया: ऐसी कोई सीमा नहीं है जिसे व्यवस्थित करने के लिए एक [[आर्बिटर (इलेक्ट्रॉनिक्स)]] नामक कम्प्यूटेशनल परिपथ को कितना समय लगता है ([[मेटास्टेबिलिटी (इलेक्ट्रॉनिक्स)]] देखें) पर रखा जा सकता है।<ref name="zenil">{{cite book |last=Hewitt |first=Carl |author-link=Carl Hewitt |date=2012 |chapter=What is computation? Actor Model versus Turing's Model |title=A Computable Universe: Understanding Computation & Exploring Nature as Computation. Dedicated to the memory of Alan M. Turing on the 100th anniversary of his birth. |editor-last=Zenil |editor-first=Hector |publisher=World Scientific Publishing Company}}</ref> आर्बिटर्स का उपयोग कंप्यूटर में उस परिस्थिति से नियंत्रण करने के लिए किया जाता है, जिसमें कंप्यूटर घड़ियां बाहर से इनपुट के संबंध में अतुल्यकालिक रूप से काम करती हैं, जैसे, कीबोर्ड इनपुट, डिस्क अभिगम, नेटवर्क इनपुट, आदि प्राप्त किया जा सकता है और इस बीच कंप्यूटर असीमित संख्या में अवस्थाओ को पार कर सकता है। | |||
ऐक्टर मॉडल में अबाधित अनिर्धारणवाद है, जिसे [[डोमेन सिद्धांत]] का उपयोग करके [[ विल क्लिंजर |विल क्लिंजर]] द्वारा गणितीय मॉडल में कैप्चर किया गया था।<ref name="clinger1981"/> ऐक्टर मॉडल में कोई वैश्विक स्थिति नहीं है।{{dubious|date=August 2013}} | |||
ऐक्टर मॉडल में अबाधित अनिर्धारणवाद है, जिसे [[डोमेन सिद्धांत]] का उपयोग करके [[ विल क्लिंजर ]] द्वारा गणितीय मॉडल में कैप्चर किया गया था।<ref name="clinger1981"/>ऐक्टर मॉडल में कोई वैश्विक स्थिति नहीं है।{{dubious|date=August 2013}} | |||
=== प्रत्यक्ष संचार और अतुल्यकालिक === | === प्रत्यक्ष संचार और अतुल्यकालिक === | ||
ऐक्टर मॉडल में संदेश आवश्यक रूप से बफ़र्ड नहीं हैं। समवर्ती | ऐक्टर मॉडल में संदेश आवश्यक रूप से बफ़र्ड नहीं हैं। समवर्ती कम्प्यूटेशन के मॉडल के पूर्व दृष्टिकोणों के साथ यह एक तेज ब्रेक था। बफ़रिंग की कमी ने ऐक्टर मॉडल के विकास के समय बहुत सी गलत अवधारणा उत्पन्न की और अभी भी एक विवादास्पद समस्या है। कुछ शोधकर्ताओं ने तर्क दिया कि संदेश ईथर या पर्यावरण में बफ़र किए गए हैं। इसके अतिरिक्त, ऐक्टर मॉडल में संदेश केवल प्रेषित किए जाते हैं (जैसे [[इंटरनेट प्रोटोकॉल]] में [[पैकेट (सूचना प्रौद्योगिकी)]]); प्राप्तकर्ता के साथ एक तुल्यकालिक हैंडशेक की कोई आवश्यकता नहीं है। | ||
===संदेशों में ऐक्टर निर्माण प्लस एड्रैस का अर्थ | ===संदेशों में ऐक्टर निर्माण प्लस एड्रैस का अर्थ वेरिएबल टोपोलॉजी === | ||
ऐक्टर मॉडल का एक स्वाभाविक विकास संदेशों में एड्रैस की स्वीकृति देना था। पैकेट स्विचिंग [1961 और 1964] से प्रभावित, हेविट ने समवर्ती | ऐक्टर मॉडल का एक स्वाभाविक विकास संदेशों में एड्रैस की स्वीकृति देना था। पैकेट स्विचिंग [1961 और 1964] से प्रभावित, हेविट ने समवर्ती कम्प्यूटेशन के एक नए मॉडल के विकास का प्रस्ताव रखा जिसमें संचार के लिए कोई आवश्यक क्षेत्र परिशुद्ध नहीं होगा: वे रिक्त हो सकते हैं। निस्संदेह, यदि संचार प्रेषित करने वाला चाहता है कि प्राप्तकर्ता के पास उन एड्रैस तक अभिगम्य हो जो प्राप्तकर्ता के पास पहले से नहीं है, तो एड्रैस संचार में प्रेषित किया जाना होगा। | ||
उदाहरण के लिए, | उदाहरण के लिए, ऐक्टर को एक प्राप्तकर्ता ऐक्टर को एक संदेश प्रेषित करने की आवश्यकता हो सकती है जिससे वह बाद में प्रतिक्रिया प्राप्त करने की अपेक्षा करता है, लेकिन प्रतिक्रिया वास्तव में एक तीसरे ऐक्टर घटक द्वारा नियंत्रित की जाएगी जिसे प्रतिक्रिया प्राप्त करने और नियंत्रण करने के लिए कॉन्फ़िगर किया गया है उदाहरण के लिए, [[पर्यवेक्षक पैटर्न]] को प्रयुक्त करने वाला एक अलग ऐक्टर होता है। मूल ऐक्टर एक संचार भेजकर इसे पूरा कर सकता है जिसमें वह संदेश सम्मिलित है जिसे वह प्रेषित करना चाहता है, साथ ही तीसरे ऐक्टर का एड्रैस जो प्रतिक्रिया को नियंत्रित करेगा, उसे पुनः प्रारंभ करना कहा जाता है कभी-कभी इसे निरंतरता या [[स्टैक फ्रेम]] भी कहा जाता है। जब प्राप्तकर्ता ऐक्टर प्रतिक्रिया प्रेषित करने के लिए तैयार होता है, तो वह प्रतिक्रिया संदेश को फिर से प्रारंभ करने वाले ऐक्टर के एड्रैस पर भेजता है जो मूल संचार में सम्मिलित था। | ||
इसलिए, | इसलिए, ऐक्टर की नए ऐक्टर को बनाने की क्षमता जिसके साथ वे संचार का आदान-प्रदान कर सकते हैं, संदेशों में अन्य ऐक्टर के एड्रैस सम्मिलित करने की क्षमता के साथ, ऐक्टर को एक दूसरे के साथ यादृच्छिक रूप से वेरिएबल टोपोलॉजी संबंधों को बनाने और भाग लेने की क्षमता देता है, जितना सिमुला और अन्य वस्तु-उन्मुख भाषाओं में वस्तुओं को भी संदेश-विनिमय वस्तुओं के वेरिएबल टोपोलॉजी में संबंधपरक रूप से बनाया जा सकता है। | ||
=== स्वाभाविक रूप से समवर्ती === | === स्वाभाविक रूप से समवर्ती === | ||
अनुक्रमिक प्रक्रियाओं की रचना के आधार पर | अनुक्रमिक प्रक्रियाओं की रचना के आधार पर पूर्व दृष्टिकोण के विपरीत, ऐक्टर मॉडल को एक अंतर्निहित समवर्ती मॉडल के रूप में विकसित किया गया था। ऐक्टर मॉडल में अनुक्रमिकता एक विशेष मामला था जो ऐक्टर मॉडल सिद्धांत में वर्णित समवर्ती कम्प्यूटेशन से प्राप्त हुआ था। | ||
===संदेश आगमन के | ===संदेश आगमन के क्रम पर कोई आवश्यकता नहीं=== | ||
हेविट ने आवश्यकता को जोड़ने के | हेविट ने आवश्यकता को जोड़ने के विपरीत तर्क दिया कि संदेशों को उस क्रम में आना चाहिए जिसमें वे ऐक्टर को प्रेषित किए गए हैं। यदि आउटपुट संदेश क्रम वांछित है, तो यह एक क्यू ऐक्टर द्वारा तैयार किया जा सकता है जो यह कार्यक्षमता प्रदान करता है। ऐसा क्यू ऐक्टर आने वाले संदेशों को क्यू करेगा ताकि उन्हें फीफो क्रम में पुनर्प्राप्त किया जा सके। तो अगर एक ऐक्टर <code>X</code> ने ऐक्टर <code>M1</code> को एक संदेश <code>Y</code> ने <code>X</code> को एक और संदेश <code>M2</code> को <code>Y</code> भेजा, तो कोई आवश्यकता नहीं है कि <code>M1</code>, <code>Y</code> से पहले <code>M2</code>पर पहुंच जाए। | ||
इस संबंध में ऐक्टर मॉडल पैकेट स्विचिंग सिस्टम को प्रतिबिंबित करता है जो इस बात की | इस संबंध में ऐक्टर मॉडल पैकेट स्विचिंग सिस्टम को प्रतिबिंबित करता है जो इस बात की प्रत्याभूति नहीं देता है कि प्रेषित किए गए क्रम में पैकेट प्राप्त होना चाहिए। डिलीवरी प्रत्याभूति का आदेश प्रदान नहीं करने से पैकेट को बफर पैकेट में स्विच करने, पैकेट प्रेषित करने के लिए कई पथों का उपयोग करने, क्षतिग्रस्त पैकेट को पुनः प्रेषित करने और अन्य अनुकूलन प्रदान करने की स्वीकृति मिलती है। | ||
उदाहरण के लिए, | उदाहरण के लिए, ऐक्टर को संदेशों के प्रसंस्करण को पाइपलाइन करने की स्वीकृति है। इसका तात्पर्य यह है कि किसी संदेश <code>M1</code>को प्रोसेस करने के समय ऐक्टर अगले संदेश को संसाधित करने के लिए उपयोग किए जाने वाले व्यवहार को निर्दिष्ट कर सकता है, और फिर वास्तव में दूसरे संदेश <code>M2</code> को संसाधित करना प्रारंभ कर सकता है इससे पहले कि यह प्रसंस्करण <code>M1</code>समाप्त कर ले। सिर्फ इसलिए कि ऐक्टर को संदेशों के प्रसंस्करण को पाइपलाइन करने की स्वीकृति है, इसका तात्पर्य यह नहीं है कि उसे प्रसंस्करण को पाइपलाइन करना चाहिए। संदेश पाइपलाइन में है या नहीं यह एक अभियांत्रिक ट्रेडऑफ़ है। एक बाहरी प्रेक्षक को कैसे पता चलेगा कि किसी ऐक्टर द्वारा संदेश का प्रसंस्करण पाइपलाइन किया गया है या नहीं किया है? पाइपलाइनिंग की संभावना से निर्मित ऐक्टर की परिभाषा में कोई अस्पष्टता नहीं है। वास्तव मे, कुछ कार्यान्वयनों में गलत तरीके से पाइपलाइन अनुकूलन करना संभव है, जिस स्थिति में अनपेक्षित व्यवहार हो सकता है। | ||
=== | === स्थानीयता === | ||
ऐक्टर मॉडल की एक अन्य महत्वपूर्ण विशेषता स्थानीयता है। | ऐक्टर मॉडल की एक अन्य महत्वपूर्ण विशेषता स्थानीयता है। | ||
स्थानीयता का अर्थ है कि एक संदेश को संसाधित करने में, | स्थानीयता का अर्थ है कि एक संदेश को संसाधित करने में, ऐक्टर केवल उन एड्रैस पर संदेश प्रेषित कर सकता है जो उसे संदेश में प्राप्त होते हैं, वे एड्रैस जो पहले से ही संदेश प्राप्त करने से पहले थे, और ऐक्टर के एड्रैस जो संदेश को (लेकिन ऐक्टर के सिंथेसाइजिंग एड्रैस को देखें।।) संसाधित करते समय बनाते हैं। | ||
इसके | इसके अतिरिक्त स्थानीयता का अर्थ है कि कई स्थानों में एक साथ परिवर्तन नहीं होता है। इस तरह यह समरूपता के कुछ अन्य मॉडलों से अलग है, उदाहरण के लिए, [[पेट्री नेट]] मॉडल जिसमें टोकन को एक साथ कई स्थानों से हटाकर अन्य स्थानों पर रखा जाता है। | ||
=== कंपोज़िंग एक्टर सिस्टम्स === | === कंपोज़िंग एक्टर सिस्टम्स === | ||
गुल आगा के डॉक्टरेट शोध प्रबंध में विकसित किए गए [[ प्रतिरूपकता (प्रोग्रामिंग) ]] का एक महत्वपूर्ण | गुल आगा के डॉक्टरेट शोध प्रबंध में विकसित किए गए [[ प्रतिरूपकता (प्रोग्रामिंग) |प्रतिरूपकता (प्रोग्रामिंग)]] का एक महत्वपूर्ण स्वरूप ऐक्टर प्रणालियों को बड़े क्षेत्रों में बनाने का विचार है,<ref name="agha1986"/> बाद में गुल आगा, इयान मेसन, स्कॉट स्मिथ और [[कैरोलिन टैल्कॉट]] द्वारा विकसित किया गया।<ref name="agha1993"/> | ||
=== व्यवहार === | === व्यवहार === | ||
प्रमुख नवपरिवर्तन गणितीय कार्य के रूप में निर्दिष्ट व्यवहार का परिचय था, यह व्यक्त करने के लिए कि ऐक्टर क्या करता है जब वह संदेश को संसाधित करता है, जिसमें आने वाले अगले संदेश को संसाधित करने के लिए एक नया व्यवहार निर्दिष्ट करना सम्मिलित है। व्यवहार ने समरूपता में साझाकरण को गणितीय रूप से मॉडल करने के लिए एक तंत्र प्रदान किया। | |||
व्यवहार ने ऐक्टर मॉडल को कार्यान्वयन विवरण से भी मुक्त कर दिया, उदाहरण के लिए, स्मॉलटाक -72 टोकन स्ट्रीम | व्यवहार ने ऐक्टर मॉडल को कार्यान्वयन विवरण से भी मुक्त कर दिया, उदाहरण के लिए, स्मॉलटाक -72 टोकन स्ट्रीम इंटरप्रेटर है। हालांकि, यह समझना महत्वपूर्ण है कि ऐक्टर मॉडल द्वारा वर्णित प्रणालियों के कुशल कार्यान्वयन के लिए व्यापक अनुकूलन की आवश्यकता होती है। विवरण के लिए ऐक्टर मॉडल कार्यान्वयन देखें। | ||
=== मॉडलिंग अन्य समवर्ती सिस्टम === | === मॉडलिंग अन्य समवर्ती सिस्टम === | ||
अन्य | अन्य समरूपता प्रणालियों (जैसे, [[प्रक्रिया गणना]]) को [[दो-चरण प्रतिबद्ध प्रोटोकॉल]] का उपयोग करके ऐक्टर मॉडल में तैयार किया जा सकता है।<ref>Frederick Knabe. [https://www.researchgate.net/profile/Frederick_Knabe/publication/2823488_A_Distributed_Protocol_for_Channel-Based_Communication_with_Choice/links/00463536b853ab72ef000000.pdf A Distributed Protocol for Channel-Based Communication with Choice PARLE 1992] {{Webarchive|url=https://web.archive.org/web/20170831084514/https://www.researchgate.net/profile/Frederick_Knabe/publication/2823488_A_Distributed_Protocol_for_Channel-Based_Communication_with_Choice/links/00463536b853ab72ef000000.pdf |date=2017-08-31 }}.</ref> | ||
=== कम्प्यूटेशनल प्रतिनिधित्व प्रमेय === | === कम्प्यूटेशनल प्रतिनिधित्व प्रमेय === | ||
{{see also| | {{see also|ऐक्टर मॉडल के सांकेतिक सेमेन्टिक}} | ||
सिस्टम के लिए ऐक्टर मॉडल में एक कम्प्यूटेशनल प्रतिनिधित्व प्रमेय है जो इस अर्थ में बंद है कि वे बाहर से संचार प्राप्त नहीं करते हैं। एक | |||
सिस्टम के लिए ऐक्टर मॉडल में एक कम्प्यूटेशनल प्रतिनिधित्व प्रमेय है जो इस अर्थ में बंद है कि वे बाहर से संचार प्राप्त नहीं करते हैं। एक संवृत प्रणाली <math>\mathtt{S}</math> द्वारा निरूपित गणितीय संकेत प्रारंभिक व्यवहार <math>\bot_\mathtt{S}</math> से निर्मित होता है, और एक व्यवहार-अनुमानित फ़ंक्शन <math>\mathbf{progression}_\mathtt{S}</math> से बनाया गया है। ये तेजी से अधिकतम सन्निकटन प्राप्त करते हैं और <math>\mathtt{S}</math> के लिए एक संकेत (अर्थ) का निर्माण करते हैं, जैसा [हेविट 2008; क्लिंजर 1981]: | |||
:<math>\mathbf{Denote}_{\mathtt{S}} \equiv \lim_{i \to \infty} \mathbf{progression}_{\mathtt{S}^i}(\bot_\mathtt{S})</math> | :<math>\mathbf{Denote}_{\mathtt{S}} \equiv \lim_{i \to \infty} \mathbf{progression}_{\mathtt{S}^i}(\bot_\mathtt{S})</math> | ||
इस प्रकार से, <math>\mathtt{S}</math> गणितीय रूप से इसके सभी संभावित व्यवहारों के संदर्भ में वर्णित किया जा सकता है | इस प्रकार से, <math>\mathtt{S}</math> गणितीय रूप से इसके सभी संभावित व्यवहारों के संदर्भ में वर्णित किया जा सकता है जिनमें वे भी सम्मिलित हैं जिनमें अबाधित अनिर्धारणवाद सम्मिलित है। यद्यपि <math>\mathbf{Denote}_{\mathtt{S}}</math> का क्रियान्वयन <math>\mathtt{S}</math> नहीं है, इसका उपयोग चर्च-ट्यूरिंग-रॉसर-क्लीन थीसिस [क्लीन 1943] के सामान्यीकरण को प्रमाणित करने के लिए किया जा सकता है: | ||
उपरोक्त प्रमेय का एक परिणाम यह है कि एक परिमित ऐक्टर | उपरोक्त प्रमेय का एक परिणाम यह है कि एक परिमित ऐक्टर विभिन्न आउटपुट की {{clarify span|uncountable|reason=Uncountability is the property of real numbers, this sounds like (countably) infinite was meant|date=November 2013}} संख्या के साथ गैर-निर्धारित रूप से प्रतिक्रिया कर सकता है। | ||
=== | === तार्किक प्रोग्रामिंग से संबंध === | ||
ऐक्टर मॉडल के विकास के लिए प्रमुख प्रेरणाओं में से एक [[योजनाकार प्रोग्रामिंग भाषा]] के विकास में उत्पन्न नियंत्रण संरचना के | ऐक्टर मॉडल के विकास के लिए प्रमुख प्रेरणाओं में से एक [[योजनाकार प्रोग्रामिंग भाषा]] के विकास में उत्पन्न नियंत्रण संरचना के समस्याओ को समझना और उनसे सामना करना था।{{citation needed|date=October 2013}} ऐक्टर मॉडल को प्रारंभ में परिभाषित किए जाने के बाद, [[रॉबर्ट कोवाल्स्की]] की शोध प्रबंध के सापेक्ष मॉडल की क्षमता को समझना एक महत्वपूर्ण चुनौती थी कि कम्प्यूटेशन को निगमन द्वारा समाहित किया जा सकता है। हेविट ने तर्क दिया कि ऐक्टर मॉडल में समवर्ती कम्प्यूटेशन के लिए कोवाल्स्की की शोध प्रबंध गलत ( समवर्ती कम्प्यूटेशन में अनिश्चितता देखें) प्रमाणित हुई । | ||
फिर भी, [[तर्क प्रोग्रामिंग]] को समवर्ती | फिर भी, [[तर्क प्रोग्रामिंग]] को समवर्ती कम्प्यूटेशन तक विस्तारित करने का प्रयास किया गया। हालांकि, हेविट और आगा [1991] ने दावा किया कि परिणामी प्रणालियां निम्नलिखित अर्थों में निगमनात्मक नहीं थीं: समवर्ती तर्क प्रोग्रामिंग प्रणालियों के कम्प्यूटेशनल चरण पूर्व चरणों से तर्कपूर्ण रूप से अनुसरण नहीं करते हैं। समवर्ती कम्प्यूटेशन में अनिश्चितता देखें। हाल ही में, तार्किक प्रोग्रामिंग को ऐक्टर मॉडल में एक तरह से एकीकृत किया गया है जो तार्किक सेमेन्टिक्स को बनाए रखता है।<ref name="zenil"/> | ||
=== | === माइग्रेशन === | ||
ऐक्टर मॉडल में | ऐक्टर मॉडल में माइग्रेशन स्थान बदलने के लिए ऐक्टर की क्षमता होती है। उदाहरण के लिए, अपने शोध प्रबंध में, अकी योनेज़ावा ने एक पोस्ट का मॉडल तैयार किया जिसमें ग्राहक ऐक्टर प्रवेश कर सकते थे, संचालन के समय स्थान बदल सकते थे और बाहर निकल सकते थे। ऐक्टर जो माइग्रेट कर सकता है, एक स्थान ऐक्टर के द्वारा मॉडल किया जा सकता है जो ऐक्टर के माइग्रेट होने पर बदल जाता है। हालाँकि इस मॉडलिंग की विश्वसनीयता विवादास्पद है और शोध का विषय है।{{Citation needed|date=March 2012}} | ||
=== सुरक्षा === | === सुरक्षा === | ||
ऐक्टर की सुरक्षा को निम्नलिखित तरीकों से संरक्षित किया जा सकता है: | |||
* [[कठोर नियंत्रण]] जिसमें ऐक्टर | * [[कठोर नियंत्रण|स्थायी नियंत्रण]] जिसमें ऐक्टर भौतिक रूप से जुड़े होते हैं | ||
* [[कंप्यूटर हार्डवेयर]] जैसे [[बरोज़ B5000]], [[लिस्प मशीन]], आदि। | * [[कंप्यूटर हार्डवेयर]] जैसे [[बरोज़ B5000]], [[लिस्प मशीन|एलआईएसपी मशीन]], आदि। | ||
* | * वर्चुअल मशीन जैसे जावा वर्चुअल मशीन, सामान्य भाषा रनटाइम आदि। | ||
* क्षमता-आधारित | * ऑपरेटिंग सिस्टम क्षमता-आधारित सिस्टम के रूप में | ||
* | * ऐक्टर और उनके एड्रैस के डिजिटल हस्ताक्षर और/या [[ कूटलेखन |एन्क्रिप्शन]] | ||
=== | === ऐक्टर के एड्रैस संश्लेषित करना === | ||
ऐक्टर मॉडल में एक | ऐक्टर मॉडल में एक सरल बिंदु ऐक्टर के एड्रैस को संश्लेषित करने की क्षमता है। कुछ स्थितियों में एड्रैस के संश्लेषण को रोकने के लिए सुरक्षा का उपयोग (सुरक्षा देखें) किया जा सकता है। हालाँकि, यदि ऐक्टर का एड्रैस केवल एक बिट स्ट्रिंग है, तो स्पष्ट रूप से इसे संश्लेषित किया जा सकता है, हालांकि यह कठिन हो सकता है या किसी ऐक्टर के एड्रैस का अनुमान लगाना भी असंभव हो सकता है यदि बिट स्ट्रिंग्स अपेक्षाकृत अधिक लंबे हैं। सरल ऑब्जेक्ट अभिगम प्रोटोकॉल एक समापन बिंदु के एड्रैस के लिए एक यूनिफ़ॉर्म रिसोर्स लोकेटर का उपयोग करता है जहाँ ऐक्टर तक पहुँचा जा सकता है। चूंकि यूनिफ़ॉर्म रिसोर्स लोकेटर एक वर्ण स्ट्रिंग है, इसे स्पष्ट रूप से संश्लेषित किया जा सकता है, हालांकि एन्क्रिप्शन इसे अनुमान लगाने में लगभग असंभव बना सकता है। | ||
ऐक्टर के एड्रैस का संश्लेषण सामान्य रूप से मानचित्रण का उपयोग करके किया जाता है। वास्तविक ऐक्टर एड्रैस पर मैपिंग करने के लिए ऐक्टर प्रणाली का उपयोग करने का विचार है। उदाहरण के लिए, कंप्यूटर पर कंप्यूटर की मेमोरी संरचना को ऐक्टर प्रणाली के रूप में तैयार किया जा सकता है जो मैपिंग करता है। सरल ऑब्जेक्ट अभिगम प्रोटोकॉल एड्रैस की स्थिति में, यह [[ डोमेन की नामांकन प्रणाली |डोमेन की नामांकन प्रणाली]] और शेष यूनिफ़ॉर्म रिसोर्स लोकेटर (यूआरएल) मैपिंग की मॉडलिंग कर रहा है। | |||
== | ===== संदेश-संचारण के अन्य मॉडलों के साथ तुलना करें ===== | ||
समरूपता पर [[रॉबिन मिलनर]] का प्रारम्भिक प्रकाशित कार्य<ref>Robin Milner. Processes: A Mathematical Model of Computing Agents in Logic Colloquium 1973.</ref> यह भी उल्लेखनीय था कि यह अनुक्रमिक प्रक्रियाओं की रचना पर आधारित नहीं था। उनका काम ऐक्टर मॉडल से अलग था क्योंकि यह निश्चित टोपोलॉजी की प्रक्रियाओं की एक निश्चित संख्या पर आधारित था जो सिंक्रोनस संचार का उपयोग करके संख्याओं और स्ट्रिंग को संप्रेषित करता था। मूल संचार अनुक्रमिक प्रक्रिया (सीएसपी) मॉडल<ref>C.A.R. Hoare. [http://portal.acm.org/citation.cfm?id=359585&dl=GUIDE&coll=GUIDE&CFID=19884966&CFTOKEN=55490895 Communicating sequential processes] CACM. August 1978.</ref> टोनी होरे द्वारा प्रकाशित ऐक्टर मॉडल से भिन्न है क्योंकि यह एक निश्चित टोपोलॉजी में जुड़ी अनुक्रमिक प्रक्रियाओं की एक निश्चित संख्या की पैरेलेल रचना पर आधारित था, और प्रक्रिया के नामों के आधार पर सिंक्रोनस संदेश-प्रेषण का उपयोग करके (ऐक्टर मॉडल और प्रक्रिया गणना इतिहास प्रारंभिक कार्य देखें) संचार करना था। सीएसपी के बाद के संस्करणों ने चैनलों के माध्यम से अज्ञात संचार के पक्ष में प्रक्रिया के नाम के आधार पर संचार को छोड़ दिया, संचार प्रणालियों के गणना और π-गणना पर मिलनर के काम में भी एक दृष्टिकोण का उपयोग किया गया। | |||
मिल्नर और होरे दोनों के इन | मिल्नर और होरे दोनों के इन प्रारम्भिक मॉडलों में परिबद्ध गैर-निर्धारणवाद का गुण था। आधुनिक, सैद्धांतिक सीएसपी ([होरे 1985] और [रोसको 2005]) स्पष्ट रूप से अपरिबद्ध गैर-निर्धारणवाद प्रदान करता है। | ||
[[पेट्री डिश]] और उनके एक्सटेंशन (उदाहरण के लिए, रंगीन पेट्री नेट) | [[पेट्री डिश]] और उनके एक्सटेंशन (उदाहरण के लिए, रंगीन पेट्री नेट) ऐक्टर की तरह हैं, जिसमें वे एसिंक्रोनस संदेश प्रेषण और अपरिबद्ध नॉनडेटर्मिनिज्म (गैर-निर्धारणवाद) पर आधारित होते हैं, जबकि वे प्रारम्भिक सीएसपी की तरह होते हैं, जिसमें वे प्राथमिक प्रसंस्करण चरणों (संक्रमण) और संदेश रिपॉजिटरी (स्थानों) की निश्चित टोपोलॉजी को परिभाषित करते हैं। | ||
== प्रभाव == | == प्रभाव == | ||
Line 149: | Line 151: | ||
=== सिद्धांत === | === सिद्धांत === | ||
ऐक्टर मॉडल ने π-कैलकुलस के विकास और बाद की प्रक्रिया कैलकुली को प्रभावित किया है। अपने ट्यूरिंग व्याख्यान में, रॉबिन मिलनर ने लिखा:<ref>{{cite journal|title=अंतःक्रिया के तत्व|journal=Communications of the ACM |volume=36 |pages=78–89 |doi=10.1145/151233.151240 |year=1993 |last1=Milner |first1=Robin|doi-access=free }}</ref> | ऐक्टर मॉडल ने π-कैलकुलस (गणना) के विकास और बाद की प्रक्रिया कैलकुली को प्रभावित किया है। अपने ट्यूरिंग व्याख्यान में, रॉबिन मिलनर ने लिखा:<ref>{{cite journal|title=अंतःक्रिया के तत्व|journal=Communications of the ACM |volume=36 |pages=78–89 |doi=10.1145/151233.151240 |year=1993 |last1=Milner |first1=Robin|doi-access=free }}</ref> | ||
<blockquote>अब, शुद्ध लैम्ब्डा-कैलकुलस को केवल दो प्रकार | <blockquote>अब, शुद्ध लैम्ब्डा-कैलकुलस को केवल दो प्रकार के टर्म्स और वेरिएबल्स के साथ बनाया गया है। क्या हम एक प्रक्रिया कैलकुलस के लिए समान अर्थव्यवस्था प्राप्त कर सकते हैं? कार्ल हेविट ने अपने ऐक्टर के मॉडल के साथ इस चुनौती का जवाब बहुत पहले दे दिया था; उन्होंने घोषणा की कि एक मान, और मानो पर एक संक्रिया, और प्रक्रिया सभी को ऐक्टर के समान होना चाहिए। | ||
इस लक्ष्य ने मुझे प्रभावित किया, क्योंकि यह एकरूपता और | इस लक्ष्य ने मुझे प्रभावित किया, क्योंकि यह एकरूपता और एक्सप्रेशन की पूर्णता का तात्पर्य है ... लेकिन इससे पहले कि मैं देख पाता कि बीजगणितीय गणना के संदर्भ में लक्ष्य कैसे प्राप्त किया जाए ... | ||
इसलिए, हेविट | |||
इसलिए, हेविट के विचार में, हमारा पहला चरण यह उपेक्षा करना है कि सभी वस्तुए जो शब्दों से निरूपित हों या नामों से अभिगम की गई हों - मान, रजिस्टर, ऑपरेटर, प्रक्रियाएं, वस्तुएं - सभी समान तरह की हों; वे सभी प्रक्रियाएं होनी चाहिए।</blockquote> | |||
=== अभ्यास === | === अभ्यास === | ||
व्यावसायिक अभ्यास पर ऐक्टर मॉडल का व्यापक प्रभाव पड़ा है। उदाहरण के लिए, ट्विटर ने स्केलेबिलिटी के लिए | व्यावसायिक अभ्यास पर ऐक्टर मॉडल का व्यापक प्रभाव पड़ा है। उदाहरण के लिए, ट्विटर ने स्केलेबिलिटी (मापनीयता) के लिए ऐक्टर का उपयोग किया है।<ref>{{cite web |url=https://waimingmok.wordpress.com/2009/06/27/how-twitter-is-scaling/ |title=How Twitter Is Scaling « Waiming Mok's Blog |publisher=Waimingmok.wordpress.com |date=2009-06-27 |access-date=2012-12-02 |archive-date=2021-02-05 |archive-url=https://web.archive.org/web/20210205000818/https://waimingmok.wordpress.com/2009/06/27/how-twitter-is-scaling/ |url-status=live }}</ref> साथ ही, माइक्रोसॉफ्ट ने अपने एसिंक्रोनस एजेंट्स लाइब्रेरी के विकास में ऐक्टर मॉडल का उपयोग किया है।<ref>"[https://msdn.microsoft.com/magazine/623b6c0f-c229-4fcd-8a9d-a5ef24c60db9 Actor-Based Programming with the Asynchronous Agents Library] {{Webarchive|url=https://web.archive.org/web/20170831090637/https://msdn.microsoft.com/magazine/623b6c0f-c229-4fcd-8a9d-a5ef24c60db9 |date=2017-08-31 }}" MSDN September 2010.</ref> नीचे ऐक्टर लाइब्रेरी और रूपरेखा अनुभाग में सूचीबद्ध कई अन्य ऐक्टर लाइब्रेरी हैं। | ||
== संबोधित मुद्दे == | == संबोधित मुद्दे == | ||
हेविट [2006] के अनुसार, ऐक्टर मॉडल निम्नलिखित सहित कंप्यूटर और संचार | हेविट [2006] के अनुसार, ऐक्टर मॉडल निम्नलिखित सहित कंप्यूटर और संचार संरचना, [[समवर्ती प्रोग्रामिंग भाषा]]ओं और वेब सेवाओं में समस्याओ को संबोधित करता है: | ||
* मापनीयता: स्थानीय और गैर-स्थानीय | * मापनीयता: स्थानीय और गैर-स्थानीय रूप से समवर्ती को बढ़ाने की चुनौती है। | ||
* [[स्थान पारदर्शिता]]: स्थानीय और गैर-स्थानीय | * [[स्थान पारदर्शिता]]: स्थानीय और गैर-स्थानीय समरूपता के बीच की दूरी को कम करना। पारदर्शिता वर्तमान में एक विवादास्पद समस्या है। कुछ शोधकर्ता {{Who|date=June 2010}} ने समवर्ती प्रोग्रामिंग भाषाओं जैसे, जावा (प्रोग्रामिंग भाषा) और C # (प्रोग्रामिंग भाषा) का उपयोग करते हुए स्थानीय समरूपता के बीच वेब सेवाओं के लिए सरल ऑब्जेक्ट अभिगम प्रोटोकॉल का उपयोग करके गैर-स्थानीय समरूपता के बीच विशुद्ध वियोजन की वकालत की है। विशुद्ध वियोजन पारदर्शिता की कमी उत्पन्न करता है जो समस्याओं का कारण बनता है जब वेब सेवाओं के लिए स्थानीय और गैर-स्थानीय अभिगम्य के बीच परिवर्तन करना वांछनीय/आवश्यक (डिस्ट्रिब्यूटेड कंप्यूटिंग देखें) होता है । | ||
* असंगति: असंगति | * असंगति: असंगति मानक है क्योंकि मानव सूचना प्रणाली की अंतःक्रियाओं के बारे में सभी बहुत बड़ी ज्ञान प्रणालियाँ असंगत हैं। यह विसंगति बहुत बड़ी प्रणालियों (जैसे, माइक्रोसॉफ्ट विंडोज सॉफ्टवेयर, आदि) के प्रलेखन और विशिष्टताओं तक विस्तृत है, जो आंतरिक रूप से असंगत हैं। | ||
ऐक्टर मॉडल में | ऐक्टर मॉडल में प्रस्तुत किए गए कई विचार अब इन्हीं कारणों [हेविट 2006बी 2007बी] के लिए [[मल्टी-एजेंट सिस्टम|बहु एजेंट प्रणाली]] में भी एप्लीकेशन प्राप्त कर रहे हैं। मुख्य अंतर यह है कि एजेंट सिस्टम (अधिकांश परिभाषाओं में) ऐक्टर पर अतिरिक्त प्रतिबंध लगाते हैं, सामान्य रूप से यह आवश्यक होता है कि वे प्रतिबद्धताओं और लक्ष्यों का उपयोग करें। | ||
== | == ऐक्टर के साथ प्रोग्रामिंग == | ||
कई | कई विभिन्न प्रोग्रामिंग भाषा ऐक्टर मॉडल या इसके कुछ परिवर्तन को नियोजित करती हैं। इन भाषाओं में सम्मिलित हैं: | ||
=== प्रारंभिक ऐक्टर प्रोग्रामिंग भाषाएं === | === प्रारंभिक ऐक्टर प्रोग्रामिंग भाषाएं === | ||
Line 772: | Line 775: | ||
== बाहरी संबंध == | == बाहरी संबंध == | ||
* [http://channel9.msdn.com/Shows/Going+Deep/Hewitt-Meijer-and-Szyperski-The-Actor-Model-everything-you-wanted-to-know-but-were-afraid-to-ask Hewitt, Meijer और Szyperski: The Actor Model (everything you wanted to know, but were afraid to ask)] | * [http://channel9.msdn.com/Shows/Going+Deep/Hewitt-Meijer-and-Szyperski-The-Actor-Model-everything-you-wanted-to-know-but-were-afraid-to-ask Hewitt, Meijer और Szyperski: The Actor Model (everything you wanted to know, but were afraid to ask)] माइक्रोसॉफ्ट Channel 9. April 9, 2012. {{YouTube |id=7erJ1DV_Tlo}} | ||
* [http://functionaljava.org/ Functional जावा] {{Webarchive|url=https://web.archive.org/web/20110709025649/http://functionaljava.org/ |date=2011-07-09 }} – a जावा library that includes an implementation of concurrent actors with code examples in standard जावा और जावा 7 BGGA style. | * [http://functionaljava.org/ Functional जावा] {{Webarchive|url=https://web.archive.org/web/20110709025649/http://functionaljava.org/ |date=2011-07-09 }} – a जावा library that includes an implementation of concurrent actors with code examples in standard जावा और जावा 7 BGGA style. | ||
* [https://web.archive.org/web/20090124154231/http://osl.cs.uiuc.edu/af/ ActorFoundry] – a जावा-based library for actor programming. The familiar जावा syntax, an ant build file और a bunch of example make the entry barrier very low. | * [https://web.archive.org/web/20090124154231/http://osl.cs.uiuc.edu/af/ ActorFoundry] – a जावा-based library for actor programming. The familiar जावा syntax, an ant build file और a bunch of example make the entry barrier very low. | ||
Line 778: | Line 781: | ||
* [http://akka.io Akka] – actor based library in Scala और जावा, from [[Lightbend Inc.]] | * [http://akka.io Akka] – actor based library in Scala और जावा, from [[Lightbend Inc.]] | ||
* [http://gpars.org/ GPars] – a concurrency library for अपाचे ग्रूवी और जावा | * [http://gpars.org/ GPars] – a concurrency library for अपाचे ग्रूवी और जावा | ||
* [http://msdn.microsoft.com/en-us/library/dd492627.aspx Asynchronous Agents Library] – | * [http://msdn.microsoft.com/en-us/library/dd492627.aspx Asynchronous Agents Library] – माइक्रोसॉफ्ट actor library for Visual C++. "The Agents Library is a C++ template library that promotes an actor-based programming model और in-process message passing for coarse-grained dataflow और pipelining tasks. " | ||
* [https://github.com/lightful/syscpp/ ActorThread in C++11] – base template providing the gist of the actor model over naked threads in standard C++11 | * [https://github.com/lightful/syscpp/ ActorThread in C++11] – base template providing the gist of the actor model over naked threads in standard C++11 | ||
[[Category: | [[Category:All Wikipedia articles needing clarification]] | ||
[[Category:All accuracy disputes]] | |||
[[Category:All articles with specifically marked weasel-worded phrases]] | |||
[[Category:All articles with unsourced statements]] | |||
[[Category:Articles with disputed statements from August 2013]] | |||
[[Category:Articles with hatnote templates targeting a nonexistent page]] | |||
[[Category:Articles with invalid date parameter in template]] | |||
[[Category:Articles with specifically marked weasel-worded phrases from June 2010]] | |||
[[Category:Articles with unsourced statements from March 2012]] | |||
[[Category:Articles with unsourced statements from March 2018]] | |||
[[Category:Articles with unsourced statements from October 2013]] | |||
[[Category:CS1 English-language sources (en)]] | |||
[[Category:CS1 errors]] | |||
[[Category:Created On 15/05/2023]] | [[Category:Created On 15/05/2023]] | ||
[[Category:Lua-based templates]] | |||
[[Category:Machine Translated Page]] | |||
[[Category:Multi-column templates]] | |||
[[Category:Pages using div col with small parameter]] | |||
[[Category:Pages with script errors]] | |||
[[Category:Templates Vigyan Ready]] | |||
[[Category:Templates that add a tracking category]] | |||
[[Category:Templates that generate short descriptions]] | |||
[[Category:Templates using TemplateData]] | |||
[[Category:Templates using under-protected Lua modules]] | |||
[[Category:Webarchive template wayback links]] | |||
[[Category:Wikipedia articles needing clarification from November 2013]] | |||
[[Category:Wikipedia fully protected templates|Div col]] | |||
[[Category:अभिनेता मॉडल (कंप्यूटर विज्ञान)| अभिनेता मॉडल (कंप्यूटर विज्ञान) ]] | |||
[[Category:समवर्ती कंप्यूटिंग]] |
Latest revision as of 09:11, 26 May 2023
कंप्यूटर विज्ञान में ऐक्टर मॉडल समवर्ती कम्प्यूटेशन का एक गणितीय मॉडल है जो एक 'ऐक्टर' को समवर्ती कम्प्यूटेशन के मौलिक मूलभूत अंग के रूप में मानता है। संदेश प्राप्त करने के जवाब में, ऐक्टर स्थानीय निर्णय ले सकता है, अधिक ऐक्टर बना सकता है, अधिक संदेश भेज सकता है, और यह निर्धारित कर सकता है कि प्राप्त अगले संदेश का जवाब कैसे दिया जाए। ऐक्टर अपने स्वयं के निजी स्थिति को संशोधित कर सकते हैं, लेकिन लॉक-आधारित सिंक्रनाइज़ेशन की आवश्यकता को हटाकर संदेश के माध्यम से अप्रत्यक्ष रूप से एक-दूसरे को प्रभावित कर सकते हैं।
ऐक्टर मॉडल की उत्पत्ति 1973 में हुई थी।[1] इसका उपयोग गणना के सैद्धांतिक समझ (कंप्यूटर विज्ञान) के लिए एक रूपरेखा के रूप में और समवर्ती प्रणालियों के कई व्यावहारिक कार्यान्वयन के लिए सैद्धांतिक आधार के रूप में उपयोग किया गया है। मॉडल का अन्य कार्य से संबंध ऐक्टर मॉडल और प्रक्रिया गणना में चर्चा की गई है।
इतिहास
कार्ल हेविट के अनुसार, कम्प्यूटेशन के पूर्व मॉडलों के विपरीत, ऐक्टर मॉडल सामान्य सापेक्षता और क्वांटम यांत्रिकी सहित भौतिकी से प्रेरित था।[citation needed] यह प्रोग्रामिंग भाषा एलआईएसपी (प्रोग्रामिंग भाषा), सिमुला, स्मॉलटाक के प्रारम्भिक संस्करणों, क्षमता-आधारित सिस्टम और पैकेट स्विचन से भी प्रभावित था। इसका विकास अत्यधिक पैरेलेल कंप्यूटिंग मशीनों की संभावना से प्रेरित था जिसमें दर्जनों, सैकड़ों, या यहां तक कि हजारों स्वतंत्र माइक्रोप्रोसेसर सम्मिलित थे, जिनमें से प्रत्येक की अपनी स्थानीय मेमोरी और संचार प्रोसेसर था, जो एक उच्च-प्रदर्शन संचार नेटवर्क के माध्यम से संचार करता था।[2] उस समय से, बहु-कोर (कंप्यूटिंग) और माईकोर कंप्यूटर संरचना के माध्यम से बड़े पैमाने पर समरूपता के आगमन ने ऐक्टर मॉडल में रुचि को पुनर्जीवित किया है।
हेविट, बिशप और स्टीगर के 1973 के प्रकाशन के बाद, आइरीन ग्रीफ ने अपने डॉक्टरेट अनुसंधान के भाग के रूप में ऐक्टर मॉडल के लिए एक परिचालन सेमेन्टिक्स विकसित किया।[3] दो साल बाद, हेनरी बेकर (कंप्यूटर वैज्ञानिक) और हेविट ने ऐक्टर प्रणालियों के लिए स्वयंसिद्ध नियमों का एक सेट प्रकाशित किया।[4][5] अन्य प्रमुख लक्ष्य में विलियम क्लिंजर (कंप्यूटर वैज्ञानिक) सम्मिलित हैं। विलियम क्लिंजर का 1981 का शोध प्रबंध पावर डोमेन पर आधारित ऐक्टर मॉडल के एक सांकेतिक सेमेन्टिक्स को प्रस्तुत करता है।[2]और गुल आगा (कंप्यूटर वैज्ञानिक) का 1985 का शोध प्रबंध जिसने क्लिंगर्स के पूरक के लिए एक संक्रमण-आधारित सिमेंटिक मॉडल विकसित किया।[6] इसके परिणामस्वरूप ऐक्टर मॉडल सिद्धांत का पूर्ण विकास हुआ।
रस एटकिन्सन, ग्यूसेप अटारडी, हेनरी बेकर, गेरी बार्बर, पीटर बिशप, पीटर डी जोंग, केन कान, हेनरी लिबरमैन, कार्ल मैनिंग, टॉम रेनहार्ड्ट, रिचर्ड स्टीगर और डैन थेरियॉल्ट द्वारा संदेश प्रेषण सिमेंटिक्स समूह में प्रमुख सॉफ्टवेयर कार्यान्वयन कार्य मैसाचुसेट्स की तकनीकी संस्था (एमआईटी) मे किया गया था। कैलिफोर्निया प्रौद्योगिकी संस्थान (कैल्टेक) में चक सेइट्ज और एमआईटी में बिल डेली के नेतृत्व में अनुसंधान समूहों ने कंप्यूटर संरचना का निर्माण किया जिसने मॉडल में पारित होने वाले संदेश को अधिक विकसित किया। ऐक्टर मॉडल कार्यान्वयन देखें।
कैलिफोर्निया प्रौद्योगिकी संस्थान, क्योटो यूनिवर्सिटी टोकोरो प्रयोगशाला, माइक्रोइलेक्ट्रॉनिक और कंप्यूटर प्रौद्योगिकी निगम (एमसीसी), मैसाचुसेट्स की तकनीकी संस्था कृत्रिम इंटेलिजेंस प्रयोगशाला, एसआरआई, स्टैनफोर्ड यूनिवर्सिटी, इलिनोइस विश्वविद्यालय अर्बाना-शैंपेन में [7] पियरे और मैरी क्यूरी विश्वविद्यालय (यूनिवर्सिटी ऑफ पेरिस 6), पीसा विश्वविद्यालय, टोक्यो विश्वविद्यालय योनेजावा प्रयोगशाला, सेंट्रम विस्कुंडे और सूचना विज्ञान (सीडब्ल्यूआई) और अन्य स्थानों पर ऐक्टर मॉडल पर शोध किया गया है।
मौलिक अवधारणाएँ
ऐक्टर मॉडल इस दर्शन को स्वीकृत है कि सब कुछ ऐक्टर है। यह सब कुछ एक वस्तु दर्शन के समान है जिसका उपयोग कुछ वस्तु-उन्मुख प्रोग्रामिंग भाषाओं द्वारा किया जाता है।
ऐक्टर एक कम्प्यूटेशनल इकाई है, जो इसे प्राप्त संदेश के जवाब में समवर्ती रूप से कर सकता है:
- अन्य ऐक्टर को सीमित संख्या में संदेश भेजें;
- नए ऐक्टर की एक सीमित संख्या बनाएँ;
- प्राप्त होने वाले अगले संदेश के लिए उपयोग किए जाने वाले व्यवहार को निर्दिष्ट करें।
उपरोक्त क्रियाओं का कोई अनुमानित क्रम नहीं है और उन्हें पैरेलेल में किया जा सकता है।
प्रेषित किए गए संचार से प्रेषक को अलग करना ऐक्टर मॉडल का मौलिक अग्रिम था जो अतुल्यकालिक संचार और नियंत्रण संरचनाओं को संदेश प्रेषित करने के पैटर्न के रूप में सक्षम बनाता था।[8]
संदेशों के प्राप्तकर्ता एड्रैस से पहचाने जाते हैं, जिसे कभी-कभी पोस्ट एड्रैस कहा जाता है। इस प्रकार ऐक्टर केवल उन ऐक्टर के साथ संवाद कर सकता है जिनके एड्रैस उसके पास हैं। यह उन्हें प्राप्त होने वाले संदेश से प्राप्त कर सकता है, या यदि एड्रैस किसी ऐक्टर के लिए है जिसे उसने स्वयं बनाया है।
ऐक्टर मॉडल को ऐक्टर के अंदर और ऐक्टर के बीच कम्प्यूटेशन की अंतर्निहित समरूपता, ऐक्टर के गतिशील निर्माण, संदेशों में ऐक्टर के एड्रैस को सम्मिलित करने और केवल सीधे अतुल्यकालिक संदेश के माध्यम से संदेश आगमन आदेश पर कोई प्रतिबंध नहीं होने की विशेषता है।
औपचारिक प्रणाली
इन वर्षों में, कई विभिन्न औपचारिक प्रणालियाँ विकसित की गई हैं जो ऐक्टर मॉडल में प्रणालियों के बारे में तर्क करने की स्वीकृति देती हैं। इसमे सम्मिलित है:
- परिचालन सेमेन्टिक्स[3][9]
- ऐक्टर प्रणालियों के लिए नियम[4]
- सांकेतिक सेमेन्टिक्स[2][10]
- संक्रमण सेमेन्टिक्स[6]
ऐसी औपचारिकताएं भी हैं जो ऐक्टर मॉडल के लिए पूरी तरह से विश्वसनीय नहीं हैं, जिसमें वे संदेशों की प्रत्याभूतिकृत वितरण को औपचारिक रूप नहीं देते हैं, जिसमें निम्न सम्मिलित हैं ऐक्टर सेमेन्टिक्स को बीजगणित और रैखिक तर्क से संबंधित करने का प्रयास देखें:
- कई अलग ऐक्टर बीजगणित[11][12][13]
- रैखिक तर्क[14]
एप्लीकेशन
ऐक्टर मॉडल का उपयोग समवर्ती प्रणालियों की एक विस्तृत श्रृंखला के बारे में मॉडलिंग, समझ और तर्क के लिए एक रूपरेखा के रूप में किया जा सकता है।[15] उदाहरण के लिए:
- इलेक्ट्रॉनिक मेल (ईमेल) को ऐक्टर प्रणाली के रूप में तैयार किया जा सकता है। खातों को ऐक्टर के रूप में और ईमेल एड्रैस को ऐक्टर के एड्रैस के रूप में तैयार किया जाता है।
- वेब सेवाओं को सरल ऑब्जेक्ट अभिगम प्रोटोकॉल (सरल ऑब्जेक्ट अभिगम प्रोटोकॉल) एंडपॉइंट्स के साथ ऐक्टर के एड्रैस के रूप में तैयार किया जा सकता है।
- ऑब्जेक्ट्स लॉक (कंप्यूटर विज्ञान) के साथ (उदाहरण के लिए, जावा (प्रोग्रामिंग भाषा) और C# (प्रोग्रामिंग भाषा) ) में सीरिअलाइज़र के रूप में मॉडल किया जा सकता है, बशर्ते कि उनका कार्यान्वयन ऐसा हो कि संदेश निरंतर आ सकें। एक आंतरिक क्यू (अमूर्त डेटा प्रकार) में संग्रहीत किया जा रहा है। एक सीरियलाइज़र एक महत्वपूर्ण प्रकार का ऐक्टर है जो गुण द्वारा परिभाषित किया गया है कि यह नए संदेशों के आगमन के लिए निरंतर उपलब्ध है; सीरियलाइज़र को प्रेषित किए गए प्रत्येक संदेश के आने की प्रत्याभूति है।[16]
- परीक्षण और निरीक्षण नियंत्रण संकेतन (टीटीसीएन), दोनों टीटीसीएन-2 और टीटीसीएन-3, ऐक्टर मॉडल का अपेक्षाकृत अधिक स्थूलता से अनुसरण करते हैं। परीक्षण और निरीक्षण नियंत्रण संकेतन में ऐक्टर एक परीक्षण : या तो पैरेलेल परीक्षण घटक (पीटीसी) या मुख्य परीक्षण घटक (एमटीसी) घटक है। परीक्षण घटक दूरस्थ भागीदारों (सहकर्मी परीक्षण घटक या परीक्षण प्रणाली इंटरफ़ेस) को संदेश प्रेषित कर और प्राप्त कर सकते हैं, बाद वाले को इसके एड्रैस से पहचाना जा सकता है। प्रत्येक परीक्षण घटक के पास एक व्यवहार ट्री होता है जो उससे जुड़ा होता है; परीक्षण घटक पैरेलेल में सक्रिय हैं और मूल परीक्षण घटकों द्वारा गतिशील रूप से बनाए जा सकते हैं। अंतर्निहित भाषा संरचना आंतरिक संदेश क्यू से अपेक्षित संदेश प्राप्त होने पर क्रियाओं की परिभाषा लेने की स्वीकृति देती है, जैसे किसी अन्य सहकर्मी इकाई को संदेश प्रेषित करने या नए परीक्षण घटक बनाना।
संदेश-प्रेषण सेमेन्टिक्स
ऐक्टर मॉडल संदेश पारित करने के सेमेन्टिक्स के बारे में है।
असंबद्ध गैर-निर्धारणवाद विवाद
विश्वसनीय रूप से, पहले समवर्ती प्रोग्राम इंटरप्ट हैंडलर थे। अपने सामान्य संचालन के समय एक कंप्यूटर को बाहर से जानकारी प्राप्त करने में सक्षम होना चाहिए (कीबोर्ड से वर्ण, नेटवर्क से पैकेट इत्यादि)। इसलिए जब सूचना पहुंची तो कंप्यूटर का निष्पादन बाधित हो गया और सूचना को डेटा बफर में रखने के लिए विशेष कोड (इंटरप्ट हैंडलर कहा जाता है) को बुलाया गया जहां इसे बाद में पुनर्प्राप्त किया जा सके।
1960 के दशक के प्रारंभ में, एक प्रोसेसर पर कई प्रोग्राम के समवर्ती निष्पादन को अनुकरण करने के लिए इंटरप्ट्स का उपयोग किया जाने लगा।[17] साझा मेमोरी के साथ समवर्ती होने से समवर्ती नियंत्रण की समस्या उत्पन्न हुई। मूल रूप से, इस समस्या की कल्पना समान कंप्यूटर पर परस्पर बहिष्करण के रूप में की गई थी। एडजर डिज्कस्ट्रा ने सेमाफोर (प्रोग्रामिंग) विकसित किया और बाद में, 1971 और 1973 के बीच,[18] टोनी होरे[19] और प्रति ब्रिन्च हैनसेन[20] पारस्परिक बहिष्करण समस्या को हल करने के लिए विकसित मॉनिटर (सिंक्रनाइज़ेशन) के रूप में की गई थी। हालाँकि, इनमें से किसी भी समाधान ने प्रोग्रामिंग भाषा निर्माण प्रदान नहीं किया है जो साझा संसाधनों तक अभिगम्य को समाहित करता है। इस एनकैप्सुलेशन को बाद में क्रमबद्धता निर्माण ([हेविट और एटकिंसन 1977, 1979] और [एटकिंसन 1980]) द्वारा पूरा किया गया था।
गणना के पहले मॉडल (जैसे, ट्यूरिंग मशीनें, पोस्ट उत्पादन, लैम्ब्डा कैलकुलस, आदि) गणित पर आधारित थे और एक कम्प्यूटेशनल चरण का प्रतिनिधित्व करने के लिए एक वैश्विक स्थिति का उपयोग किया बाद में [मैककार्थी और हेस 1969] और [डिज्क्स्ट्रा में सामान्यीकृत] 1976] इवेंट ऑर्डरिंग बनाम वैश्विक स्थिति देखें। प्रत्येक कम्प्यूटेशनल चरण गणना की एक वैश्विक स्थिति से अगले वैश्विक स्थिति तक था। परिमित-स्थिति मशीनों के लिए ऑटोमेटा सिद्धांत में वैश्विक अवस्था दृष्टिकोण जारी रखा गया था और स्टैक मशीन को नीचे प्रविष्ट कर दिया गया था, जिसमें उनके गैर-नियतात्मक संस्करण भी सम्मिलित थे। इस तरह के गैर-नियतात्मक ऑटोमेटा में परिबद्ध हुए गैर-नियतात्मकता का गुण होता है; अर्थात्, यदि कोई मशीन अपनी प्रारंभिक अवस्था में प्रारंभ होने पर सदैव प्रतिबंधित करता है, तो यह उन अवस्थाओ की संख्या पर बाध्य होती है जिनमें वह प्रतिबंधित करते है।
एडजर डिज्कस्ट्रा ने गैर-नियतात्मक वैश्विक अवस्था दृष्टिकोण को और विकसित किया। दिज्क्स्ट्रा के मॉडल ने असीमित अनिर्धारणवाद (जिसे असीमित अनिश्चितता भी कहा जाता है) से संबंधित एक विवाद को उत्पन्न किया, जो समवर्ती (कंप्यूटर विज्ञान) की एक गुण है, जिसके द्वारा साझा संसाधनों के लिए विवाद की मध्यस्थता के परिणामस्वरूप अनुरोध की सेवा में विलंबता की मात्रा अबाधित हो सकती है। जबकि अभी भी प्रत्याभूति (गारंटी) है कि अनुरोध अंत में सेवा की जाएगी हेविट ने तर्क दिया कि ऐक्टर मॉडल को सेवा की प्रत्याभूति प्रदान करनी चाहिए। दिज्क्स्ट्रा के मॉडल में, हालांकि एक कंप्यूटर पर अनुक्रमिक निर्देशों के निष्पादन के बीच असीमित समय हो सकता है, एक (पैरेलेल) प्रोग्राम जो एक अच्छी तरह से परिभाषित अवस्था में प्रारंभ हुआ था, केवल अवस्थाओ की सीमित संख्या में [दिज्क्स्ट्रा 1976] समाप्त हो सकता है। परिणामस्वरूप, उनका मॉडल सेवा की प्रत्याभूति प्रदान नहीं कर सका। दिज्क्स्ट्रा ने तर्क दिया कि असीमित गैर-निर्धारणवाद को प्रयुक्त करना असंभव था।
हेविट ने अन्यथा तर्क दिया: ऐसी कोई सीमा नहीं है जिसे व्यवस्थित करने के लिए एक आर्बिटर (इलेक्ट्रॉनिक्स) नामक कम्प्यूटेशनल परिपथ को कितना समय लगता है (मेटास्टेबिलिटी (इलेक्ट्रॉनिक्स) देखें) पर रखा जा सकता है।[21] आर्बिटर्स का उपयोग कंप्यूटर में उस परिस्थिति से नियंत्रण करने के लिए किया जाता है, जिसमें कंप्यूटर घड़ियां बाहर से इनपुट के संबंध में अतुल्यकालिक रूप से काम करती हैं, जैसे, कीबोर्ड इनपुट, डिस्क अभिगम, नेटवर्क इनपुट, आदि प्राप्त किया जा सकता है और इस बीच कंप्यूटर असीमित संख्या में अवस्थाओ को पार कर सकता है।
ऐक्टर मॉडल में अबाधित अनिर्धारणवाद है, जिसे डोमेन सिद्धांत का उपयोग करके विल क्लिंजर द्वारा गणितीय मॉडल में कैप्चर किया गया था।[2] ऐक्टर मॉडल में कोई वैश्विक स्थिति नहीं है।[dubious ]
प्रत्यक्ष संचार और अतुल्यकालिक
ऐक्टर मॉडल में संदेश आवश्यक रूप से बफ़र्ड नहीं हैं। समवर्ती कम्प्यूटेशन के मॉडल के पूर्व दृष्टिकोणों के साथ यह एक तेज ब्रेक था। बफ़रिंग की कमी ने ऐक्टर मॉडल के विकास के समय बहुत सी गलत अवधारणा उत्पन्न की और अभी भी एक विवादास्पद समस्या है। कुछ शोधकर्ताओं ने तर्क दिया कि संदेश ईथर या पर्यावरण में बफ़र किए गए हैं। इसके अतिरिक्त, ऐक्टर मॉडल में संदेश केवल प्रेषित किए जाते हैं (जैसे इंटरनेट प्रोटोकॉल में पैकेट (सूचना प्रौद्योगिकी)); प्राप्तकर्ता के साथ एक तुल्यकालिक हैंडशेक की कोई आवश्यकता नहीं है।
संदेशों में ऐक्टर निर्माण प्लस एड्रैस का अर्थ वेरिएबल टोपोलॉजी
ऐक्टर मॉडल का एक स्वाभाविक विकास संदेशों में एड्रैस की स्वीकृति देना था। पैकेट स्विचिंग [1961 और 1964] से प्रभावित, हेविट ने समवर्ती कम्प्यूटेशन के एक नए मॉडल के विकास का प्रस्ताव रखा जिसमें संचार के लिए कोई आवश्यक क्षेत्र परिशुद्ध नहीं होगा: वे रिक्त हो सकते हैं। निस्संदेह, यदि संचार प्रेषित करने वाला चाहता है कि प्राप्तकर्ता के पास उन एड्रैस तक अभिगम्य हो जो प्राप्तकर्ता के पास पहले से नहीं है, तो एड्रैस संचार में प्रेषित किया जाना होगा।
उदाहरण के लिए, ऐक्टर को एक प्राप्तकर्ता ऐक्टर को एक संदेश प्रेषित करने की आवश्यकता हो सकती है जिससे वह बाद में प्रतिक्रिया प्राप्त करने की अपेक्षा करता है, लेकिन प्रतिक्रिया वास्तव में एक तीसरे ऐक्टर घटक द्वारा नियंत्रित की जाएगी जिसे प्रतिक्रिया प्राप्त करने और नियंत्रण करने के लिए कॉन्फ़िगर किया गया है उदाहरण के लिए, पर्यवेक्षक पैटर्न को प्रयुक्त करने वाला एक अलग ऐक्टर होता है। मूल ऐक्टर एक संचार भेजकर इसे पूरा कर सकता है जिसमें वह संदेश सम्मिलित है जिसे वह प्रेषित करना चाहता है, साथ ही तीसरे ऐक्टर का एड्रैस जो प्रतिक्रिया को नियंत्रित करेगा, उसे पुनः प्रारंभ करना कहा जाता है कभी-कभी इसे निरंतरता या स्टैक फ्रेम भी कहा जाता है। जब प्राप्तकर्ता ऐक्टर प्रतिक्रिया प्रेषित करने के लिए तैयार होता है, तो वह प्रतिक्रिया संदेश को फिर से प्रारंभ करने वाले ऐक्टर के एड्रैस पर भेजता है जो मूल संचार में सम्मिलित था।
इसलिए, ऐक्टर की नए ऐक्टर को बनाने की क्षमता जिसके साथ वे संचार का आदान-प्रदान कर सकते हैं, संदेशों में अन्य ऐक्टर के एड्रैस सम्मिलित करने की क्षमता के साथ, ऐक्टर को एक दूसरे के साथ यादृच्छिक रूप से वेरिएबल टोपोलॉजी संबंधों को बनाने और भाग लेने की क्षमता देता है, जितना सिमुला और अन्य वस्तु-उन्मुख भाषाओं में वस्तुओं को भी संदेश-विनिमय वस्तुओं के वेरिएबल टोपोलॉजी में संबंधपरक रूप से बनाया जा सकता है।
स्वाभाविक रूप से समवर्ती
अनुक्रमिक प्रक्रियाओं की रचना के आधार पर पूर्व दृष्टिकोण के विपरीत, ऐक्टर मॉडल को एक अंतर्निहित समवर्ती मॉडल के रूप में विकसित किया गया था। ऐक्टर मॉडल में अनुक्रमिकता एक विशेष मामला था जो ऐक्टर मॉडल सिद्धांत में वर्णित समवर्ती कम्प्यूटेशन से प्राप्त हुआ था।
संदेश आगमन के क्रम पर कोई आवश्यकता नहीं
हेविट ने आवश्यकता को जोड़ने के विपरीत तर्क दिया कि संदेशों को उस क्रम में आना चाहिए जिसमें वे ऐक्टर को प्रेषित किए गए हैं। यदि आउटपुट संदेश क्रम वांछित है, तो यह एक क्यू ऐक्टर द्वारा तैयार किया जा सकता है जो यह कार्यक्षमता प्रदान करता है। ऐसा क्यू ऐक्टर आने वाले संदेशों को क्यू करेगा ताकि उन्हें फीफो क्रम में पुनर्प्राप्त किया जा सके। तो अगर एक ऐक्टर X
ने ऐक्टर M1
को एक संदेश Y
ने X
को एक और संदेश M2
को Y
भेजा, तो कोई आवश्यकता नहीं है कि M1
, Y
से पहले M2
पर पहुंच जाए।
इस संबंध में ऐक्टर मॉडल पैकेट स्विचिंग सिस्टम को प्रतिबिंबित करता है जो इस बात की प्रत्याभूति नहीं देता है कि प्रेषित किए गए क्रम में पैकेट प्राप्त होना चाहिए। डिलीवरी प्रत्याभूति का आदेश प्रदान नहीं करने से पैकेट को बफर पैकेट में स्विच करने, पैकेट प्रेषित करने के लिए कई पथों का उपयोग करने, क्षतिग्रस्त पैकेट को पुनः प्रेषित करने और अन्य अनुकूलन प्रदान करने की स्वीकृति मिलती है।
उदाहरण के लिए, ऐक्टर को संदेशों के प्रसंस्करण को पाइपलाइन करने की स्वीकृति है। इसका तात्पर्य यह है कि किसी संदेश M1
को प्रोसेस करने के समय ऐक्टर अगले संदेश को संसाधित करने के लिए उपयोग किए जाने वाले व्यवहार को निर्दिष्ट कर सकता है, और फिर वास्तव में दूसरे संदेश M2
को संसाधित करना प्रारंभ कर सकता है इससे पहले कि यह प्रसंस्करण M1
समाप्त कर ले। सिर्फ इसलिए कि ऐक्टर को संदेशों के प्रसंस्करण को पाइपलाइन करने की स्वीकृति है, इसका तात्पर्य यह नहीं है कि उसे प्रसंस्करण को पाइपलाइन करना चाहिए। संदेश पाइपलाइन में है या नहीं यह एक अभियांत्रिक ट्रेडऑफ़ है। एक बाहरी प्रेक्षक को कैसे पता चलेगा कि किसी ऐक्टर द्वारा संदेश का प्रसंस्करण पाइपलाइन किया गया है या नहीं किया है? पाइपलाइनिंग की संभावना से निर्मित ऐक्टर की परिभाषा में कोई अस्पष्टता नहीं है। वास्तव मे, कुछ कार्यान्वयनों में गलत तरीके से पाइपलाइन अनुकूलन करना संभव है, जिस स्थिति में अनपेक्षित व्यवहार हो सकता है।
स्थानीयता
ऐक्टर मॉडल की एक अन्य महत्वपूर्ण विशेषता स्थानीयता है।
स्थानीयता का अर्थ है कि एक संदेश को संसाधित करने में, ऐक्टर केवल उन एड्रैस पर संदेश प्रेषित कर सकता है जो उसे संदेश में प्राप्त होते हैं, वे एड्रैस जो पहले से ही संदेश प्राप्त करने से पहले थे, और ऐक्टर के एड्रैस जो संदेश को (लेकिन ऐक्टर के सिंथेसाइजिंग एड्रैस को देखें।।) संसाधित करते समय बनाते हैं।
इसके अतिरिक्त स्थानीयता का अर्थ है कि कई स्थानों में एक साथ परिवर्तन नहीं होता है। इस तरह यह समरूपता के कुछ अन्य मॉडलों से अलग है, उदाहरण के लिए, पेट्री नेट मॉडल जिसमें टोकन को एक साथ कई स्थानों से हटाकर अन्य स्थानों पर रखा जाता है।
कंपोज़िंग एक्टर सिस्टम्स
गुल आगा के डॉक्टरेट शोध प्रबंध में विकसित किए गए प्रतिरूपकता (प्रोग्रामिंग) का एक महत्वपूर्ण स्वरूप ऐक्टर प्रणालियों को बड़े क्षेत्रों में बनाने का विचार है,[6] बाद में गुल आगा, इयान मेसन, स्कॉट स्मिथ और कैरोलिन टैल्कॉट द्वारा विकसित किया गया।[9]
व्यवहार
प्रमुख नवपरिवर्तन गणितीय कार्य के रूप में निर्दिष्ट व्यवहार का परिचय था, यह व्यक्त करने के लिए कि ऐक्टर क्या करता है जब वह संदेश को संसाधित करता है, जिसमें आने वाले अगले संदेश को संसाधित करने के लिए एक नया व्यवहार निर्दिष्ट करना सम्मिलित है। व्यवहार ने समरूपता में साझाकरण को गणितीय रूप से मॉडल करने के लिए एक तंत्र प्रदान किया।
व्यवहार ने ऐक्टर मॉडल को कार्यान्वयन विवरण से भी मुक्त कर दिया, उदाहरण के लिए, स्मॉलटाक -72 टोकन स्ट्रीम इंटरप्रेटर है। हालांकि, यह समझना महत्वपूर्ण है कि ऐक्टर मॉडल द्वारा वर्णित प्रणालियों के कुशल कार्यान्वयन के लिए व्यापक अनुकूलन की आवश्यकता होती है। विवरण के लिए ऐक्टर मॉडल कार्यान्वयन देखें।
मॉडलिंग अन्य समवर्ती सिस्टम
अन्य समरूपता प्रणालियों (जैसे, प्रक्रिया गणना) को दो-चरण प्रतिबद्ध प्रोटोकॉल का उपयोग करके ऐक्टर मॉडल में तैयार किया जा सकता है।[22]
कम्प्यूटेशनल प्रतिनिधित्व प्रमेय
सिस्टम के लिए ऐक्टर मॉडल में एक कम्प्यूटेशनल प्रतिनिधित्व प्रमेय है जो इस अर्थ में बंद है कि वे बाहर से संचार प्राप्त नहीं करते हैं। एक संवृत प्रणाली द्वारा निरूपित गणितीय संकेत प्रारंभिक व्यवहार से निर्मित होता है, और एक व्यवहार-अनुमानित फ़ंक्शन से बनाया गया है। ये तेजी से अधिकतम सन्निकटन प्राप्त करते हैं और के लिए एक संकेत (अर्थ) का निर्माण करते हैं, जैसा [हेविट 2008; क्लिंजर 1981]:
इस प्रकार से, गणितीय रूप से इसके सभी संभावित व्यवहारों के संदर्भ में वर्णित किया जा सकता है जिनमें वे भी सम्मिलित हैं जिनमें अबाधित अनिर्धारणवाद सम्मिलित है। यद्यपि का क्रियान्वयन नहीं है, इसका उपयोग चर्च-ट्यूरिंग-रॉसर-क्लीन थीसिस [क्लीन 1943] के सामान्यीकरण को प्रमाणित करने के लिए किया जा सकता है:
उपरोक्त प्रमेय का एक परिणाम यह है कि एक परिमित ऐक्टर विभिन्न आउटपुट की uncountable[clarify] संख्या के साथ गैर-निर्धारित रूप से प्रतिक्रिया कर सकता है।
तार्किक प्रोग्रामिंग से संबंध
ऐक्टर मॉडल के विकास के लिए प्रमुख प्रेरणाओं में से एक योजनाकार प्रोग्रामिंग भाषा के विकास में उत्पन्न नियंत्रण संरचना के समस्याओ को समझना और उनसे सामना करना था।[citation needed] ऐक्टर मॉडल को प्रारंभ में परिभाषित किए जाने के बाद, रॉबर्ट कोवाल्स्की की शोध प्रबंध के सापेक्ष मॉडल की क्षमता को समझना एक महत्वपूर्ण चुनौती थी कि कम्प्यूटेशन को निगमन द्वारा समाहित किया जा सकता है। हेविट ने तर्क दिया कि ऐक्टर मॉडल में समवर्ती कम्प्यूटेशन के लिए कोवाल्स्की की शोध प्रबंध गलत ( समवर्ती कम्प्यूटेशन में अनिश्चितता देखें) प्रमाणित हुई ।
फिर भी, तर्क प्रोग्रामिंग को समवर्ती कम्प्यूटेशन तक विस्तारित करने का प्रयास किया गया। हालांकि, हेविट और आगा [1991] ने दावा किया कि परिणामी प्रणालियां निम्नलिखित अर्थों में निगमनात्मक नहीं थीं: समवर्ती तर्क प्रोग्रामिंग प्रणालियों के कम्प्यूटेशनल चरण पूर्व चरणों से तर्कपूर्ण रूप से अनुसरण नहीं करते हैं। समवर्ती कम्प्यूटेशन में अनिश्चितता देखें। हाल ही में, तार्किक प्रोग्रामिंग को ऐक्टर मॉडल में एक तरह से एकीकृत किया गया है जो तार्किक सेमेन्टिक्स को बनाए रखता है।[21]
माइग्रेशन
ऐक्टर मॉडल में माइग्रेशन स्थान बदलने के लिए ऐक्टर की क्षमता होती है। उदाहरण के लिए, अपने शोध प्रबंध में, अकी योनेज़ावा ने एक पोस्ट का मॉडल तैयार किया जिसमें ग्राहक ऐक्टर प्रवेश कर सकते थे, संचालन के समय स्थान बदल सकते थे और बाहर निकल सकते थे। ऐक्टर जो माइग्रेट कर सकता है, एक स्थान ऐक्टर के द्वारा मॉडल किया जा सकता है जो ऐक्टर के माइग्रेट होने पर बदल जाता है। हालाँकि इस मॉडलिंग की विश्वसनीयता विवादास्पद है और शोध का विषय है।[citation needed]
सुरक्षा
ऐक्टर की सुरक्षा को निम्नलिखित तरीकों से संरक्षित किया जा सकता है:
- स्थायी नियंत्रण जिसमें ऐक्टर भौतिक रूप से जुड़े होते हैं
- कंप्यूटर हार्डवेयर जैसे बरोज़ B5000, एलआईएसपी मशीन, आदि।
- वर्चुअल मशीन जैसे जावा वर्चुअल मशीन, सामान्य भाषा रनटाइम आदि।
- ऑपरेटिंग सिस्टम क्षमता-आधारित सिस्टम के रूप में
- ऐक्टर और उनके एड्रैस के डिजिटल हस्ताक्षर और/या एन्क्रिप्शन
ऐक्टर के एड्रैस संश्लेषित करना
ऐक्टर मॉडल में एक सरल बिंदु ऐक्टर के एड्रैस को संश्लेषित करने की क्षमता है। कुछ स्थितियों में एड्रैस के संश्लेषण को रोकने के लिए सुरक्षा का उपयोग (सुरक्षा देखें) किया जा सकता है। हालाँकि, यदि ऐक्टर का एड्रैस केवल एक बिट स्ट्रिंग है, तो स्पष्ट रूप से इसे संश्लेषित किया जा सकता है, हालांकि यह कठिन हो सकता है या किसी ऐक्टर के एड्रैस का अनुमान लगाना भी असंभव हो सकता है यदि बिट स्ट्रिंग्स अपेक्षाकृत अधिक लंबे हैं। सरल ऑब्जेक्ट अभिगम प्रोटोकॉल एक समापन बिंदु के एड्रैस के लिए एक यूनिफ़ॉर्म रिसोर्स लोकेटर का उपयोग करता है जहाँ ऐक्टर तक पहुँचा जा सकता है। चूंकि यूनिफ़ॉर्म रिसोर्स लोकेटर एक वर्ण स्ट्रिंग है, इसे स्पष्ट रूप से संश्लेषित किया जा सकता है, हालांकि एन्क्रिप्शन इसे अनुमान लगाने में लगभग असंभव बना सकता है।
ऐक्टर के एड्रैस का संश्लेषण सामान्य रूप से मानचित्रण का उपयोग करके किया जाता है। वास्तविक ऐक्टर एड्रैस पर मैपिंग करने के लिए ऐक्टर प्रणाली का उपयोग करने का विचार है। उदाहरण के लिए, कंप्यूटर पर कंप्यूटर की मेमोरी संरचना को ऐक्टर प्रणाली के रूप में तैयार किया जा सकता है जो मैपिंग करता है। सरल ऑब्जेक्ट अभिगम प्रोटोकॉल एड्रैस की स्थिति में, यह डोमेन की नामांकन प्रणाली और शेष यूनिफ़ॉर्म रिसोर्स लोकेटर (यूआरएल) मैपिंग की मॉडलिंग कर रहा है।
संदेश-संचारण के अन्य मॉडलों के साथ तुलना करें
समरूपता पर रॉबिन मिलनर का प्रारम्भिक प्रकाशित कार्य[23] यह भी उल्लेखनीय था कि यह अनुक्रमिक प्रक्रियाओं की रचना पर आधारित नहीं था। उनका काम ऐक्टर मॉडल से अलग था क्योंकि यह निश्चित टोपोलॉजी की प्रक्रियाओं की एक निश्चित संख्या पर आधारित था जो सिंक्रोनस संचार का उपयोग करके संख्याओं और स्ट्रिंग को संप्रेषित करता था। मूल संचार अनुक्रमिक प्रक्रिया (सीएसपी) मॉडल[24] टोनी होरे द्वारा प्रकाशित ऐक्टर मॉडल से भिन्न है क्योंकि यह एक निश्चित टोपोलॉजी में जुड़ी अनुक्रमिक प्रक्रियाओं की एक निश्चित संख्या की पैरेलेल रचना पर आधारित था, और प्रक्रिया के नामों के आधार पर सिंक्रोनस संदेश-प्रेषण का उपयोग करके (ऐक्टर मॉडल और प्रक्रिया गणना इतिहास प्रारंभिक कार्य देखें) संचार करना था। सीएसपी के बाद के संस्करणों ने चैनलों के माध्यम से अज्ञात संचार के पक्ष में प्रक्रिया के नाम के आधार पर संचार को छोड़ दिया, संचार प्रणालियों के गणना और π-गणना पर मिलनर के काम में भी एक दृष्टिकोण का उपयोग किया गया।
मिल्नर और होरे दोनों के इन प्रारम्भिक मॉडलों में परिबद्ध गैर-निर्धारणवाद का गुण था। आधुनिक, सैद्धांतिक सीएसपी ([होरे 1985] और [रोसको 2005]) स्पष्ट रूप से अपरिबद्ध गैर-निर्धारणवाद प्रदान करता है।
पेट्री डिश और उनके एक्सटेंशन (उदाहरण के लिए, रंगीन पेट्री नेट) ऐक्टर की तरह हैं, जिसमें वे एसिंक्रोनस संदेश प्रेषण और अपरिबद्ध नॉनडेटर्मिनिज्म (गैर-निर्धारणवाद) पर आधारित होते हैं, जबकि वे प्रारम्भिक सीएसपी की तरह होते हैं, जिसमें वे प्राथमिक प्रसंस्करण चरणों (संक्रमण) और संदेश रिपॉजिटरी (स्थानों) की निश्चित टोपोलॉजी को परिभाषित करते हैं।
प्रभाव
ऐक्टर मॉडल सिद्धांत विकास और व्यावहारिक सॉफ्टवेयर विकास दोनों पर प्रभावशाली रहा है।
सिद्धांत
ऐक्टर मॉडल ने π-कैलकुलस (गणना) के विकास और बाद की प्रक्रिया कैलकुली को प्रभावित किया है। अपने ट्यूरिंग व्याख्यान में, रॉबिन मिलनर ने लिखा:[25]
अब, शुद्ध लैम्ब्डा-कैलकुलस को केवल दो प्रकार के टर्म्स और वेरिएबल्स के साथ बनाया गया है। क्या हम एक प्रक्रिया कैलकुलस के लिए समान अर्थव्यवस्था प्राप्त कर सकते हैं? कार्ल हेविट ने अपने ऐक्टर के मॉडल के साथ इस चुनौती का जवाब बहुत पहले दे दिया था; उन्होंने घोषणा की कि एक मान, और मानो पर एक संक्रिया, और प्रक्रिया सभी को ऐक्टर के समान होना चाहिए।
इस लक्ष्य ने मुझे प्रभावित किया, क्योंकि यह एकरूपता और एक्सप्रेशन की पूर्णता का तात्पर्य है ... लेकिन इससे पहले कि मैं देख पाता कि बीजगणितीय गणना के संदर्भ में लक्ष्य कैसे प्राप्त किया जाए ...
इसलिए, हेविट के विचार में, हमारा पहला चरण यह उपेक्षा करना है कि सभी वस्तुए जो शब्दों से निरूपित हों या नामों से अभिगम की गई हों - मान, रजिस्टर, ऑपरेटर, प्रक्रियाएं, वस्तुएं - सभी समान तरह की हों; वे सभी प्रक्रियाएं होनी चाहिए।
अभ्यास
व्यावसायिक अभ्यास पर ऐक्टर मॉडल का व्यापक प्रभाव पड़ा है। उदाहरण के लिए, ट्विटर ने स्केलेबिलिटी (मापनीयता) के लिए ऐक्टर का उपयोग किया है।[26] साथ ही, माइक्रोसॉफ्ट ने अपने एसिंक्रोनस एजेंट्स लाइब्रेरी के विकास में ऐक्टर मॉडल का उपयोग किया है।[27] नीचे ऐक्टर लाइब्रेरी और रूपरेखा अनुभाग में सूचीबद्ध कई अन्य ऐक्टर लाइब्रेरी हैं।
संबोधित मुद्दे
हेविट [2006] के अनुसार, ऐक्टर मॉडल निम्नलिखित सहित कंप्यूटर और संचार संरचना, समवर्ती प्रोग्रामिंग भाषाओं और वेब सेवाओं में समस्याओ को संबोधित करता है:
- मापनीयता: स्थानीय और गैर-स्थानीय रूप से समवर्ती को बढ़ाने की चुनौती है।
- स्थान पारदर्शिता: स्थानीय और गैर-स्थानीय समरूपता के बीच की दूरी को कम करना। पारदर्शिता वर्तमान में एक विवादास्पद समस्या है। कुछ शोधकर्ता[who?] ने समवर्ती प्रोग्रामिंग भाषाओं जैसे, जावा (प्रोग्रामिंग भाषा) और C # (प्रोग्रामिंग भाषा) का उपयोग करते हुए स्थानीय समरूपता के बीच वेब सेवाओं के लिए सरल ऑब्जेक्ट अभिगम प्रोटोकॉल का उपयोग करके गैर-स्थानीय समरूपता के बीच विशुद्ध वियोजन की वकालत की है। विशुद्ध वियोजन पारदर्शिता की कमी उत्पन्न करता है जो समस्याओं का कारण बनता है जब वेब सेवाओं के लिए स्थानीय और गैर-स्थानीय अभिगम्य के बीच परिवर्तन करना वांछनीय/आवश्यक (डिस्ट्रिब्यूटेड कंप्यूटिंग देखें) होता है ।
- असंगति: असंगति मानक है क्योंकि मानव सूचना प्रणाली की अंतःक्रियाओं के बारे में सभी बहुत बड़ी ज्ञान प्रणालियाँ असंगत हैं। यह विसंगति बहुत बड़ी प्रणालियों (जैसे, माइक्रोसॉफ्ट विंडोज सॉफ्टवेयर, आदि) के प्रलेखन और विशिष्टताओं तक विस्तृत है, जो आंतरिक रूप से असंगत हैं।
ऐक्टर मॉडल में प्रस्तुत किए गए कई विचार अब इन्हीं कारणों [हेविट 2006बी 2007बी] के लिए बहु एजेंट प्रणाली में भी एप्लीकेशन प्राप्त कर रहे हैं। मुख्य अंतर यह है कि एजेंट सिस्टम (अधिकांश परिभाषाओं में) ऐक्टर पर अतिरिक्त प्रतिबंध लगाते हैं, सामान्य रूप से यह आवश्यक होता है कि वे प्रतिबद्धताओं और लक्ष्यों का उपयोग करें।
ऐक्टर के साथ प्रोग्रामिंग
कई विभिन्न प्रोग्रामिंग भाषा ऐक्टर मॉडल या इसके कुछ परिवर्तन को नियोजित करती हैं। इन भाषाओं में सम्मिलित हैं:
प्रारंभिक ऐक्टर प्रोग्रामिंग भाषाएं
बाद में ऐक्टर प्रोग्रामिंग भाषाएं
- ऐक्टर-आधारित समवर्ती भाषा
- एम्बिएंट टॉक[34]
- एक्सम (प्रोग्रामिंग भाषा)[35]
- सीएएल अभिनेता भाषा
- D (प्रोग्रामिंग भाषा)
- डार्ट (प्रोग्रामिंग भाषा)
- E (प्रोग्रामिंग भाषा)
- एलिक्सिर (प्रोग्रामिंग भाषा)
- एरलांग (प्रोग्रामिंग भाषा)
- फैंटम (प्रोग्रामिंग भाषा)
- ह्यूमस[36]
- आईओ (प्रोग्रामिंग भाषा)
- एलएफई (प्रोग्रामिंग भाषा)
- एनकोर[37]
- पोनी (प्रोग्रामिंग भाषा)[38][39]
- टॉलेमी परियोजना
- P (प्रोग्रामिंग भाषा)[40]
- पी#[41]
- रेबेका मॉडलिंग भाषा
- रीया (प्रोग्रामिंग भाषा)
- रूबी (प्रोग्रामिंग भाषा)[42]
- साल्सा[43]
- स्काला (प्रोग्रामिंग भाषा)[44][45]
- स्विफ्ट (प्रोग्रामिंग भाषा)[46]
- टीएनएसडीएल
एक्टर लाइब्रेरी और फ्रेमवर्क
एक्टर-स्टाइल प्रोग्रामिंग को उन भाषाओं में स्वीकृति देने के लिए एक्टर लाइब्रेरी या रूपरेखाएँ भी प्रयुक्त की गई हैं जिनमें एक्टर अंतर्निहित नहीं हैं। इनमें से कुछ रूपरेखाएँ हैं:
नाम | स्थिति | नवीनतम प्रकाशन | लाइसेंस | भाषा |
---|---|---|---|---|
एक्सक्राफ्ट गोबलिन्स | Active | 2022-08-30 | एमआईटी | जावास्क्रिप्ट |
प्रतिक्रियात्मक | Active | 2022-11-30 | अपाचे 2.0 | जावा |
एकटेउर | Active | 2020-04-16[47] | अपाचे-2.0 / एमआईटी | आरयूएसटी |
बैस्टियन | Active | 2020-08-12[48] | अपाचे-2.0 / एमआईटी | आरयूएसटी |
एक्टिक्स | Active | 2020-09-11[49] | एमआईटी | आरयूएसटी |
एओजेट | Active | 2016-10-17 | एमआईटी | एसडब्ल्यूआईएफटी |
एक्टर | Active | 2017-03-09 | एमआईटी | जावा |
एक्टर 4j | Active | 2020-01-31 | अपाचे 2.0 | जावा |
एक्टर | Active | 2019-04-09[50] | अपाचे 2.0 | जावा |
वीईआरटीएक्स | Active | 2018-02-13 | अपाचे 2.0 | जावा, ग्रूवी, जावास्क्रिप्ट, रूबी, स्काला, कोटलिन, सीलोन |
एक्टरएफएक्स | Inactive | 2013-11-13 | अपाचे 2.0 | .एनईटी |
एक्का (टूलकिट) | Active | 2022-09-06[51] | व्यवसायिक[52] ( 2.7.0 से, अपाचे 2.0 तक 2.6.20) | जावा और स्काला |
एक्कानेट | Active | 2020-08-20[53] | अपाचे 2.0 | .नेट |
डापर | Active | 2019-10-16 | अपाचे 2.0 | जावा, .नेट कोर, जाओ, जावास्क्रिप्ट, पायथन, आरयूएसटी और C++ |
डॉटनेटैक्टर्स | Active | 2021-06-14 | एमआईटी | .नेट, C#, एज़्योर सर्विस बस |
रेमेक्टनेट | Inactive | 2016-06-26 | एमआईटी | .नेट, जावास्क्रिप्ट |
एटीजीपीएक्स | Inactive | ? | ? | जावा |
सीजेडएमक्यू | Active | 2016-11-10 | एमपीएल-2 | C |
एफ # मेलबॉक्स प्रोसेसर | Active | same as F# (built-in core library) | अपाचे लाइसेंस | F# |
कोरस | Active | 2010-02-04 | जीपीएल 3 | जावा |
किलिम[54] | Active | 2018-11-09[55] | एमआईटी | जावा |
एक्टरफाउंड्री (किलिम पर आधारित) | Inactive | 2008-12-28 | ? | जावा |
एक्टरकिट | Active | 2011-09-13[56] | बीएसडी | ऑब्जेक्टिव-C |
क्लाउड हास्केल | Active | 2015-06-17[57] | बीएसडी | हास्केल |
क्लाउडआई | Active | 2021-05-27[58] | एमआईटी | एटीएस, C/C++, एलिक्सिर/एरलैंग/एलएफई, गो, हास्केल, जावा, जावास्क्रिप्ट, ओकैमल, पर्ल, पीएचपी, पायथन, रूबी |
क्लटर | Active | 2017-05-12[59] | एलजीपीएल 2.1 | C, C++ (क्लटरएमएम), पायथन (पाइक्लटर), पर्ल (पर्ल-क्लटर) |
एनएसीटी | Inactive | 2012-02-28 | एलजीपीएल 3.0 | .नेट |
वेबैक मशीन पर एनएसीटी संग्रहीत 2021-02-05 | Active | 2018-06-06[60] | अपाचे 2.0 | जावास्क्रिप्ट/रीजनएमएल |
रिटलैंग | Inactive | 2011-05-18[61] | नया बीएसडी | .नेट |
जेएक्टर | Inactive | 2013-01-22 | एलजीपीएल | जावा |
जेटलैंग | Active | 2013-05-30[62] | नया बीएसडी | जावा |
हास्केल-ऐक्टर | Active? | 2008 | नया बीएसडी | हास्केल |
जीपार्स | Active | 2014-05-09[63] | अपाचे 2.0 | ग्रूवी |
ओसमोस | Active | 2019-05-09[64] | जीपीएल 2.0 और व्यावसायिक (दोहरी लाइसेंसिंग) | C. C++ सहयोगी |
पीएएनआईएनआई | Active | 2014-05-22 | एमपीएल 1.1 | प्रोग्रामिंग भाषा स्वयं में |
पार्ले | Active? | 2007-22-07 | जीपीएल 2.1 | पायथन |
पीरनेटिक | Active | 2007-06-29 | एलजीपीएल 3.0 | जावा |
पिकोस | Active | 2020-02-04 | एमआईटी | केआरएल |
पोस्टशार्प | Active | 2014-09-24 | व्यवसायिक / फ्रीमियम | .नेट |
पलसर | Active | 2016-07-09[65] | नया बीएसडी | पायथन |
पलसर | Active | 2016-02-18[66] | एलजीपीएल/Eclipse | क्लोजर |
पीवाईकेकेए | Active | 2019-05-07[67] | अपाचे 2.0 | पायथन |
टर्माइट योजना | Active? | 2009-05-21 | एलजीपीएल | योजना (गैम्बिट कार्यान्वयन) |
थेरॉन | Inactive[68] | 2014-01-18[69] | एमआईटी[70] | C++ |
थिस्पियन | Active | 2020-03-10 | एमआईटी | पायथन |
क्वासर | Active | 2018-11-02[71] | एलजीपीएल/ग्रहण | जावा |
लिबेक्टर | Active? | 2009 | जीपीएल 2.0 | C |
-सीपीपी | Active | 2012-03-10[72] | जीपीएल 2.0 | C++ |
S4 | Inactive | 2012-07-31[73] | अपाचे 2.0 | जावा |
C++ ऐक्टर रूपरेखा (सीएएफ) | Active | 2020-02-08[74] | बूस्ट सॉफ्टवेयर लाइसेंस 1.0 और बीएसडी 3-क्लॉज | C++11 |
सेल्युलाइड | Active | 2018-12-20[75] | एमआईटी | रूबी |
लैबव्यू ऐक्टर रूपरेखा | Active | 2012-03-01[76] | राष्ट्रीय उपकरण एसएलए | लैबव्यू |
लैबव्यू मैसेंजर लाइब्रेरी | Active | 2021-05-24 | बीएसडी | लैबव्यू |
ऑर्बिट | Active | 2019-05-28[77] | नया बीएसडी | जावा |
वास्तविक समय एम्बेडेड सिस्टम के लिए क्यूपी रूपरेखा | Active | 2019-05-25[78] | जीपीएल 2.0और व्यावसायिक (दोहरी लाइसेंसिंग) | C और C++ |
लिब-प्रक्रिया | Active | 2013-06-19 | अपाचे 2.0 | C++ |
सोब्जेक्टाइज़र संग्रहीत 2020-08-10 वेबैक मशीन पर | Active | 2021-12-28[79] | बीएसडी | C++17 |
रोटर | Active | 2022-04-23[80] | एमआईटी लाइसेंस | C++17 |
औरलींज़ | Active | 2022-08-15[81] | एमआईटी लाइसेंस | C#/.नेट |
स्काईनेट | Active | 2020-12-10 | एमआईटी लाइसेंस | C/Lua |
रिएक्टर आईओ | Active | 2016-06-14 | बीएसडी लाइसेंस | जावा/स्काला |
लिबैगेंट्स | Active | 2020-03-08 | मुखट सॉफ्टवेयर लाइसेंस | C++11 |
प्रोटो एक्टर | Active | 2021-01-05 | मुखट सॉफ्टवेयर लाइसेंस | Go, C#, पायथन, जावास्क्रिप्ट, कोटलिन |
फंक्शनलजावा आर्काइव्ड 2021-04-22 वेबैक मशीन पर | Active | 2018-08-18[82] | बीएसडी 3-क्लॉज | जावा |
रिकर | Active | 2019-01-04 | एमआईटी लाइसेंस | आरयूएसटी |
कॉमेडी | Active | 2019-03-09 | ईपीएल 1.0 | जावास्क्रिप्ट |
व्लिंगो एक्सूम ऐक्टर | Active | 2023-02-15 | मोज़िला पब्लिक लाइसेंस 2.0 | जावा, कोटलिन, जेवीएम भाषाएं, C# .नेट |
वास्म क्लाउड | Active | 2021-03-23 | अपाचे 2.0 | वेब असेंबली (आरयूएसटी, टाइनीगो, ज़िग, असेंबलीस्क्रिप्ट) |
किरण | Active | 2020-08-27 | अपाचे 2.0 | पायथन |
सेल | Active | 2012-08-02 | नया बीएसडी लाइसेंस | पायथन |
गो-ऐक्टर | Active | 2022-08-16 | जीपीएल 3.0 | गोलांग |
सेंटो | Active | 2022-11-21 | अपाचे 2.0 | सामान्य एलआईएसपी |
यह भी देखें
- स्वतंत्र कारक
- डाटा संचार
- गॉर्डन पास्क
- इनपुट / आउटपुट ऑटोमेटन
- वैज्ञानिक समुदाय का रूपक
संदर्भ
- ↑ Hewitt, Carl; Bishop, Peter; Steiger, Richard (1973). "आर्टिफिशियल इंटेलिजेंस के लिए एक सार्वभौमिक मॉड्यूलर अभिनेता औपचारिकता". IJCAI.
{{cite journal}}
: Cite journal requires|journal=
(help) - ↑ 2.0 2.1 2.2 2.3 William Clinger (June 1981). "अभिनेता शब्दार्थ की नींव". Mathematics Doctoral Dissertation. MIT. hdl:1721.1/6935.
{{cite journal}}
: Cite journal requires|journal=
(help) - ↑ 3.0 3.1 Irene Greif (August 1975). "समानांतर प्रक्रियाओं का संचार करने का शब्दार्थ". EECS Doctoral Dissertation. MIT.
{{cite journal}}
: Cite journal requires|journal=
(help) - ↑ 4.0 4.1 Henry Baker; Carl Hewitt (August 1977). "समानांतर प्रक्रियाओं के संचार के लिए कानून". IFIP.
{{cite journal}}
: Cite journal requires|journal=
(help) - ↑ "समानांतर प्रक्रियाओं के संचार के लिए कानून" (PDF). 10 May 1977. Archived (PDF) from the original on 24 June 2016. Retrieved 11 June 2014.
- ↑ 6.0 6.1 6.2 Gul Agha (1986). "Actors: A Model of Concurrent Computation in Distributed Systems". Doctoral Dissertation. MIT Press. hdl:1721.1/6952.
{{cite journal}}
: Cite journal requires|journal=
(help) - ↑ "घर". Osl.cs.uiuc.edu. Archived from the original on 2013-02-22. Retrieved 2012-12-02.
- ↑ Carl Hewitt. Viewing Control Structures as Patterns of Passing Messages Journal of Artificial Intelligence. June 1977.
- ↑ 9.0 9.1 Gul Agha; Ian Mason; Scott Smith; Carolyn Talcott (January 1993). "अभिनेता संगणना के लिए एक फाउंडेशन". Journal of Functional Programming.
- ↑ Carl Hewitt (2006-04-27). "What is Commitment? Physical, Organizational, and Social" (PDF). Archived (PDF) from the original on 2021-02-11. Retrieved 2006-05-26.
{{cite journal}}
: Cite journal requires|journal=
(help) - ↑ Mauro Gaspari; Gianluigi Zavattaro (May 1997). "An Algebra of Actors" (PDF). ओपन ऑब्जेक्ट-आधारित वितरित सिस्टम के लिए औपचारिक तरीके. Technical Report UBLCS-97-4. University of Bologna. pp. 3–18. doi:10.1007/978-0-387-35562-7_2. ISBN 978-1-4757-5266-3. Archived (PDF) from the original on 2018-07-26. Retrieved 2019-04-08.
- ↑ M. Gaspari; G. Zavattaro (1999). "अभिनेताओं का एक बीजगणित". Formal Methods for Open Object Based Systems.
{{cite journal}}
: Cite journal requires|journal=
(help) - ↑ Gul Agha; Prasanna Thati (2004). "अभिनेताओं का एक बीजगणितीय सिद्धांत और एक साधारण वस्तु-आधारित भाषा में इसका अनुप्रयोग" (PDF). From OO to FM (Dahl Festschrift) LNCS 2635. Archived from the original (PDF) on 2004-04-20.
{{cite journal}}
: Cite journal requires|journal=
(help) - ↑ John Darlington; Y. K. Guo (1994). "रैखिक तर्क में अभिनेताओं को औपचारिक बनाना". International Conference on Object-Oriented Information Systems.
{{cite journal}}
: Cite journal requires|journal=
(help) - ↑ "What is the Actor Model & When Should You Use it?". Matt Ferderer (in English). Archived from the original on 2021-08-25. Retrieved 2021-08-25.
- ↑ Cheung, Leo (2017-07-25). "अक्का और अभिनेता मॉडल IoT अनुप्रयोगों के लिए क्यों चमकते हैं". InfoWorld (in English). Archived from the original on 2021-08-25. Retrieved 2021-08-25.
- ↑ Hansen, Per Brinch (2002). The Origins of Concurrent Programming: From Semaphores to Remote Procedure Calls. Springer. ISBN 978-0-387-95401-1.
- ↑ Hansen, Per Brinch (1996). "Monitors and Concurrent Pascal: A Personal History". Communications of the ACM: 121–172.
- ↑ Hoare, Tony (October 1974). "Monitors: An Operating System Structuring Concept". Communications of the ACM. 17 (10): 549–557. doi:10.1145/355620.361161. S2CID 1005769.
- ↑ Hansen, Per Brinch (July 1973). ऑपरेटिंग सिस्टम सिद्धांत. Prentice-Hall.
- ↑ 21.0 21.1 Hewitt, Carl (2012). "What is computation? Actor Model versus Turing's Model". In Zenil, Hector (ed.). A Computable Universe: Understanding Computation & Exploring Nature as Computation. Dedicated to the memory of Alan M. Turing on the 100th anniversary of his birth. World Scientific Publishing Company.
- ↑ Frederick Knabe. A Distributed Protocol for Channel-Based Communication with Choice PARLE 1992 Archived 2017-08-31 at the Wayback Machine.
- ↑ Robin Milner. Processes: A Mathematical Model of Computing Agents in Logic Colloquium 1973.
- ↑ C.A.R. Hoare. Communicating sequential processes CACM. August 1978.
- ↑ Milner, Robin (1993). "अंतःक्रिया के तत्व". Communications of the ACM. 36: 78–89. doi:10.1145/151233.151240.
- ↑ "How Twitter Is Scaling « Waiming Mok's Blog". Waimingmok.wordpress.com. 2009-06-27. Archived from the original on 2021-02-05. Retrieved 2012-12-02.
- ↑ "Actor-Based Programming with the Asynchronous Agents Library Archived 2017-08-31 at the Wayback Machine" MSDN September 2010.
- ↑ Henry Lieberman (June 1981). "A Preview of Act 1". MIT AI memo 625. hdl:1721.1/6350.
{{cite journal}}
: Cite journal requires|journal=
(help) - ↑ Henry Lieberman (June 1981). "Thinking About Lots of Things at Once without Getting Confused: Parallelism in Act 1". MIT AI memo 626. hdl:1721.1/6351.
{{cite journal}}
: Cite journal requires|journal=
(help) - ↑ Jean-Pierre Briot. Acttalk: A framework for object-oriented concurrent programming-design and experience 2nd France-Japan workshop. 1999. Archived 2018-06-28 at the Wayback Machine
- ↑ Ken Kahn. A Computational Theory of Animation Archived 2017-08-18 at the Wayback Machine MIT EECS Doctoral Dissertation. August 1979.
- ↑ William Athas and Nanette Boden Cantor: An Actor Programming System for Scientific Computing Archived 2019-04-08 at the Wayback Machine in Proceedings of the NSF Workshop on Object-Based Concurrent Programming. 1988. Special Issue of SIGPLAN Notices.
- ↑ Darrell Woelk. Developing InfoSleuth Agents Using Rosette: An Actor Based Language Proceedings of the CIKM '95 Workshop on Intelligent Information Agents. 1995.
- ↑ Dedecker J., Van Cutsem T., Mostinckx S., D'Hondt T., De Meuter W. Ambient-oriented Programming in AmbientTalk. In "Proceedings of the 20th European Conference on Object-Oriented Programming (ECOOP), Dave Thomas (Ed.), Lecture Notes in Computer Science Vol. 4067, pp. 230-254, Springer-Verlag.", 2006
- ↑ Darryl K. Taft (2009-04-17). "माइक्रोसॉफ्ट कुकिंग अप न्यू पैरेलल प्रोग्रामिंग लैंग्वेज". Eweek.com. Archived from the original on July 29, 2012. Retrieved 2012-12-02.
- ↑ "धरण". Dalnefre.com. Archived from the original on 2021-02-07. Retrieved 2012-12-02.
- ↑ Brandauer, Stephan; et al. (2015). "Parallel objects for multicores: A glimpse at the parallel language encore". Formal Methods for Multicore Programming. Springer International Publishing: 1–56.
- ↑ "टट्टू भाषा". Archived from the original on 2018-09-04. Retrieved 2016-03-21.
- ↑ Clebsch, Sylvan; Drossopoulou, Sophia; Blessing, Sebastian; McNeil, Andy (2015). "Deny capabilities for safe, fast actors". Proceedings of the 5th International Workshop on Programming Based on Actors, Agents, and Decentralized Control - AGERE! 2015. pp. 1–12. doi:10.1145/2824815.2824816. ISBN 9781450339018. S2CID 415745. by Sylvan Clebsch, Sophia Drossopoulou, Sebastian Blessing, Andy McNeil
- ↑ "पी भाषा". GitHub. 2019-03-08. Archived from the original on 2021-01-15. Retrieved 2017-02-01.
- ↑ "पी # भाषा". GitHub. 2019-03-12. Archived from the original on 2021-03-23. Retrieved 2017-02-01.
- ↑ "क्लास ट्रैक्टर". Ruby-lang.org. Archived from the original on 2022-03-02. Retrieved 2022-03-02.
- ↑ Carlos Varela and Gul Agha (2001). "Programming Dynamically Reconfigurable Open Systems with SALSA". ACM SIGPLAN Notices. OOPSLA'2001 Intriguing Technology Track Proceedings. 36.
- ↑ Philipp Haller and Martin Odersky (September 2006). "Event-Based Programming without Inversion of Control" (PDF). Proc. JMLC 2006. Archived (PDF) from the original on 2020-11-09. Retrieved 2007-04-05.
{{cite journal}}
: Cite journal requires|journal=
(help) - ↑ Philipp Haller and Martin Odersky (January 2007). "Actors that Unify Threads and Events" (PDF). Technical report LAMP 2007. Archived from the original (PDF) on 2011-06-07. Retrieved 2007-12-10.
{{cite journal}}
: Cite journal requires|journal=
(help) - ↑ "Swift Language Guide - Concurrency". Archived from the original on 1 March 2022. Retrieved 11 March 2022.
- ↑ "acteur - 0.9.1· David Bonet · Crates.io". crates.io. Archived from the original on 2021-02-05. Retrieved 2020-04-16.
- ↑ Bulut, Mahmut (2019-12-15). "Bastion on Crates.io". Crates.io. Archived from the original on 2021-02-05. Retrieved 2019-12-15.
- ↑ "actix - 0.10.0· Rob Ede · Crates.io". crates.io. Archived from the original on 2021-05-14. Retrieved 2021-02-28.
- ↑ "Releases · zakgof/actr · GitHub". Github.com. Archived from the original on 2020-10-26. Retrieved 2019-04-16.
- ↑ "Akka 2.6.20 Released · Akka". Akka. 2022-09-06. Archived from the original on 2022-09-24. Retrieved 2022-09-24.
- ↑ "Akka License FAQ | @lightbend". Archived from the original on 2022-09-22. Retrieved 2022-09-24.
- ↑ Akka.NET v1.4.10 Stable Release GitHub - akkadotnet/akka.net: Port of Akka actors for .NET., Akka.NET, 2020-10-01, archived from the original on 2021-02-24, retrieved 2020-10-01
- ↑ Srinivasan, Sriram; Alan Mycroft (2008). "Kilim: Isolation-Typed Actors for Java" (PDF). European Conference on Object Oriented Programming ECOOP 2008. Cyprus. Archived (PDF) from the original on 2020-10-28. Retrieved 2016-02-25.
- ↑ "Releases · kilim/kilim · GitHub". Github.com. Archived from the original on 2020-10-16. Retrieved 2019-06-03.
- ↑ "Commit History · stevedekorte/ActorKit · GitHub". Github.com. Retrieved 2016-02-25.
- ↑ "Commit History · haskell-distributed/distributed-process · GitHub". Github.com. Archived from the original on 2017-03-24. Retrieved 2012-12-02.
- ↑ "Releases · CloudI/CloudI · GitHub". Github.com. Archived from the original on 2020-09-14. Retrieved 2021-06-21.
- ↑ "Tags · GNOME/clutter · GitLab". gitlab.gnome.org. Archived from the original on 2019-06-03. Retrieved 2019-06-03.
- ↑ "Releases · ncthbrt/nact · GitHub". GitHub. Archived from the original on 2020-11-27. Retrieved 2019-06-03.
- ↑ "Changes - retlang - Message based concurrency in .NET - Google Project Hosting". Archived from the original on 2015-11-24. Retrieved 2016-02-25.
- ↑ "jetlang-0.2.9-bin.zip - jetlang - jetlang-0.2.9-bin.zip - Message based concurrency for Java - Google Project Hosting". 2012-02-14. Archived from the original on 2016-01-14. Retrieved 2016-02-25.
- ↑ "GPars Releases". GitHub. Archived from the original on 2020-09-04. Retrieved 2016-02-25.
- ↑ "Releases · oosmos/oosmos · GitHub". GitHub. Archived from the original on 2020-11-13. Retrieved 2019-06-03.
- ↑ "Pulsar Design and Actors". Archived from the original on 2015-07-04.
- ↑ "Pulsar documentation". Archived from the original on 2013-07-26.
- ↑ "Changes – Pykka 2.0.0 documentation". pykka.org. Archived from the original on 2021-02-05. Retrieved 2019-06-03.
- ↑ "Theron – Ashton Mason". Archived from the original on 2019-03-31. Retrieved 2018-08-29.
- ↑ "Theron - Version 6.00.02 released". Theron-library.com. Archived from the original on 2016-03-16. Retrieved 2016-02-25.
- ↑ "Theron". Theron-library.com. Archived from the original on 2016-03-04. Retrieved 2016-02-25.
- ↑ "Releases · puniverse/quasar · GitHub". GitHub. Archived from the original on 2020-12-15. Retrieved 2019-06-03.
- ↑ "Changes - actor-cpp - An implementation of the actor model for C++ - Google Project Hosting". Archived from the original on 2015-11-18. Retrieved 2012-12-02.
- ↑ "Commit History · s4/s4 · Apache". apache.org. Archived from the original on 2016-03-06. Retrieved 2016-01-16.
- ↑ "Releases · actor-framework/actor-framework · GitHub". Github.com. Archived from the original on 2021-03-26. Retrieved 2020-03-07.
- ↑ "celluloid | RubyGems.org | your community gem host". RubyGems.org. Archived from the original on 2020-09-29. Retrieved 2019-06-03.
- ↑ "Community: Actor Framework, LV 2011 revision (version 3.0.7)". Decibel.ni.com. 2011-09-23. Archived from the original on 2016-10-13. Retrieved 2016-02-25.
- ↑ "Releases · orbit/orbit · GitHub". GitHub. Retrieved 2019-06-03.
- ↑ "QP Real-Time Embedded Frameworks & Tools - Browse Files at". Sourceforge.net. Archived from the original on 2021-02-24. Retrieved 2019-06-03.
- ↑ "Releases · Stiffstream/sobjectizer · GitHub". GitHub. Archived from the original on 2020-10-19. Retrieved 2022-05-11.
- ↑ "Releases · basiliscos/cpp-rotor· GitHub". GitHub. Archived from the original on 2020-09-15. Retrieved 2022-05-17.
- ↑ "Releases · dotnet/orleans · GitHub". GitHub. Archived from the original on 2020-12-04. Retrieved 2022-09-21.
- ↑ "FunctionalJava releases". GitHub. Archived from the original on 2021-01-15. Retrieved 2018-08-23.
अग्रिम पठन
- Gul Agha. Actors: A Model of Concurrent Computation in Distributed Systems Archived 2020-11-12 at the Wayback Machine. MIT Press 1985.
- Paul Baran. On Distributed Communications Networks IEEE Transactions on Communications Systems. March 1964.
- William A. Woods. Transition network grammars for natural language analysis Archived 2017-02-03 at the Wayback Machine CACM. 1970.
- Carl Hewitt. Procedural Embedding of Knowledge In Planner Archived 2021-02-05 at the Wayback Machine IJCAI 1971.
- G.M. Birtwistle, Ole-Johan Dahl, B. Myhrhaug and Kristen Nygaard. SIMULA Begin Auerbach Publishers Inc, 1973.
- Carl Hewitt, et al. Actor Induction and Meta-evaluation Archived 2022-11-15 at the Wayback Machine Conference Record of ACM Symposium on Principles of Programming Languages, January 1974.
- Carl Hewitt, et al Behavioral Semantics of Nonrecursive Control Structure Archived 2018-06-10 at the Wayback Machine Proceedings of Colloque sur la Programmation, April 1974.
- Irene Greif and Carl Hewitt. Actor Semantics of PLANNER-73 Archived 2021-02-05 at the Wayback Machine Conference Record of ACM Symposium on Principles of Programming Languages. January 1975.
- Carl Hewitt. How to Use What You Know IJCAI. September, 1975.
- Alan Kay and Adele Goldberg. Smalltalk-72 Instruction Manual Xerox PARC Memo SSL-76-6. May 1976.
- Edsger Dijkstra. A discipline of programming Prentice Hall. 1976.
- Carl Hewitt and Henry Baker Actors and Continuous Functionals Proceeding of IFIP Working Conference on Formal Description of Programming Concepts. August 1–5, 1977.
- Carl Hewitt and Russ Atkinson. Synchronization in Actor Systems Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages. 1977
- Carl Hewitt and Russ Atkinson. Specification and Proof Techniques for Serializers IEEE Journal on Software Engineering. January 1979.
- Ken Kahn. A Computational Theory of Animation Archived 2017-08-18 at the Wayback Machine MIT EECS Doctoral Dissertation. August 1979.
- Carl Hewitt, Beppe Attardi, and Henry Lieberman. Delegation in Message Passing Proceedings of First International Conference on Distributed Systems Huntsville, AL. October 1979.
- Nissim Francez, C.A.R. Hoare, Daniel Lehmann, and Willem-Paul de Roever. Semantics of nondeterminism, concurrency, and communication Journal of Computer and System Sciences. December 1979.
- George Milne and Robin Milner. Concurrent processes and their syntax JACM. April 1979.
- Daniel Theriault. A Primer for the Act-1 Language MIT AI memo 672. April 1982.
- Daniel Theriault. Issues in the Design and Implementation of Act 2 Archived 2019-04-08 at the Wayback Machine MIT AI technical report 728. June 1983.
- Henry Lieberman. An Object-Oriented Simulator for the Apiary Conference of the American Association for Artificial Intelligence, Washington, D. C., August 1983
- Carl Hewitt and Peter de Jong. Analyzing the Roles of Descriptions and Actions in Open Systems Proceedings of the National Conference on Artificial Intelligence. August 1983.
- Carl Hewitt and Henry Lieberman. Design Issues in Parallel Architecture for Artificial Intelligence MIT AI memo 750. Nov. 1983.
- C.A.R. Hoare. Communicating Sequential Processes Archived 2021-02-01 at the Wayback Machine Prentice Hall. 1985.
- Carl Hewitt. The Challenge of Open Systems Byte. April 1985. Reprinted in The foundation of artificial intelligence: a sourcebook Cambridge University Press. 1990.
- Carl Manning. Traveler: the actor observatory ECOOP 1987. Also appears in Lecture Notes in Computer Science, vol. 276.
- William Athas and Charles Seitz Multicomputers: message-passing concurrent computers Archived 2021-02-05 at the Wayback Machine IEEE Computer August 1988.
- William Athas and Nanette Boden Cantor: An Actor Programming System for Scientific Computing in Proceedings of the NSF Workshop on Object-Based Concurrent Programming. 1988. Special Issue of SIGPLAN Notices.
- Jean-Pierre Briot. From objects to actors: Study of a limited symbiosis in Smalltalk-80 Archived 2020-11-25 at the Wayback Machine Rapport de Recherche 88–58, RXF-LITP, Paris, France, September 1988
- William Dally and Wills, D. Universal mechanisms for concurrency Archived 2018-06-18 at the Wayback Machine PARLE 1989.
- W. Horwat, A. Chien, and W. Dally. Experience with CST: Programming and Implementation Archived 2021-05-14 at the Wayback Machine} PLDI. 1989.
- Carl Hewitt. Towards Open Information Systems Semantics Proceedings of 10th International Workshop on Distributed Artificial Intelligence. October 23–27, 1990. Bandera, Texas.
- Akinori Yonezawa, Ed. ABCL: An Object-Oriented Concurrent System MIT Press. 1990.
- K. Kahn and Vijay A. Saraswat, "Actors as a special case of concurrent constraint (logic) programming", in SIGPLAN Notices, October 1990. Describes Janus.
- Carl Hewitt. Open Information Systems Semantics Journal of Artificial Intelligence. January 1991.
- Carl Hewitt and Jeff Inman. DAI Betwixt and Between: From "Intelligent Agents" to Open Systems Science IEEE Transactions on Systems, Man, and Cybernetics. Nov./Dec. 1991.
- Carl Hewitt and Gul Agha. Guarded Horn clause languages: are they deductive and Logical? International Conference on Fifth Generation Computer Systems, Ohmsha 1988. Tokyo. Also in Artificial Intelligence at MIT, Vol. 2. MIT Press 1991.
- William Dally, et al. The Message-Driven Processor: A Multicomputer Processing Node with Efficient Mechanisms Archived 2021-02-05 at the Wayback Machine IEEE Micro. April 1992.
- S. Miriyala, G. Agha, and Y.Sami. Visualizing actor programs using predicate transition nets Archived 2020-11-10 at the Wayback Machine Journal of Visual Programming. 1992.
- Carl Hewitt and Carl Manning. Negotiation Architecture for Large-Scale Crisis Management AAAI-94 Workshop on Models of Conflict Management in Cooperative Problem Solving. Seattle, WA. Aug. 4, 1994.
- Carl Hewitt and Carl Manning. Synthetic Infrastructures for Multi-Agency Systems Proceedings of ICMAS '96. Kyoto, Japan. December 8–13, 1996.
- S. Frolund. Coordinating Distributed Objects: An Actor-Based Approach for Synchronization MIT Press. November 1996.
- W. Kim. ThAL: An Actor System for Efficient and Scalable Concurrent Computing Archived 2017-08-31 at the Wayback Machine PhD thesis. University of Illinois at Urbana Champaign. 1997.
- Jean-Pierre Briot. Acttalk: A framework for object-oriented concurrent programming-design and experience 2nd France-Japan workshop. 1999.
- N. Jamali, P. Thati, and G. Agha. An actor based architecture for customizing and controlling agent ensembles Archived 2020-11-25 at the Wayback Machine IEEE Intelligent Systems. 14(2). 1999.
- Don Box, David Ehnebuske, Gopal Kakivaya, Andrew Layman, Noah Mendelsohn, Henrik Nielsen, Satish Thatte, Dave Winer. Simple Object Access Protocol (SOAP) 1.1 W3C Note. May 2000.
- M. Astley, D. Sturman, and G. Agha. Customizable middleware for modular distributed software Archived 2017-08-31 at the Wayback Machine CACM. 44(5) 2001.
- Edward Lee, S. Neuendorffer, and M. Wirthlin. Actor-oriented design of embedded hardware and software systems Archived 2016-10-20 at the Wayback Machine Journal of Circuits, Systems, and Computers. 2002.
- P. Thati, R. Ziaei, and G. Agha. A Theory of May Testing for Actors Formal Methods for Open Object-based Distributed Systems. March 2002.
- P. Thati, R. Ziaei, and G. Agha. A theory of may testing for asynchronous calculi with locality and no name matching Algebraic Methodology and Software Technology. Springer Verlag. September 2002. LNCS 2422.
- Stephen Neuendorffer. Actor-Oriented Metaprogramming Archived 2020-09-25 at the Wayback Machine PhD Thesis. University of California, Berkeley. December, 2004
- Carl Hewitt (2006a) The repeated demise of logic programming and why it will be reincarnated What Went Wrong and Why: Lessons from AI Research and Applications. Technical Report SS-06-08. AAAI Press. March 2006.
- Carl Hewitt (2006b) What is Commitment? Physical, Organizational, and Social Archived 2021-02-11 at the Wayback Machine COIN@AAMAS. April 27, 2006b.
- Carl Hewitt (2007a) What is Commitment? Physical, Organizational, and Social (Revised) Pablo Noriega .et al. editors. LNAI 4386. Springer-Verlag. 2007.
- Carl Hewitt (2007b) Large-scale Organizational Computing requires Unstratified Paraconsistency and Reflection Archived 2020-11-25 at the Wayback Machine COIN@AAMAS'07.
- D. Charousset, T. C. Schmidt, R. Hiesgen and M. Wählisch. Native actors: a scalable software platform for distributed, heterogeneous environments in AGERE! '13 Proceedings of the 2013 workshop on Programming based on actors, agents, and decentralized control.
बाहरी संबंध
- Hewitt, Meijer और Szyperski: The Actor Model (everything you wanted to know, but were afraid to ask) माइक्रोसॉफ्ट Channel 9. April 9, 2012. Video on YouTube
- Functional जावा Archived 2011-07-09 at the Wayback Machine – a जावा library that includes an implementation of concurrent actors with code examples in standard जावा और जावा 7 BGGA style.
- ActorFoundry – a जावा-based library for actor programming. The familiar जावा syntax, an ant build file और a bunch of example make the entry barrier very low.
- ActiveJava – a prototype जावा language extension for actor programming.
- Akka – actor based library in Scala और जावा, from Lightbend Inc.
- GPars – a concurrency library for अपाचे ग्रूवी और जावा
- Asynchronous Agents Library – माइक्रोसॉफ्ट actor library for Visual C++. "The Agents Library is a C++ template library that promotes an actor-based programming model और in-process message passing for coarse-grained dataflow और pipelining tasks. "
- ActorThread in C++11 – base template providing the gist of the actor model over naked threads in standard C++11