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

From Vigyanwiki
No edit summary
Tag: Manual revert
 
(5 intermediate revisions by 4 users not shown)
Line 22: Line 22:


उदाहरण के लिए
उदाहरण के लिए
<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 प्रणाली की तरह बंद [[ Encapsulation (कंप्यूटर विज्ञान) | कैप्शूलीकरण कंप्यूटर विज्ञान]] को लागू नहीं करता है इसमें किसी भी छिद्र का उपयोग करके पहुँचा जा सकता है छिद्रित कार्यक्रम या वैकल्पिक रूप से [[एक्सेसर विधि|अनुलेख विधि]]यों के माध्यम से इसे अनुलेख करने के लिए छिद्र आवाज तथा छिद्र का नाम पता होना चाहिए सीएल कार्यक्रम भाषा का [[ नाम स्थान |नाम स्थान]] सुविधा का उपयोग यह घोषित करने के लिए करते हैं कि निर्यात के लिए कौन से कार्य या डेटा संरचनाएँ अभिप्रेरित हैं।


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


साहित्य