कॉमन लिस्प ऑब्जेक्ट सिस्टम: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Tag: Manual revert
 
(13 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Other uses|Clos (disambiguation)}}
{{Other uses|Clos (disambiguation)}}
[[File:Method-combination.png|thumb|right|एएनएसआई कॉमन लिस्प में मानक विधि संयोजन]][[ सामान्य लिस्प | सामान्य क्रिया]] बहुविकल्पीय pradanli (CLOS) [[ ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग ]] की सुविधा है जो अमेरिकी राष्ट्रीय मानक संस्थान कॉमन लिस्प का हिस्सा है। CLOS एक शक्तिशाली [[गतिशील प्रोग्रामिंग भाषा]] वस्तु प्रणाली है जो [[C++]] या Java (प्रोग्रामिंग भाषा) जैसी अधिक [[स्थिर भाषा]]ओं में पाई जाने वाली OOP सुविधाओं से मौलिक रूप से भिन्न है। सीएलओएस पहले के लिस्प ऑब्जेक्ट सिस्टम जैसे [[ जायके (कंप्यूटर विज्ञान) ]] और [[कॉमनलूप्स]] से प्रेरित था, हालांकि यह या तो अधिक सामान्य है। मूल रूप से ऐड-ऑन के रूप में प्रस्तावित, CLOS को कॉमन लिस्प के लिए ANSI मानक के हिस्से के रूप में अपनाया गया था और इसे अन्य लिस्प बोलियों जैसे [[EuLisp]] या [[Emacs Lisp]] में रूपांतरित किया गया है।<ref>"CLOS is a standard. Multiple vendors supply CLOS. CLOS (or parts of it) is being used to add object-orientation to other Lisp dialects such as EuLisp or Emacs Lisp." p. 110 of Veitch 1998</ref>
[[File:Method-combination.png|thumb|right|एएनएसआई कॉमन लिस्प में मानक विधि संयोजन]][[ सामान्य लिस्प | सामान्य क्रिया]] बहुविकल्पीय प्रणाली बंद      [[ ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग | बहुविकल्पी उन्मुख कार्यक्रमों]] की सुविधा है जो अमेरिकी राष्ट्रीय मानक संस्थान सामान्य एलआइएसपी का हिस्सा है सीएलओएसई एक शक्तिशाली [[गतिशील प्रोग्रामिंग भाषा|गतिशील कार्यक्रम भाषा]] वस्तु प्रणाली है जो [[C++]] या जावा कार्यक्रमिक भाषा जैसी अधिक [[स्थिर भाषा]]ओं में पाई जाने वाली ओओपी सुविधाओं से मौलिक रूप से भिन्न है सीएलओएस पहले के एल आईएसपी बहुविकल्पी प्रणाली जैसे [[ जायके (कंप्यूटर विज्ञान) |जायके कंप्यूटर विज्ञान]] और [[कॉमनलूप्स|सामान्य]] एलयूपीएस से प्रेरित था जबकि यह या तो अधिक सामान्य है मूल रूप से ऐडी ऑन के रूप में प्रस्तावित सीएलओएसई को सामान्य एलआईएसपी के लिए एएनएसआई मानक के हिस्से के रूप में अपनाया गया था और इसे अन्य बोलियों जैसे [[EuLisp|भाषा एलआईएसपी]] या ईएमएएससी [[Emacs Lisp|एल आई एस पी]] में रूपांतरित किया गया है।<ref>"CLOS is a standard. Multiple vendors supply CLOS. CLOS (or parts of it) is being used to add object-orientation to other Lisp dialects such as EuLisp or Emacs Lisp." p. 110 of Veitch 1998</ref>




== सुविधाएँ ==
== सुविधाएँ ==
सीएलओएस के बुनियादी बिल्डिंग ब्लॉक [[विधि (कंप्यूटर प्रोग्रामिंग)]], कक्षा (कंप्यूटर प्रोग्रामिंग), उन वर्गों के उदाहरण और सामान्य कार्य हैं।
सीएलओएस की बुनियादी भवन बंद [[विधि (कंप्यूटर प्रोग्रामिंग)|विधि कंप्यूटर कार्यक्रम]] में कक्षा उन वर्गों के उदाहरण और सामान्य कार्य हैं सीएलओएसई उनको परिभाषित करने के लिए बहुत बड़ा स्तर प्रदान करता है डीईएफ कक्षा,डीईएफ मैथेड, और डीईएफ जनरल विधि के उदाहरण हैं। 
CLOS उनको परिभाषित करने के लिए मैक्रोज़ प्रदान करता है: <code>defclass</code>, <code>defmethod</code>, और <code>defgeneric</code>. विधि से उदाहरण बनाए जाते हैं <code>make-instance</code>.


कक्षाओं में कई [[सुपरक्लास (कंप्यूटर विज्ञान)]] हो सकते हैं, स्लॉट्स की एक सूची (C++/Java भाषा में सदस्य चर) और एक विशेष [[मेटाक्लास]]। स्लॉट को कक्षा द्वारा आवंटित किया जा सकता है (कक्षा के सभी उदाहरण स्लॉट साझा करते हैं) या उदाहरण के द्वारा। प्रत्येक स्लॉट का एक नाम होता है और स्लॉट के मूल्य को फ़ंक्शन का उपयोग करके उस नाम से एक्सेस किया जा सकता है <code>slot-value</code>. इसके अतिरिक्त विशेष सामान्य कार्यों को स्लॉट के मान लिखने या पढ़ने के लिए परिभाषित किया जा सकता है। CLOS क्लास में प्रत्येक स्लॉट का एक विशिष्ट नाम होना चाहिए।
कक्षाओं में कई [[सुपरक्लास (कंप्यूटर विज्ञान)|अच्छी कक्षायें कंप्यूटर विज्ञान]] भी हो सकती हैं छिद्र की एक सूची जिसमें C++/ जावा भाषा में सदस्य चर और एक विशेष साहसी कक्षा  को कक्षा द्वारा आवंटित किया जा सकता है कक्षा के सभी उदाहरण छिद्र साझा करते हैं प्रत्येक छिद्र का एक नाम होता है और छिद्र के मूल्य को कार्यक्रम का उपयोग करके उस नाम से अनुलेख किया जा सकता है छिद्र कार्य के अतिरिक्त विशेष सामान्य कार्यों को छिद्र के मान लिखने या पढ़ने के लिए परिभाषित किया जा सकता है बंद कक्षा में प्रत्येक छिद्र का एक विशिष्ट नाम होता है।


सीएलओएस एक बहु प्रेषण प्रणाली है। इसका मतलब यह है कि [[ विधि (कंप्यूटर विज्ञान) ]] को उनके किसी भी या सभी आवश्यक तर्कों पर विशेषीकृत किया जा सकता है। अधिकांश OO भाषाएँ एकल-प्रेषण हैं, जिसका अर्थ है कि विधियाँ केवल पहले तर्क पर विशिष्ट हैं। एक और असामान्य विशेषता यह है कि विधियाँ कक्षाओं से संबंधित नहीं हैं; कक्षाएं सामान्य कार्यों या विधियों के लिए नामस्थान प्रदान नहीं करती हैं। विधियों को कक्षाओं से अलग से परिभाषित किया गया है, और उनकी कोई विशेष पहुँच नहीं है (उदाहरण के लिए यह , स्वयं , या संरक्षित ) वर्ग स्लॉट के लिए।
सीएलओएस एक बहु प्रेषण प्रणाली है इसका अर्थ यह है कि [[ विधि (कंप्यूटर विज्ञान) |विधि कंप्यूटर विज्ञान]] को उनके किसी भी या सभी आवश्यक तर्कों पर विशेषीकृत किया जा सकता है अधिकांश भाषाएँ एकल-प्रेषण हैं जिसका अर्थ है कि विधियाँ केवल पहले तर्क पर विशिष्ट हैं और एक असामान्य विशेषता यह है कि विधियाँ कक्षाओं से संबंधित नहीं हैं कक्षाएं सामान्य कार्यों या विधियों के लिए नामस्थान प्रदान नहीं करती हैं विधियों को कक्षाओं से अलग से परिभाषित किया गया है और उनकी कोई विशेष पहुँच नहीं है उदाहरण के लिए यह , स्वयं , या संरक्षित आदि वर्ग हैं।


सीएलओएस में विधियों को सामान्य कार्यों में बांटा गया है। एक सामान्य कार्य एक वस्तु है जो एक फ़ंक्शन की तरह कॉल करने योग्य है और जो एक साझा नाम और तर्क संरचना के साथ विधियों के संग्रह को जोड़ता है, प्रत्येक अलग-अलग तर्कों के लिए विशिष्ट है। चूंकि सामान्य लिस्प संरचनाओं और अंतर्निर्मित डेटा प्रकारों (संख्या, तार, वर्ण, प्रतीक, ...) के लिए गैर-सीएलओएस कक्षाएं प्रदान करता है, इसलिए सीएलओएस प्रेषण इन गैर-सीएलओएस कक्षाओं के साथ भी काम करता है। सीएलओएस व्यक्तिगत वस्तुओं (ईक्यूएल विशेषज्ञ) पर प्रेषण का भी समर्थन करता है। सीएलओएस डिफ़ॉल्ट रूप से सभी सामान्य लिस्प डेटा प्रकारों पर प्रेषण का समर्थन नहीं करता है (उदाहरण के लिए प्रेषण पूरी तरह से विशिष्ट सरणी प्रकारों के लिए काम नहीं करता है या इसके द्वारा पेश किए गए प्रकारों के लिए <code>deftype</code>). हालांकि, अधिकांश सामान्य लिस्प कार्यान्वयन एक [[मेटाऑब्जेक्ट प्रोटोकॉल]] प्रदान करते हैं जो सामान्य कार्यों को एप्लिकेशन विशिष्ट विशेषज्ञता और प्रेषण नियम प्रदान करने की अनुमति देता है।
सीएलओएस में विधियों को सामान्य कार्यों में बांटा गया है एक सामान्य कार्य एक वस्तु है जो एक कार्यक्रम की तरह कॉल करने योग्य है और जो एक साझा नाम और तर्क संरचना के साथ विधियों के संग्रह को जोड़ता है जो अलग-अलग तर्कों के लिए विशिष्ट है चूंकि सामान्य एलआईएसपी संरचनाओं और अंतर्निर्मित डेटा प्रकारों जैसे संख्या, तार, वर्ण, प्रतीक, ...के लिए गैर-सीएलओएस कक्षाएं प्रदान करता है इसलिए सीएलओएस प्रेषण इन गैर-सीएलओएस कक्षाओं के साथ भी काम करता है सीएलओएस व्यक्तिगत वस्तुओं ईक्यूएल विशेषज्ञ पर प्रेषण का भी समर्थन करता है सीएलओएस गलत रूप से सभी सामान्य एलआईएसपी डेटा प्रकारों पर प्रेषण का समर्थन नहीं करता है उदाहरण के लिए प्रेषण पूरी तरह से विशिष्ट सरणी प्रकारों के लिए काम नहीं करता है या इसके द्वारा पेश किए गए प्रकारों के लिए आवश्यक है जबकि अधिकांश सामान्य एलआईएसपी कार्यान्वयन एक छिद्र बहुविकल्पी [[मेटाऑब्जेक्ट प्रोटोकॉल|प्रोटोकॉल]] प्रदान करते हैं जो सामान्य कार्यों को प्रार्थना पत्र विशिष्ट विशेषज्ञता और प्रेषण नियम प्रदान करने की अनुमति देता है।


CLOS में डिस्पैच भी अधिकांश OO भाषाओं से अलग है:
बंद प्रेषण भी अधिकांश भाषाओं से अलग है जो इस प्रकार है-


# तर्कों की सूची को देखते हुए, लागू विधियों की एक सूची निर्धारित की जाती है।
# तर्कों की सूची को देखते हुए लागू विधियों की एक सूची निर्धारित की जाती है।
# यह सूची उनके पैरामीटर विशेषज्ञों की विशिष्टता के अनुसार क्रमबद्ध है।
# यह सूची उनके पैरामीटर विशेषज्ञों की विशिष्टता के अनुसार क्रमबद्ध है।
# इस सूची से चयनित विधियों को तब जेनेरिक फ़ंक्शन द्वारा उपयोग की जाने वाली विधि संयोजन का उपयोग करके एक प्रभावी विधि में जोड़ा जाता है।
# इस सूची से चयनित विधियों को तब सामान्य कार्यक्रम द्वारा उपयोग की जाने वाली विधि संयोजन का उपयोग करके एक प्रभावी विधि में जोड़ा जाता है।
# प्रभावी विधि को तब मूल तर्कों के साथ कहा जाता है।
# प्रभावी विधि को मूल तर्क कहा जाता है।


यह प्रेषण तंत्र रनटाइम पर काम करता है। इस प्रकार विधियों को जोड़ने या हटाने से रनटाइम पर परिवर्तित प्रभावी तरीके हो सकते हैं (तब भी जब सामान्य फ़ंक्शन को समान तर्कों के साथ कहा जाता है)। विधि संयोजन को बदलने से विभिन्न प्रभावी तरीके भी हो सकते हैं।
यह प्रेषण तंत्र समय पर काम करता है इस प्रकार विधियों को जोड़ने या हटाने से समय पर परिवर्तित प्रभावी तरीके हो सकते हैं तब भी जब सामान्य कार्यक्रम को समान तर्कों के साथ जोड़ा जाता है इस विधि संयोजन के प्रभावी तरीके भी हो सकते हैं।


उदाहरण के लिए,
उदाहरण के लिए
<syntaxhighlight lang="lisp">
; Declare the common argument structure prototype.
(defgeneric f (x y))


; Define an implementation for (f integer t), where t matches all types.
सामान्य तर्क संरचना मूलरूपर की सामान्य एफ पूर्णांक लिए एक कार्यान्वयन को परिभाषित करें जहां टी सभी प्रकर से मेल खाता है एफ एक्स तथा एफ एक्स पूर्णांक को परिभाषित करें । 
(defmethod f ((x integer) y)
  1)


(f 1 2.0) => 1


; Define an implementation for (f integer real).
(defmethod f ((x integer) (y real))
  2)


(f 1 2.0) => 2  ;Dispatch changed at runtime.
कार्यक्रमिक भाषा प्रणाली की तरह बंद[[ Encapsulation (कंप्यूटर विज्ञान) | कैप्शूलीकरण कंप्यूटर विज्ञान]] को लागू नहीं करता है इसमें किसी भी छिद्र का उपयोग करके पहुँचा जा सकता है छिद्रित कार्यक्रम या वैकल्पिक रूप से [[एक्सेसर विधि|अनुलेख विधि]]यों के माध्यम से इसे अनुलेख करने के लिए छिद्र आवाज तथा छिद्र का नाम पता होना चाहिए सीएल कार्यक्रम भाषा का [[ नाम स्थान |नाम स्थान]] सुविधा का उपयोग यह घोषित करने के लिए करते हैं कि निर्यात के लिए कौन से कार्य या डेटा संरचनाएँ अभिप्रेरित हैं।
</syntaxhighlight>
अधिकांश डायनेमिक प्रोग्रामिंग लैंग्वेज में OO सिस्टम की तरह, CLOS [[ Encapsulation (कंप्यूटर विज्ञान) ]] को लागू नहीं करता है। किसी भी स्लॉट का उपयोग करके पहुँचा जा सकता है <code>slot-value</code> फ़ंक्शन या (वैकल्पिक रूप से ऑटो-जेनरेट) [[एक्सेसर विधि]]यों के माध्यम से। के माध्यम से इसे एक्सेस करने के लिए <code>slot-value</code> आपको स्लॉट का नाम पता होना चाहिए। सीएल प्रोग्रामर भाषा की [[ नाम स्थान ]] सुविधा का उपयोग यह घोषित करने के लिए करते हैं कि निर्यात के लिए कौन से कार्य या डेटा संरचनाएँ अभिप्रेत हैं।


सामान्य (प्राथमिक) विधियों के अलावा भी हैं <code>:before</code>, <code>:after</code>, और <code>:around</code> सहायक तरीके। वर्ग पदानुक्रम के आधार पर एक विशेष क्रम में, पहले दो को प्राथमिक विधि से पहले या बाद में लागू किया जाता है। एक <code>:around</code> विधि नियंत्रित कर सकती है कि प्राथमिक विधि को निष्पादित किया गया है या नहीं। इसके अतिरिक्त, प्रोग्रामर यह निर्दिष्ट कर सकता है कि क्या [[पदानुक्रम (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग)]] के साथ सभी संभावित प्राथमिक विधियों को बुलाया जाना चाहिए या केवल निकटतम मिलान प्रदान करने वाला।
सामान्य प्राथमिक विधियों के छोड़कर इनके सहायक तरीके इस प्रकार हैं पहले, बाद और <code>:चारों ओर</code> आदि वर्ग पदानुक्रम के आधार पर एक विशेष क्रम में पहले दो को प्राथमिक विधि से या बाद में लागू किया जाता है जो चारों ओर विधि नियंत्रित कर सकती है कि प्राथमिक विधि को निष्पादित किया गया है या नहीं इसके अतिरिक्त कार्यक्रम यह निर्दिष्ट कर सकता है कि क्या [[पदानुक्रम (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग)|पदानुक्रम बहुविकल्पी कार्यक्रम]] के साथ सभी संभावित प्राथमिक विधियों को बुलाया जाना चाहिए या केवल निकटतम मिलान प्रदान करने वाला होना चाहिए।


मानक विधि-संयोजन ऊपर बताए गए तरीकों के पहले, पहले और बाद में प्राथमिक प्रदान करता है। अन्य विधि-संयोजन अन्य विधि प्रकारों के साथ हैं। नई (सरल और जटिल दोनों) विधि-संयोजन और विधि प्रकार परिभाषित किए जा सकते हैं।
मानक विधि-संयोजन ऊपर बताए गए तरीकों के पहले और बाद में प्राथमिकता प्रदान करता है अन्य विधि-संयोजन नये प्रकारों के साथ हैं नई सरल और जटिल दोनों विधि-संयोजन विधि से परिभाषित किए जा सकते हैं।


सीएलओएस [[एकाधिक वंशानुक्रम]] की अनुमति देता है। जब डिफ़ॉल्ट क्रम जिसमें एकाधिक विरासत में विधियों को निष्पादित किया जाता है, सही नहीं है, प्रोग्रामर हीरे की समस्या को विधि संयोजनों के क्रम को निर्दिष्ट करके हल कर सकता है।
सीएलओएस [[एकाधिक वंशानुक्रम]] की अनुमति देता है जब गलत क्रम जिसमें एकाधिक विरासत में विधियों को निष्पादित किया जाता है तो यह सही नहीं है कार्यक्रम हीरे की समस्या को विधि संयोजनों के क्रम को निर्दिष्ट करके हल कर सकता है।


सीएलओएस गतिशील है, जिसका अर्थ है कि केवल सामग्री, बल्कि इसकी वस्तुओं की संरचना को भी रनटाइम पर संशोधित किया जा सकता है। सीएलओएस ऑन-द-फ्लाई (यहां तक ​​​​कि जब प्रश्न में वर्ग के उदाहरण पहले से मौजूद हैं) बदलने के साथ-साथ किसी दिए गए उदाहरण की कक्षा सदस्यता को बदलने का समर्थन करता है। <code>change-class</code> ऑपरेटर। CLOS रनटाइम पर तरीकों को जोड़ने, फिर से परिभाषित करने और हटाने की भी अनुमति देता है। सर्कल-एलीप्से समस्या | सर्कल-एलिप्से समस्या सीएलओएस में आसानी से हल हो जाती है, और अधिकांश ओओपी [[डिजाइन पैटर्न (कंप्यूटर विज्ञान)]] या तो गायब हो जाते हैं या गुणात्मक रूप से सरल होते हैं।<ref>In the [http://norvig.com/design-patterns/ Design Patterns in Dynamic Languages] slides, Peter Norvig presents his findings that 16 out of 23 design patterns taken from various textbooks are either "invisible or simpler" in Dylan or Common Lisp than in C++.</ref>
सीएलओएस गतिशील है जिसका अर्थ है कि केवल सामग्री ही नहीं बल्कि इसकी वस्तुओं की संरचना को भी समय पर संशोधित किया जा सकता है सीएलओएस उड़ने पर यहां तक ​​​​कि जब प्रश्न में वर्ग के उदाहरण पहले से एकत्र हैं जो बदलने के साथ-साथ किसी दिए गए उदाहरण को बदलने का समर्थन करता है कक्षा चालक बंद समय पर तरीकों को जोड़ने या फिर से परिभाषित करने और हटाने की भी अनुमति देता है वृत्त प्रार्थना पत्र समस्या है जो वृत्त प्रार्थना पत्र समस्या सीएलओएस में आसानी से हल हो जाती है और अधिकांश ओओपी बनावट [[डिजाइन पैटर्न (कंप्यूटर विज्ञान)|चिन्ह कंप्यूटर विज्ञान]] या तो गायब हो जाते हैं या गुणात्मक रूप से सरल होते हैं <ref>In the [http://norvig.com/design-patterns/ Design Patterns in Dynamic Languages] slides, Peter Norvig presents his findings that 16 out of 23 design patterns taken from various textbooks are either "invisible or simpler" in Dylan or Common Lisp than in C++.</ref>सीएलओएस एक [[प्रोटोटाइप-आधारित भाषा]] नहीं है जो वस्तुओं को उस वर्ग के सदस्यों के रूप में त्वरित करने से पहले कक्षाओं को परिभाषित किया जाना चाहिए।
सीएलओएस एक [[प्रोटोटाइप-आधारित भाषा]] नहीं है: वस्तुओं को उस वर्ग के सदस्यों के रूप में त्वरित करने से पहले कक्षाओं को परिभाषित किया जाना चाहिए।


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


विभिन्न सामान्य लिस्प कार्यान्वयनों में [[मेटाऑब्जेक्ट प्रोटोकॉल की कला]] थोड़ा अलग समर्थन है। करीब<ref>[http://common-lisp.net/project/closer/closer-mop.html Closer Project: Closer to MOP]</ref> परियोजना का उद्देश्य लापता सुविधाओं को प्रदान करना है।
विभिन्न सामान्य एलआईएसपी कार्यान्वयनों में मापन बहुविकल्पी [[मेटाऑब्जेक्ट प्रोटोकॉल की कला|प्रोटोकॉल की कला]] थोड़ा अलग समर्थन है तथा<ref>[http://common-lisp.net/project/closer/closer-mop.html Closer Project: Closer to MOP]</ref> परियोजना का उद्देश्य गायब सुविधाओं को प्रदान करना है।


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


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


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


* सीओएस, सी ऑब्जेक्ट सिस्टम<ref>{{cite conference |last=Deniau |first=Laurent |date=2010-03-12 |df=dmy |title=The C Object System: Using C as a High-Level Object-Oriented Language |arxiv=1003.2547 |citeseerx=10.1.1.763.7946 |doi=<!-- --> |url=https://ldeniau.web.cern.ch/ldeniau/html/cos-oopsla09-draft.pdf |access-date=2022-03-17}}</ref>
* सीओएस सी बहुविकल्पी प्रणालीाली। <ref>{{cite conference |last=Deniau |first=Laurent |date=2010-03-12 |df=dmy |title=The C Object System: Using C as a High-Level Object-Oriented Language |arxiv=1003.2547 |citeseerx=10.1.1.763.7946 |doi=<!-- --> |url=https://ldeniau.web.cern.ch/ldeniau/html/cos-oopsla09-draft.pdf |access-date=2022-03-17}}</ref>
* [[डायलन (प्रोग्रामिंग भाषा)]]
* [[डायलन (प्रोग्रामिंग भाषा)|डायलन कार्यक्रमिक भाषा।]]
* डायनेस, ए (काफी हद तक) सी में सीएलओएस कार्यान्वयन<ref>[https://github.com/blakemcbride/Dynace Dynace Object Oriented Extension To C]</ref>
* डायसन सी में सीएलओएस कार्यान्वयन। <ref>[https://github.com/blakemcbride/Dynace Dynace Object Oriented Extension To C]</ref>
* [https://www.gnu.org/software/emacs/manual/html_mono/eieio.html EIEIO] Emacs Lisp के लिए
* ईएमएसीएस एलआईएसपी के लिए।
* [http://practical-scheme.net/gauche/ Gauche], CLOS वाली स्कीम
* बंद वाली स्कीम।
* [https://www.gnu.org/software/guile/manual/html_node/GOOPS.html#GOOPS GOOPS] [[जीएनयू गुइल]] में
* [[जीएनयू गुइल]] में।
* [[ISLISP]] में ILOS
* आईएलएस में।
* [https://pages.lip6.fr/Christian.Quinnec/WWW/Meroon.html Meroon], योजना में एक वस्तु प्रणाली
* योजना में एक वस्तु प्रणाली।
* [https://ktakashi.github.io/sagittarius-ref.html धनु], CLOS वाली एक योजना
* बंद वाली एक योजना।
* [http://www.ccs.neu.edu/home/dorai/scmobj/scmobj.html ScmObj], योजना के लिए
* योजना के लिए।
* [https://www.gnu.org/software/mit-scheme/documentation/mit-scheme-sos/ SOS] एमआईटी योजना के लिए
* एमआईटी योजना के लिए।
* [http://www.stklos.net STklos], CLOS वाली एक योजना
*
* [http://docs.racket-lang.org/swindle/ Swindle] रैकेट में
* रैकेट में।
* [http://wiki.call-cc.org/eggref/4/coops] चिकन योजना में
* चिकन योजना में।
* [[ताल कौशल]] के लिए VCLOS<ref>{{cite journal |last1=Newton |first1=Jim |last2=Rhodes |first2=Christophe |date=2008-11-28 |df=dmy |title=ऑब्जेक्ट-ओरिएंटेड लिस्प में कस्टम विशेषज्ञ|work=[[Journal of Universal Computer Science]] |volume=14 |issue=20 |pages=3370-3388 |doi=10.3217/jucs-014-20-3370 |citeseerx=10.1.1.523.2413 |s2cid=12032836 |doi-access=free |url=https://www.jucs.org/jucs_14_20/custom_specializers_in_object.html |access-date=2022-03-17}}</ref>
* [[ताल कौशल]] के लिए वी सीएलओएस। <ref>{{cite journal |last1=Newton |first1=Jim |last2=Rhodes |first2=Christophe |date=2008-11-28 |df=dmy |title=ऑब्जेक्ट-ओरिएंटेड लिस्प में कस्टम विशेषज्ञ|work=[[Journal of Universal Computer Science]] |volume=14 |issue=20 |pages=3370-3388 |doi=10.3217/jucs-014-20-3370 |citeseerx=10.1.1.523.2413 |s2cid=12032836 |doi-access=free |url=https://www.jucs.org/jucs_14_20/custom_specializers_in_object.html |access-date=2022-03-17}}</ref>
* टिनी सीएलओएस<ref>[http://community.schemewiki.org/?Tiny-CLOS Tiny CLOS, developed by Gregor Kiczales ]</ref>
* टिनी सीएलओएस। <ref>[http://community.schemewiki.org/?Tiny-CLOS Tiny CLOS, developed by Gregor Kiczales ]</ref>




Line 99: Line 85:
* [[ सामान्य लिस्प हाइपरस्पेक ]], [http://www.lispworks.com/documentation/HyperSpec/Body/07_.htm चैप्टर 7: ऑब्जेक्ट्स]
* [[ सामान्य लिस्प हाइपरस्पेक ]], [http://www.lispworks.com/documentation/HyperSpec/Body/07_.htm चैप्टर 7: ऑब्जेक्ट्स]


{{Common Lisp}}
[[Category:Articles with hatnote templates targeting a nonexistent page]]
{{Lisp programming language}}
[[Category:Collapse templates]]
 
श्रेणी:सामान्य लिस्प
श्रेणी:ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग
श्रेणी:लिस्प (प्रोग्रामिंग भाषा)
 
 
[[Category: Machine Translated Page]]
[[Category:Created On 15/05/2023]]
[[Category:Created On 15/05/2023]]
[[Category:Machine Translated Page]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists]]
[[Category:Pages with script errors]]
[[Category:Sidebars with styles needing conversion]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready]]

Latest revision as of 16:03, 29 May 2023

एएनएसआई कॉमन लिस्प में मानक विधि संयोजन

सामान्य क्रिया बहुविकल्पीय प्रणाली बंद बहुविकल्पी उन्मुख कार्यक्रमों की सुविधा है जो अमेरिकी राष्ट्रीय मानक संस्थान सामान्य एलआइएसपी का हिस्सा है सीएलओएसई एक शक्तिशाली गतिशील कार्यक्रम भाषा वस्तु प्रणाली है जो C++ या जावा कार्यक्रमिक भाषा जैसी अधिक स्थिर भाषाओं में पाई जाने वाली ओओपी सुविधाओं से मौलिक रूप से भिन्न है सीएलओएस पहले के एल आईएसपी बहुविकल्पी प्रणाली जैसे जायके कंप्यूटर विज्ञान और सामान्य एलयूपीएस से प्रेरित था जबकि यह या तो अधिक सामान्य है मूल रूप से ऐडी ऑन के रूप में प्रस्तावित सीएलओएसई को सामान्य एलआईएसपी के लिए एएनएसआई मानक के हिस्से के रूप में अपनाया गया था और इसे अन्य बोलियों जैसे भाषा एलआईएसपी या ईएमएएससी एल आई एस पी में रूपांतरित किया गया है।[1]


सुविधाएँ

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

कक्षाओं में कई अच्छी कक्षायें कंप्यूटर विज्ञान भी हो सकती हैं छिद्र की एक सूची जिसमें C++/ जावा भाषा में सदस्य चर और एक विशेष साहसी कक्षा को कक्षा द्वारा आवंटित किया जा सकता है कक्षा के सभी उदाहरण छिद्र साझा करते हैं प्रत्येक छिद्र का एक नाम होता है और छिद्र के मूल्य को कार्यक्रम का उपयोग करके उस नाम से अनुलेख किया जा सकता है छिद्र कार्य के अतिरिक्त विशेष सामान्य कार्यों को छिद्र के मान लिखने या पढ़ने के लिए परिभाषित किया जा सकता है बंद कक्षा में प्रत्येक छिद्र का एक विशिष्ट नाम होता है।

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

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

बंद प्रेषण भी अधिकांश भाषाओं से अलग है जो इस प्रकार है-

  1. तर्कों की सूची को देखते हुए लागू विधियों की एक सूची निर्धारित की जाती है।
  2. यह सूची उनके पैरामीटर विशेषज्ञों की विशिष्टता के अनुसार क्रमबद्ध है।
  3. इस सूची से चयनित विधियों को तब सामान्य कार्यक्रम द्वारा उपयोग की जाने वाली विधि संयोजन का उपयोग करके एक प्रभावी विधि में जोड़ा जाता है।
  4. प्रभावी विधि को मूल तर्क कहा जाता है।

यह प्रेषण तंत्र समय पर काम करता है इस प्रकार विधियों को जोड़ने या हटाने से समय पर परिवर्तित प्रभावी तरीके हो सकते हैं तब भी जब सामान्य कार्यक्रम को समान तर्कों के साथ जोड़ा जाता है इस विधि संयोजन के प्रभावी तरीके भी हो सकते हैं।

उदाहरण के लिए

सामान्य तर्क संरचना मूलरूपर की सामान्य एफ पूर्णांक लिए एक कार्यान्वयन को परिभाषित करें जहां टी सभी प्रकर से मेल खाता है एफ एक्स तथा एफ एक्स पूर्णांक को परिभाषित करें ।


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

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

मानक विधि-संयोजन ऊपर बताए गए तरीकों के पहले और बाद में प्राथमिकता प्रदान करता है अन्य विधि-संयोजन नये प्रकारों के साथ हैं नई सरल और जटिल दोनों विधि-संयोजन विधि से परिभाषित किए जा सकते हैं।

सीएलओएस एकाधिक वंशानुक्रम की अनुमति देता है जब गलत क्रम जिसमें एकाधिक विरासत में विधियों को निष्पादित किया जाता है तो यह सही नहीं है कार्यक्रम हीरे की समस्या को विधि संयोजनों के क्रम को निर्दिष्ट करके हल कर सकता है।

सीएलओएस गतिशील है जिसका अर्थ है कि केवल सामग्री ही नहीं बल्कि इसकी वस्तुओं की संरचना को भी समय पर संशोधित किया जा सकता है सीएलओएस उड़ने पर यहां तक ​​​​कि जब प्रश्न में वर्ग के उदाहरण पहले से एकत्र हैं जो बदलने के साथ-साथ किसी दिए गए उदाहरण को बदलने का समर्थन करता है कक्षा चालक बंद समय पर तरीकों को जोड़ने या फिर से परिभाषित करने और हटाने की भी अनुमति देता है वृत्त प्रार्थना पत्र समस्या है जो वृत्त प्रार्थना पत्र समस्या सीएलओएस में आसानी से हल हो जाती है और अधिकांश ओओपी बनावट चिन्ह कंप्यूटर विज्ञान या तो गायब हो जाते हैं या गुणात्मक रूप से सरल होते हैं [2]सीएलओएस एक प्रोटोटाइप-आधारित भाषा नहीं है जो वस्तुओं को उस वर्ग के सदस्यों के रूप में त्वरित करने से पहले कक्षाओं को परिभाषित किया जाना चाहिए।

छिद्र बहुविकल्पी प्रोटोकॉल

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

विभिन्न सामान्य एलआईएसपी कार्यान्वयनों में मापन बहुविकल्पी प्रोटोकॉल की कला थोड़ा अलग समर्थन है तथा[3] परियोजना का उद्देश्य गायब सुविधाओं को प्रदान करना है।

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

सामान्य एलयूपीएस का उत्तराधिकारी था सामान्य एलयूपीएस को सामान्य एलआईएसपी के लिए लागू किया गया था सामान्य एलयूपीएस पीसीएल नामक एक कार्यान्वयन सीएलओएस का पहला कार्यान्वयन था पीसीएल व्यापक रूप से बदल दिया गया और अभी भी कई सामान्य एलआईएसपी कार्यान्वयनों के सीएलओएस कार्यान्वयन के लिए आधार प्रदान करता है पीसीएल ज्यादातर उठाने के लिए सामान्य एलआईएसपी में केवल कुछ प्रणाली आश्रित भागों के साथ लागू किया गया है।

अन्य कार्यक्रमिक भाषाओं को बंद करना

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

  • सीओएस सी बहुविकल्पी प्रणालीाली। [4]
  • डायलन कार्यक्रमिक भाषा।
  • डायसन सी में सीएलओएस कार्यान्वयन। [5]
  • ईएमएसीएस एलआईएसपी के लिए।
  • बंद वाली स्कीम।
  • जीएनयू गुइल में।
  • आईएलएस में।
  • योजना में एक वस्तु प्रणाली।
  • बंद वाली एक योजना।
  • योजना के लिए।
  • एमआईटी योजना के लिए।
  • रैकेट में।
  • चिकन योजना में।
  • ताल कौशल के लिए वी सीएलओएस। [6]
  • टिनी सीएलओएस। [7]


अग्रिम पठन

  • Bobrow, Daniel G.; Kahn, Kenneth; Kiczales, Gregor; Masinter, Larry; Stefik, Mark; Zdybel, Frank (June 1986). "CommonLoops: Merging Lisp and Object-Oriented Programming" (PDF). Conference proceedings on Object-oriented Programming Systems Languages and Applications. OOPSLA '86. pp. 17–29. doi:10.1145/28697.28700. ISBN 978-0-89791-204-4. S2CID 62631315. Retrieved 2022-03-17.
  • Veitch, Jim (1998). "A History and Description of CLOS". In Salus, Peter H. (ed.). Handbook of Programming Languages, Volume IV: Functional and Logic Programming Languages (1st ed.). Macmillan Technical Publishing. pp. 107–158. ISBN 1-57870-011-6.


संदर्भ

  1. "CLOS is a standard. Multiple vendors supply CLOS. CLOS (or parts of it) is being used to add object-orientation to other Lisp dialects such as EuLisp or Emacs Lisp." p. 110 of Veitch 1998
  2. In the Design Patterns in Dynamic Languages slides, Peter Norvig presents his findings that 16 out of 23 design patterns taken from various textbooks are either "invisible or simpler" in Dylan or Common Lisp than in C++.
  3. Closer Project: Closer to MOP
  4. Deniau, Laurent (12 March 2010). The C Object System: Using C as a High-Level Object-Oriented Language (PDF). arXiv:1003.2547. CiteSeerX 10.1.1.763.7946. Retrieved 2022-03-17.
  5. Dynace Object Oriented Extension To C
  6. Newton, Jim; Rhodes, Christophe (28 November 2008). "ऑब्जेक्ट-ओरिएंटेड लिस्प में कस्टम विशेषज्ञ". Journal of Universal Computer Science. 14 (20): 3370–3388. CiteSeerX 10.1.1.523.2413. doi:10.3217/jucs-014-20-3370. S2CID 12032836. Retrieved 2022-03-17.
  7. Tiny CLOS, developed by Gregor Kiczales


साहित्य