स्केलेटन (कंप्यूटर प्रोग्रामिंग): Difference between revisions

From Vigyanwiki
Line 2: Line 2:
{{redirect|डमी कोड" यहां पुनर्निर्देश करता है।  |डमी कोडिंग के लिए|श्रेणीबद्ध चर देखें।}}
{{redirect|डमी कोड" यहां पुनर्निर्देश करता है।  |डमी कोडिंग के लिए|श्रेणीबद्ध चर देखें।}}


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


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


[[ ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग |ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग]] में उपयोग किए जाने वाले [[टेम्पलेट विधि डिजाइन पैटर्न|टेम्पलेट विधि डिज़ाइन पैटर्न]] में स्केलेटन प्रोग्राम का उपयोग किया जाता है। ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में, डमी कोड संक्षेप विधि, विधि स्टब या [[नकली वस्तु|अनुकरण ऑब्जेक्ट]] से मेल खाता है। [[ जावा दूरस्थ विधि मंगलाचरण |जावा रिमोट मेथड इनवोकेशन]] (जावा आरएमआई) नामकरण में, [[ स्टब (कंप्यूटर विज्ञान) |स्टब]] क्लाइंट-साइड पर सर्वर-साइड पर स्केलेटन के साथ संचार करता है।<ref>{{cite book
[[ ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग |ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग]] में उपयोग किए जाने वाले [[टेम्पलेट विधि डिजाइन पैटर्न|टेम्पलेट विधि डिज़ाइन पैटर्न]] में स्केलेटन प्रोग्राम का उपयोग किया जाता है। ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में, डमी कोड संक्षेप विधि, विधि स्टब या [[नकली वस्तु|अनुकरण ऑब्जेक्ट]] से मेल खाता है। [[ जावा दूरस्थ विधि मंगलाचरण |जावा रिमोट मेथड इनवोकेशन]] (जावा आरएमआई) नामकरण में, [[ स्टब (कंप्यूटर विज्ञान) |स्टब]] क्लाइंट-साइड पर सर्वर-साइड पर स्केलेटन के साथ संचार करता है।<ref>{{cite book
Line 30: Line 30:
}}</ref>  
}}</ref>  


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


== पृष्ठभूमि ==
== पृष्ठभूमि ==
आधुनिक [[ सॉफ़्टवेयर |सॉफ्टवेयर]]<ref>{{Cite web|last=Lowery|first=Jeff|date=2019-11-02|title=Why is Software Development Difficult?|url=https://levelup.gitconnected.com/why-is-software-development-difficult-81a2a041d35e|access-date=2020-11-15|website=Medium|language=en}}</ref> प्रायः कई कारणों से जटिल होता है। इसका अर्थ यह हो सकता है कि केवल एक ही [[प्रोग्रामर]] इसे विकसित नहीं कर सकता है, या यह कि अन्य मॉड्यूल या भागों को अलग से आयात करना होगा। प्रोग्राम भी अपने आप में बहुत जटिल हो सकते हैं, कुछ एक ही समय में एक ही [[चर (कंप्यूटर विज्ञान)|चर]] तक पहुँचने या यहां तक कि डिस्प्ले के लिए [[पिक्सेल|पिक्सल]] उत्पन्न करने के लिए कई विधियों के साथ। [[संकलन (कंप्यूटिंग)|संकलन]] के समय कम से कम त्रुटियों के साथ अपने कोड को विकसित करने के लिए प्रोग्रामर्स की सहायता के लिए स्केलेटन कोड का उपयोग किया जाता है।  
आधुनिक [[ सॉफ़्टवेयर |सॉफ्टवेयर]]<ref>{{Cite web|last=Lowery|first=Jeff|date=2019-11-02|title=Why is Software Development Difficult?|url=https://levelup.gitconnected.com/why-is-software-development-difficult-81a2a041d35e|access-date=2020-11-15|website=Medium|language=en}}</ref> प्रायः कई कारणों से जटिल होता है। इसका अर्थ यह हो सकता है कि केवल एक ही [[प्रोग्रामर]] इसे विकसित नहीं कर सकता है, या यह कि अन्य मॉड्यूल या भागों को अलग से आयात करना होगा। प्रोग्राम भी अपने आप में बहुत जटिल हो सकते हैं, कुछ एक ही समय में एक ही [[चर (कंप्यूटर विज्ञान)|चर]] तक पहुँचने या यहां तक कि डिस्प्ले के लिए [[पिक्सेल|पिक्सल]] उत्पन्न करने के लिए कई विधियों के साथ। [[संकलन (कंप्यूटिंग)|संकलन]] के समय कम से कम त्रुटियों के साथ अपने कोड को विकसित करने के लिए प्रोग्रामर्स की सहायता के लिए स्केलेटन कोड का उपयोग किया जाता है।  


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


== स्यूडोकोड से संबंध ==
== स्यूडोकोड से संबंध ==
[[File:PXL 20201120 092248538.jpg|thumb|स्यूडोकोड का एक सामान्य उदाहरण]]सॉफ्टवेयर के एक नए टुकड़े की संरचना को विकसित करते समय स्यूडोकोड सबसे अधिक पाया जाता है। यह एक बड़े सिस्टम के भीतर किसी विशेष कार्य का सादा अंग्रेजी चित्रण है, या यहां तक कि पूरे प्रोग्राम का प्रतिनिधित्व भी हो सकता है। स्यूडोकोड स्केलेटन प्रोग्रामिंग के समान है, हालांकि इस तथ्य से विचलित होता है कि स्यूडोकोड मुख्य रूप से प्रोग्रामिंग का एक अनौपचारिक तरीका है।<ref name=":0">{{Cite journal|last=Bellamy|first=Rachel K. E.|date=1994-06-01|title=What Does Pseudo-Code Do? A Psychological Analysis of the use of Pseudo-Code by Experienced Programmers|url=https://www.tandfonline.com/doi/abs/10.1207/s15327051hci0902_3|journal=Human–Computer Interaction|volume=9|issue=2|pages=225–246|doi=10.1207/s15327051hci0902_3|issn=0737-0024}}</ref> डमी कोड भी इससे काफी मिलता-जुलता है, जहाँ कोड का उपयोग केवल स्थानधारक के रूप में किया जाता है, या किसी वर्ग या इंटरफ़ेस में किसी विधि के इच्छित अस्तित्व को इंगित करने के लिए किया जाता है।  
[[File:PXL 20201120 092248538.jpg|thumb|स्यूडोकोड का एक सामान्य उदाहरण]]सॉफ्टवेयर के भाग की संरचना को विकसित करते समय स्यूडोकोड सबसे अधिक पाया जाता है। यह बड़े सिस्टम के भीतर किसी विशेष कार्य का सादा अंग्रेजी चित्रण है, या यहां तक कि पूरे प्रोग्राम का प्रतिनिधित्व भी हो सकता है। स्यूडोकोड स्केलेटन प्रोग्रामिंग के समान है, हालांकि इस तथ्य से विचलित होता है कि स्यूडोकोड मुख्य रूप से प्रोग्रामिंग का अनौपचारिक तरीका है।<ref name=":0">{{Cite journal|last=Bellamy|first=Rachel K. E.|date=1994-06-01|title=What Does Pseudo-Code Do? A Psychological Analysis of the use of Pseudo-Code by Experienced Programmers|url=https://www.tandfonline.com/doi/abs/10.1207/s15327051hci0902_3|journal=Human–Computer Interaction|volume=9|issue=2|pages=225–246|doi=10.1207/s15327051hci0902_3|issn=0737-0024}}</ref> डमी कोड भी इससे काफी मिलता-जुलता है, जहाँ कोड का उपयोग केवल स्थानधारक के रूप में किया जाता है, या किसी वर्ग या इंटरफ़ेस में किसी विधि के इच्छित अस्तित्व को इंगित करने के लिए किया जाता है।  


कंप्यूटर प्रोग्रामर स्यूडोकोड पर अत्यधिक निर्भर होते हैं, इतना अधिक कि उनकी [[मानस (मनोविज्ञान)|मानसिकता]] पर इसका एक मापन योग्य प्रभाव पड़ता है। विशिष्ट प्रोग्रामर को किसी तरह से सरलीकृत कोड लिखने के विचार से इतना वातानुकूलित किया जाता है, चाहे वह स्यूडोकोड या स्केलेटन कोड लिखकर हो, या यहां तक ​​कि सिर्फ एक आरेख बनाकर, कि इसका एक औसत दर्जे का प्रभाव होता है<ref name=":0" /> कि वे अपने अंतिम कार्यान्वयन को कितनी अच्छी तरह लिख सकते हैं। यह कई अनुप्रयोगों में पाया गया है, जिसमें विभिन्न प्रोग्रामर विभिन्न भाषाओं और विभिन्न [[प्रोग्रामिंग प्रतिमान|प्रोग्रामिंग प्रतिमानों]] में काम कर रहे हैं।  
कंप्यूटर प्रोग्रामर स्यूडोकोड पर अत्यधिक निर्भर होते हैं, इतना अधिक कि उनकी [[मानस (मनोविज्ञान)|मानसिकता]] पर इसका मापन योग्य प्रभाव पड़ता है। विशिष्ट प्रोग्रामर को किसी तरह से सरलीकृत कोड लिखने के विचार से इतना वातानुकूलित किया जाता है, चाहे वह स्यूडोकोड या स्केलेटन कोड लिखकर हो, या यहां तक ​​कि सिर्फ आरेख बनाकर, कि इसका औसत दर्जे का प्रभाव होता है<ref name=":0" /> कि वे अपने अंतिम कार्यान्वयन को कितनी अच्छी तरह लिख सकते हैं। यह कई अनुप्रयोगों में पाया गया है, जिसमें विभिन्न प्रोग्रामर विभिन्न भाषाओं और विभिन्न [[प्रोग्रामिंग प्रतिमान|प्रोग्रामिंग प्रतिमानों]] में काम कर रहे हैं।  


प्रोग्राम [[ डिज़ाइन |डिजाइन]] का यह तरीका भी प्रायः कलम और कागज पर किया जाता है, टेक्सट को वास्तव में लागू किए जाने वाले टेक्सट से आगे बढ़ाया जाता है। स्केलेटन प्रोग्रामिंग इसका अनुकरण करती है, लेकिन इस तरह से भिन्न होती है कि यह प्रायः एकीकृत विकास परिवेश या [[पाठ संपादक|टेक्सट संपादकों]] में लिखी जाती है। यह प्रारंभिक डिजाइन चरण के बाद प्रोग्राम के आगे के विकास में सहायता करता है। स्केलेटन प्रोग्राम चलाए जाने पर सरलीकृत कार्यों को संचालित करने की अनुमति भी देता है।  
प्रोग्राम [[ डिज़ाइन |डिजाइन]] का यह तरीका भी प्रायः कलम और कागज पर किया जाता है, टेक्सट को वास्तव में लागू किए जाने वाले टेक्सट से आगे बढ़ाया जाता है। स्केलेटन प्रोग्रामिंग इसका अनुकरण करती है, लेकिन इस तरह से भिन्न होती है कि यह प्रायः एकीकृत विकास परिवेश या [[पाठ संपादक|टेक्सट संपादकों]] में लिखी जाती है। यह प्रारंभिक डिजाइन चरण के बाद प्रोग्राम के आगे के विकास में सहायता करता है। स्केलेटन प्रोग्राम चलाए जाने पर सरलीकृत कार्यों को संचालित करने की अनुमति भी देता है।  
Line 48: Line 48:


=== प्रोग्रामिंग भाषा प्रलेखन ===
=== प्रोग्रामिंग भाषा प्रलेखन ===
अधिकांश, यदि सभी प्रोग्रामिंग भाषाओं में स्केलेटन कोड नहीं है, तो इसका उपयोग सभी अंतर्निहित कार्यों और [[विधि (सॉफ्टवेयर इंजीनियरिंग)|विधियों]] की परिभाषा में सहायता के लिए किया जाता है। यह नए प्रोग्रामरों को सिंटेक्स और लिखित विधियों के इच्छित कार्यान्वयन को समझने के लिए एक सरल साधन प्रदान करता है।  
अधिकांश, यदि सभी प्रोग्रामिंग भाषाओं में स्केलेटन कोड नहीं है, तो इसका उपयोग सभी अंतर्निहित कार्यों और [[विधि (सॉफ्टवेयर इंजीनियरिंग)|विधियों]] की परिभाषा में सहायता के लिए किया जाता है। यह नए प्रोग्रामरों को सिंटेक्स और लिखित विधियों के इच्छित कार्यान्वयन को समझने के लिए सरल साधन प्रदान करता है।  


[[ जावा (प्रोग्रामिंग भाषा) |जावा]], एक ऑब्जेक्ट ओरिएंटेड भाषा, जावा पैकेज के प्रत्येक ऑब्जेक्ट भाग के लिए पूरी तरह से अलग विधियों के साथ संरचित प्रलेखन पृष्ठ पर बहुत अधिक ध्यान केंद्रित करती है।<ref>{{Cite web|title=Object (Java Platform SE 8 )|url=https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html|access-date=2020-10-02|website=docs.oracle.com}}</ref> ऑब्जेक्ट ओरिएंटेड भाषाएँ अन्य भाषाओं में पाए जाने वाले सरल टॉप-डाउन दृष्टिकोण के स्थान पर उनके कार्यान्वयन के लिए पदानुक्रम आधारित संरचना पर ध्यान केंद्रित करती हैं। 'ऑब्जेक्ट्स' डेटा और चरों को संग्रहित करते हैं, जिससे प्रायः अधिक कुशल प्रोग्राम लिखे जाने की अनुमति मिलती है। इन वस्तुओं में अलग-अलग कार्य होते हैं जो आंतरिक चरों तक पहुंच सकते हैं, जिन्हें विधियों के रूप में जाना जाता है।  
[[ जावा (प्रोग्रामिंग भाषा) |जावा]], एक ऑब्जेक्ट ओरिएंटेड भाषा, जावा पैकेज के प्रत्येक ऑब्जेक्ट भाग के लिए पूरी तरह से अलग विधियों के साथ संरचित प्रलेखन पृष्ठ पर बहुत अधिक ध्यान केंद्रित करती है।<ref>{{Cite web|title=Object (Java Platform SE 8 )|url=https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html|access-date=2020-10-02|website=docs.oracle.com}}</ref> ऑब्जेक्ट ओरिएंटेड भाषाएँ अन्य भाषाओं में पाए जाने वाले सरल टॉप-डाउन दृष्टिकोण के स्थान पर उनके कार्यान्वयन के लिए पदानुक्रम आधारित संरचना पर ध्यान केंद्रित करती हैं। 'ऑब्जेक्ट्स' डेटा और चरों को संग्रहित करते हैं, जिससे प्रायः अधिक कुशल प्रोग्राम लिखे जाने की अनुमति मिलती है। इन वस्तुओं में अलग-अलग कार्य होते हैं जो आंतरिक चरों तक पहुंच सकते हैं, जिन्हें विधियों के रूप में जाना जाता है।  


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


पायथन के पास अपने अंतर्निर्मित तरीकों को दस्तावेज करने के लिए एक समान दृष्टिकोण है, हालांकि दायरे और [[डेटा प्रकार|डेटा]] प्रकारों पर निर्धारण की कमी का अनुकरण करता है।<ref>{{Cite web|date=2009-02-14|title=Built-in Functions — Python v3.0.1 documentation|url=https://docs.python.org/3.0/library/functions.html|access-date=2020-10-03|website=docs.python.org}}</ref> इस दस्तावेज़ीकरण में संक्षिप्त विवरण और विधि या फ़ंक्शन के विशिष्ट उपयोग के उदाहरण के साथ-साथ प्रत्येक विधि का सिंटेक्स है। उदाहरण में प्रदान किया गया स्केलेटन कोड प्रोग्रामर को त्वरित नज़र में फ़ंक्शन की अच्छी समझ देता है।
पायथन के पास अपने अंतर्निर्मित तरीकों को दस्तावेज करने के लिए एक समान दृष्टिकोण है, हालांकि दायरे और [[डेटा प्रकार|डेटा]] प्रकारों पर निर्धारण की कमी का अनुकरण करता है।<ref>{{Cite web|date=2009-02-14|title=Built-in Functions — Python v3.0.1 documentation|url=https://docs.python.org/3.0/library/functions.html|access-date=2020-10-03|website=docs.python.org}}</ref> इस दस्तावेज़ीकरण में संक्षिप्त विवरण और विधि या फ़ंक्शन के विशिष्ट उपयोग के उदाहरण के साथ-साथ प्रत्येक विधि का सिंटेक्स है। उदाहरण में प्रदान किया गया स्केलेटन कोड प्रोग्रामर को त्वरित नज़र में फ़ंक्शन की अच्छी समझ देता है।


=== वर्ग परिभाषा ===
=== वर्ग परिभाषा ===
तीसरे पक्ष के डेवलपर्स द्वारा लिखी गए [[ वर्ग (कंप्यूटर प्रोग्रामिंग) |वर्गों]], मुख्य रूप से लाइब्रेरीज के एक भाग के रूप में, उनकी प्रोग्रामिंग को स्केलेटन कोड के रूप में भी प्रदर्शित करती हैं। यह लाइब्रेरी के लिए किसी भी नए को सूचित करने में सहायता करता है कि कैसे कार्य और विधियां संचालित होती हैं। P5.Js कुछ सम्मिलित कार्यों के इच्छित उपयोग की व्याख्या करने के लिए अपने प्रलेखन पृष्ठ पर इस प्रारूप का उपयोग करता है।<ref>{{Cite web|title=reference {{!}} p5.js|url=https://p5js.org/reference/#/p5/alpha|access-date=2020-11-15|website=p5js.org}}</ref> यह प्रोग्रामिंग लैंग्वेज प्रलेखन से अलग है, हालांकि, विधि के सभी संभावित उपयोगों के स्थान पर [[पैरामीटर (कंप्यूटर प्रोग्रामिंग)|पैरामीटर]] प्रदर्शित करने के लिए स्केलेटन कोड का उपयोग करना।  
तीसरे पक्ष के डेवलपर्स द्वारा लिखे गए [[ वर्ग (कंप्यूटर प्रोग्रामिंग) |वर्गों]], मुख्य रूप से लाइब्रेरीज के भाग के रूप में, उनकी प्रोग्रामिंग को स्केलेटन कोड के रूप में भी प्रदर्शित करती हैं। यह लाइब्रेरी के लिए किसी भी नए को सूचित करने में सहायता करता है कि कैसे कार्य और विधियां संचालित होती हैं। P5.Js कुछ सम्मिलित कार्यों के इच्छित उपयोग की व्याख्या करने के लिए अपने प्रलेखन पृष्ठ पर इस प्रारूप का उपयोग करता है।<ref>{{Cite web|title=reference {{!}} p5.js|url=https://p5js.org/reference/#/p5/alpha|access-date=2020-11-15|website=p5js.org}}</ref> यह प्रोग्रामिंग लैंग्वेज प्रलेखन से अलग है, हालांकि, विधि के सभी संभावित उपयोगों के स्थान पर [[पैरामीटर (कंप्यूटर प्रोग्रामिंग)|पैरामीटर]] प्रदर्शित करने के लिए स्केलेटन कोड का उपयोग करना।  


प्राकृतिक भाषा इंटरफेस (एनएलआई) प्रायः उन स्थितियों में पाए जाते हैं जहां प्रोग्रामर एक इनपुट लेने का प्रयास करते हैं, प्रायः बोलचाल की भाषा में (प्रोग्रामिंग भाषा विशिष्ट [[शब्दजाल|शब्दावली]] के उपयोग के बिना) और प्रोग्राम या विधि बनाने के लिए इसका उपयोग करते हैं। इसका कार्यान्वयन पृष्ठभूमि में चल रहे फ़ंक्शन को इंगित करने के लिए स्केलेटन कोड के एक छोटे सेट का उपयोग करता है।<ref>{{Cite web|last=Granger|first=Chris|date=2020-11-18|title=हम जिस नई चीज़ पर काम कर रहे हैं उसकी पहली झलक।|url=https://twitter.com/ibdknox/status/1328797793138266113|access-date=2020-11-19|website=Twitter|language=en}}</ref>
प्राकृतिक भाषा इंटरफेस (एनएलआई) प्रायः उन स्थितियों में पाए जाते हैं जहां प्रोग्रामर इनपुट लेने का प्रयास करते हैं, प्रायः बोलचाल की भाषा में (प्रोग्रामिंग भाषा विशिष्ट [[शब्दजाल|शब्दावली]] के उपयोग के बिना) और प्रोग्राम या विधि बनाने के लिए इसका उपयोग करते हैं। इसका कार्यान्वयन पृष्ठभूमि में चल रहे फ़ंक्शन को इंगित करने के लिए स्केलेटन कोड के छोटे सेट का उपयोग करता है।<ref>{{Cite web|last=Granger|first=Chris|date=2020-11-18|title=हम जिस नई चीज़ पर काम कर रहे हैं उसकी पहली झलक।|url=https://twitter.com/ibdknox/status/1328797793138266113|access-date=2020-11-19|website=Twitter|language=en}}</ref>


एनएलआई (NLIs) के अन्य रूप इनपुट के विभिन्न रूपों का उपयोग करते हैं, जिसमें अन्य उपयोगकर्ता अलग-अलग भाषाएं बोलते हैं, इशारों पर आधारित इनपुट के लिए एक बहुत ही समान परिणाम उत्पन्न करने के लिए। प्रोग्रामिंग भाषाओं के विकसित होने और मुख्य रूप से अंग्रेजी में लिखे जाने के कारण, अन्य भाषा बोलने वाले लोगों को नए सॉफ्टवेयर विकसित करने में कठिनाई होती है। इन स्थितियों में लोगों की सहायता के लिए कुछ अध्ययनों में एनएलआई का उपयोग किया गया है।<ref>{{Cite journal|last=Özcan|first=E.|title=एक प्राकृतिक भाषा इंटरफ़ेस का उपयोग करके जावा क्लास कंकाल उत्पन्न करना|date=2004|url=http://dx.doi.org/10.5220/0002683301260134|journal=Proceedings of the 1st International Workshop on Natural Language Understanding and Cognitive Science|publisher=SciTePress - Science and Technology Publications|volume=1|pages=126–134|doi=10.5220/0002683301260134|isbn=972-8865-05-8}}</ref> अध्ययन ने एनएलआई के उपयोग के माध्यम से जावा में लिखी गए वर्गों को दिखाया। इसने वाक्य-विन्यास के नियमों को सीखने की आवश्यकता को हटा दिया, हालांकि इसका अर्थ यह था कि स्केलेटन कोड के मूल सेट का उपयोग करके वर्ग लिखी गए थे।
एनएलआई (NLIs) के अन्य रूप इनपुट के विभिन्न रूपों का उपयोग करते हैं, जिसमें अन्य उपयोगकर्ता अलग-अलग भाषाएं बोलते हैं, संकेतों पर आधारित इनपुट के लिए बहुत ही समान परिणाम उत्पन्न करने के लिए। प्रोग्रामिंग भाषाओं के विकसित होने और मुख्य रूप से अंग्रेजी में लिखे जाने के कारण, अन्य भाषा बोलने वाले लोगों को नए सॉफ्टवेयर विकसित करने में कठिनाई होती है। इन स्थितियों में लोगों की सहायता के लिए कुछ अध्ययनों में एनएलआई का उपयोग किया गया है।<ref>{{Cite journal|last=Özcan|first=E.|title=एक प्राकृतिक भाषा इंटरफ़ेस का उपयोग करके जावा क्लास कंकाल उत्पन्न करना|date=2004|url=http://dx.doi.org/10.5220/0002683301260134|journal=Proceedings of the 1st International Workshop on Natural Language Understanding and Cognitive Science|publisher=SciTePress - Science and Technology Publications|volume=1|pages=126–134|doi=10.5220/0002683301260134|isbn=972-8865-05-8}}</ref> अध्ययन ने एनएलआई के उपयोग के माध्यम से जावा में लिखी गए वर्गों को दिखाया। इसने वाक्य-विन्यास के नियमों को सीखने की आवश्यकता को हटा दिया, हालांकि इसका अर्थ यह था कि स्केलेटन कोड के मूल सेट का उपयोग करके वर्ग लिखी गए थे।


=== बहुरूपता आधारित परिभाषाएँ ===
=== बहुरूपता आधारित परिभाषाएँ ===
Line 73: Line 73:


== समानांतर प्रोग्रामिंग ==
== समानांतर प्रोग्रामिंग ==
समानांतर कंप्यूटिंग एक साथ कई कार्यों का संचालन है जो आमतौर पर दक्षता बढ़ाने के लिए उपयोग किया जाता है। ये आम तौर पर विकसित करने के लिए सबसे कठिन प्रकार के प्रोग्राम हैं, उनकी जटिलता और [[कंप्यूटर हार्डवेयर]] के साथ-साथ परस्पर संबंध के कारण भी। कई डेवलपर्स ने इस मुख्य कार्यक्षमता के साथ प्रोग्राम लिखने का प्रयास किया है,<ref name=":1">{{Cite journal|last1=González-Vélez|first1=Horacio|last2=Leyton|first2=Mario|date=2010-11-01|title=A survey of algorithmic skeleton frameworks: high-level structured parallel programming enablers|url=http://dx.doi.org/10.1002/spe.1026|journal=Software: Practice and Experience|volume=40|issue=12|pages=1135–1160|doi=10.1002/spe.1026|s2cid=16211075 |issn=0038-0644}}</ref> हालाँकि यह विभिन्न परिणामों से मिला है।
समानांतर प्रोग्रामिंग एक साथ कई कार्यों का संचालन है जो प्रायः दक्षता बढ़ाने के लिए उपयोग किया जाता है। ये प्रायः विकसित करने के लिए सबसे कठिन प्रकार के प्रोग्राम हैं, उनकी जटिलता और [[कंप्यूटर हार्डवेयर|हार्डवेयर]] के साथ परस्पर संबंध के कारण भी। कई डेवलपर्स ने इस मुख्य कार्यप्रणाली के साथ प्रोग्राम लिखने का प्रयास किया है,<ref name=":1">{{Cite journal|last1=González-Vélez|first1=Horacio|last2=Leyton|first2=Mario|date=2010-11-01|title=A survey of algorithmic skeleton frameworks: high-level structured parallel programming enablers|url=http://dx.doi.org/10.1002/spe.1026|journal=Software: Practice and Experience|volume=40|issue=12|pages=1135–1160|doi=10.1002/spe.1026|s2cid=16211075 |issn=0038-0644}}</ref> हालांकि यह विभिन्न परिणामों से पूरा किया गया है।  


बाद के विकास के लिए विचाराधीन विधियों का संक्षेप में वर्णन करने के लिए [[एल्गोरिथम कंकाल]] ढांचे का उपयोग समानांतर प्रोग्रामिंग में किया जाता है। चौखटे एक ही प्रकार तक सीमित नहीं हैं, और इनमें से प्रत्येक प्रकार के डेवलपर के कार्यक्रम की दक्षता बढ़ाने के लिए अलग-अलग उद्देश्य हैं। इन्हें तीन मुख्य प्रकारों में वर्गीकृत किया जा सकता है: डेटा समानांतरवाद|डेटा-समानांतर, कार्य समानांतरवाद|कार्य-समानांतर और संकल्प।<ref name=":1" />
बाद के विकास के लिए विचाराधीन विधियों का संक्षेप में वर्णन करने के लिए [[एल्गोरिथम कंकाल|एल्गोरिथम स्केलेटन]] रूपरेखा का उपयोग समानांतर प्रोग्रामिंग में किया जाता है। रूपरेखा एक ही प्रकार तक सीमित नहीं हैं, और इनमें से प्रत्येक प्रकार के डेवलपर के प्रोग्राम की दक्षता बढ़ाने के लिए अलग-अलग उद्देश्य हैं। इन्हें तीन मुख्य प्रकारों में वर्गीकृत किया जा सकता है: डेटा-समांतर, कार्य-समानांतर और रिज़ॉल्यूशन।<ref name=":1" />
=== डेटा-समानांतर ===
=== डेटा-समानांतर ===
इन कंकाल एल्गोरिदम का उपयोग उन कार्यक्रमों को विकसित करने के लिए किया जाता है जो बड़े डेटा आधारित सॉफ़्टवेयर पर काम करते हैं, आमतौर पर बाद में उपयोग के लिए डेटा के बीच कनेक्शन की पहचान करते हैं। डेटा समानांतर एल्गोरिदम में 'मैप्स', 'फोर्क्स' और 'रिड्यूस' या 'स्कैन' शामिल हैं।
इन स्केलेटन एल्गोरिदम का उपयोग उन प्रोग्रामों को विकसित करने के लिए किया जाता है जो बड़े डेटा आधारित सॉफ़्टवेयर पर काम करते हैं, प्रायः बाद में उपयोग के लिए डेटा के बीच संबंंध की पहचान करते हैं। डेटा समानांतर एल्गोरिदम में 'मैप्स', 'फोर्क्स' और 'रिड्यूसेस' या 'स्कैन' सम्मिलित हैं।


* 'मैप्स' सबसे अधिक उपयोग किए जाने वाले डेटा समानांतर एल्गोरिदम हैं, और आमतौर पर डेटा के एक बड़े सेट पर पूरा होने वाला एकल ऑपरेशन शामिल होता है। दक्षता बढ़ाने के लिए, अंत में डेटा को फिर से एक साथ संरचित करने से पहले, कई डेटा सेटों में यह ऑपरेशन एक साथ लागू होता है।
* 'मैप्स' सबसे अधिक उपयोग किए जाने वाले डेटा समानांतर एल्गोरिदम हैं, और प्रायः डेटा के बड़े सेट पर पूरा होने वाला एकल संचालन सम्मिलित होता है। दक्षता बढ़ाने के लिए, अंत में डेटा को फिर से एक साथ संरचित करने से पहले, कई डेटा सेटों में यह संचालन एक साथ लागू होता है।  
* 'फोर्क' 'नक्शे' के समान हैं लेकिन वे कुछ डेटा प्रकारों के लिए एक अलग ऑपरेशन का उपयोग करते हैं। इसे डेटा समानता के रूप में जाना जाता है।<ref name=":1" />* 'Reduces' या 'scans' का उपयोग डेटा के एक सेट पर उपसर्ग लागू करने के लिए किया जाता है, इससे पहले डेटा पर एक ऑपरेशन लागू किया जाता है। ये 'नक्शे' से भिन्न हैं क्योंकि उनके पास विधि के रनटाइम के दौरान आंशिक परिणामों का एक सेट होता है।
* 'फोर्क्स' 'मैप्स' के समान हैं लेकिन वे कुछ डेटा प्रकारों के लिए अलग संचालन का उपयोग करते हैं। इसे एकाधिक डेटा समानता के रूप में जाना जाता है।<ref name=":1" />
*डेटा पर संचालन लागू करने से पहले, डेटा के सेट पर उपसर्ग लागू करने के लिए 'रिड्यूसेस' या 'स्कैन' का उपयोग किया जाता है। ये 'मैप्स' से भिन्न हैं क्योंकि उनके पास विधि के रनटाइम के दौरान आंशिक परिणामों का एक सेट होता है।


=== कार्य-समानांतर ===
=== कार्य-समानांतर ===
ये ऑपरेशन, जैसा कि इनके नाम से पता चलता है, टास्क पर काम करते हैं। इसके अंतर्गत प्रत्येक प्रकार का एल्गोरिदम कार्यों के बीच व्यवहार में बदलाव के कारण भिन्न होता है। कार्य समानांतर एल्गोरिदम में 'अनुक्रमिक', 'खेत', 'पाइप', 'अगर', 'के लिए' और 'जबकि' शामिल हैं।
ये संचालन, जैसा कि इनके नाम से पता चलता है, कार्य पर काम करते हैं। इसके अंतर्गत प्रत्येक प्रकार का एल्गोरिदम कार्यों के बीच व्यवहार में बदलाव के कारण भिन्न होता है। कार्य समानांतर एल्गोरिदम में 'अनुक्रमिक', 'फार्म', 'पाइप्स', 'यदि', 'के लिए' और 'जबकि' सम्मिलित हैं।


* 'अनुक्रमिक' कंकाल एल्गोरिदम के नेस्टेड सेट को बंद और समाप्त करता है। तरीके और कार्यक्रम जो कंकाल का हिस्सा हैं, समापन से पहले कार्यक्रम के समापन पहलुओं के रूप में शामिल किए गए हैं।
* 'अनुक्रमिक' स्केलेटन एल्गोरिदम के नेस्टेड सेट को बंद और समाप्त करता है। विधियों और प्रोग्राम जो स्केलेटन का भाग हैं, समापन से पहले प्रोग्राम के समापन पहलुओं के रूप में सम्मिलित किए गए हैं।
* 'खेतों' को कार्यों के एक समूह, एक कार्यकर्ता या किसी अन्य कार्य के स्वामी या दास के रूप में जाना जाता है। यह दिए गए कार्यों को कई थ्रेड्स पर कार्यों की प्रतिकृति बनाकर और इन्हें समवर्ती रूप से चलाकर पूरा करता है। यह एक विशिष्ट थ्रेड के लिए लोड को विभाजित करता है, प्रभावी रूप से थ्रेड्स के बीच एक मास्टर / गुलाम संबंध बनाता है।
* 'फार्म्स' को कार्यों के समूह, कार्यकर्ता या किसी अन्य कार्य के मुख्य या अधीन के रूप में जाना जाता है। यह दिए गए कार्यों को कई थ्रेड्स पर कार्यों की प्रतिकृति बनाकर और इन्हें समवर्ती रूप से चलाकर पूरा करता है। यह एक विशिष्ट थ्रेड के लिए लोड को विभाजित करता है, प्रभावी रूप से थ्रेड्स के बीच मुख्य / अधीन संबंध बनाता है।
* 'पाइप्स' एल्गोरिथम के अधिक पारंपरिक रूप हैं, जहां प्रत्येक विधि या कार्य क्रम में चलाया जाता है। यह उस क्रम का अनुसरण करता है जिसमें प्रोग्रामर ने अपना कोड लिखा है। प्रदर्शन और गति में सुधार के लिए एक साथ डेटा के एक सेट पर विभिन्न कार्यों की गणना करके इसे समानांतर बनाया जाता है। प्रत्येक समकालिक संगणना को एक चरण के रूप में जाना जाता है। पाइप एल्गोरिथ्म को नेस्टेड किया जा सकता है, जहां एक दूसरे के भीतर होता है, प्रत्येक गति बढ़ाने के लिए जिम्मेदारियों को विभाजित करता है और चरणों की संख्या भी।
* 'पाइप्स' एल्गोरिदम के अधिक पारंपरिक रूप हैं, जहां प्रत्येक विधि या कार्य क्रम में चलाया जाता है। यह उस क्रम का अनुसरण करता है जिसमें प्रोग्रामर ने अपना कोड लिखा है। प्रदर्शन और गति में सुधार के लिए एक साथ डेटा के सेट पर विभिन्न कार्यों की गणना करके इसे समानांतर बनाया जाता है, प्रायः इनपुट। प्रत्येक समकालिक गणना को चरण के रूप में जाना जाता है। पाइप एल्गोरिथ्म को नेस्टेड किया जा सकता है, जहां एक दूसरे के भीतर है, गति बढ़ाने के लिए प्रत्येक जिम्मेदारियों को विभाजित करता है और चरणों की संख्या भी।
* 'अगर' कार्यक्रम को कार्यों का एक सशर्त विभाजन देता है, जहां कंकाल कोड का एक सेट दो मुख्य वर्गों में विभाजित होता है। कार्यक्रम को एक सशर्त बयान दिया जाता है, इसलिए इसे पालन करने के लिए एक निर्दिष्ट एल्गोरिथम दिया जाता है।
* 'यदि' प्रोग्राम को कार्यों का सशर्त विभाजन देता है, जहां स्केलेटन कोड का सेट दो मुख्य वर्गों में विभाजित होता है। प्रोग्राम को सशर्त विवरण दिया जाता है, इसलिए इसे अनुसरण करने के लिए निर्दिष्ट एल्गोरिथम दिया जाता है।  
* 'के लिए' एक कार्य को कई बार संचालित करता है, दोनों प्रोग्रामर द्वारा निर्दिष्ट, कोड के अधिक कुशल सेट की अनुमति देता है। कोड चलने की संख्या एक प्रीसेट मान है, यह दर्शाता है कि [[रन-टाइम प्रकार की जानकारी]] में, इसे बदला नहीं जा सकता है। इसे दिए गए समय की संख्या में कार्य पूरा करना होगा।
* 'के लिए' एक कार्य को कई बार संचालित करता है, दोनों प्रोग्रामर द्वारा निर्दिष्ट, कोड के अधिक कुशल सेट की अनुमति देता है। कोड चलने की संख्या पूर्व निर्धारित मान है, जो दर्शाता है कि [[रन-टाइम प्रकार की जानकारी|रनटाइम]] पर, इसे बदला नहीं जा सकता है। इसे कई बार दिए गए कार्य को पूरा करना होगा।  
* 'जबकि' एक 'फॉर' एल्गोरिथम के संचालन के समान एक एल्गोरिथ्म है, जहां एक कार्य कई बार पूरा होता है। हालाँकि, 'जबकि' एल्गोरिदम में, सशर्त बयान पूरा होने से पहले कार्यक्रम कई बार कार्य की गणना करता है। इसका मतलब यह है कि 'जबकि' एल्गोरिथम अपने कार्य को हर बार चलाने के लिए अलग-अलग बार कर सकता है।
* 'जबकि' एल्गोरिथम है जो 'फॉर' एल्गोरिथम के संचालन के समान है, जहां एक कार्य कई बार पूरा किया जाता है। हालांकि, 'जबकि' एल्गोरिदम में, सशर्त बयान पूरा होने से पहले प्रोग्राम कार्य की कई बार गणना करता है। इसका अर्थ यह है कि 'जबकि' एल्गोरिथम अपने कार्य को प्रत्येक बार चलाने के लिए अलग-अलग बार कर सकता है।  


=== संकल्प कंकाल ===
=== रिज़ॉल्यूशन स्केलेटन ===
ये कंकाल ऊपर पाए गए सामान्य कंकालों से बहुत अलग हैं। 'रिज़ॉल्यूशन' एल्गोरिथम एक निर्दिष्ट समस्या को हल करने के लिए विधियों के संयोजन का उपयोग करता है। एल्गोरिथ्म की दी गई समस्या "समस्याओं का परिवार" हो सकती है।<ref name=":1" />इन कंकालों के दो मुख्य प्रकार हैं, 'फूट डालो और जीतो' या 'ब्रांड और बाध्य'।
ये स्केलेटन ऊपर पाए गए विशिष्ट स्केलेटन्स से बहुत भिन्न हैं। 'रिज़ॉल्यूशन' एल्गोरिथम निर्दिष्ट समस्या को हल करने के लिए विधियों के संयोजन का उपयोग करता है। एल्गोरिथ्म की दी गई समस्या "समस्याओं का समूह" हो सकती है।<ref name=":1" /> इन स्केलेटन्स के दो मुख्य प्रकार हैं, 'विभाजन और अधिकार' या 'ब्रांड और सीमा'।


* 'फूट डालो और राज करो' एक मानचित्र कंकाल को अपने आधार के रूप में उपयोग करता है, समस्या को हल करने के लिए इसे थोड़ी देर के कंकाल के साथ जोड़कर। मैप एल्गोरिदम में, डेटा पर फ़ंक्शंस एक साथ लागू होते हैं। 'फूट डालो और जीतो' में प्रदान किए गए डेटा के सेट में मानचित्र कंकाल का उपयोग करके उस पर एक फ़ंक्शन लागू होता है, हालांकि इसे 'जबकि' एल्गोरिथम का उपयोग करके पुनरावर्ती रूप से लागू किया जा सकता है। जब पूरी समस्या हल हो जाती है तभी 'जबकि' टूट जाता है।
* 'विभाजन और अधिकार' मैप स्केलेटन को अपने आधार के रूप में उपयोग करता है, समस्या को हल करने के लिए इसे थोड़ी देर के स्केलेटन के साथ संयोजित करता है। मैप एल्गोरिदम में, डेटा पर फ़ंक्शंस एक साथ लागू होते हैं। 'विभाजन और अधिकार' में प्रदान किए गए डेटा के सेट में मैप स्केलेटन का उपयोग करके उस पर फ़ंक्शन लागू होता है, हालांकि इसे 'जबकि' एल्गोरिथम का उपयोग करके पुनरावर्ती रूप से लागू किया जा सकता है। जब पूरी समस्या हल हो जाती है तब ही 'जबकि' टूट जाता है।
* 'शाखा और बाध्य' एक एल्गोरिथ्म है जो मानचित्र एल्गोरिदम का भी उपयोग करता है, हालांकि कार्यों को एक साथ चलाने के लिए 'जबकि' एल्गोरिदम लागू करने के बजाय, यह एल्गोरिदम कार्यों को शाखाओं में विभाजित करता है। प्रत्येक शाखा का एक विशिष्ट उद्देश्य, या 'बाध्य' होता है, जहाँ सशर्त विवरण इसे रोक देगा।{{Portal|Computer programming}}
* 'उपखंड और सीमा' एक एल्गोरिदम है जो मैप एल्गोरिदम का भी उपयोग करती है, हालांकि कार्यों को एक साथ चलाने के लिए 'जबकि' एल्गोरिदम लागू करने के स्थान पर, यह एल्गोरिदम कार्यों को उपखंडों में विभाजित करता है। प्रत्येक उपखंड का एक विशिष्ट उद्देश्य, या 'सीमा' होती है, जहाँ सशर्त कथन के कारण यह रुक जाता है।{{Portal|Computer programming}}


==संदर्भ==
==संदर्भ==

Revision as of 17:34, 7 June 2023

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

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

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

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

पृष्ठभूमि

आधुनिक सॉफ्टवेयर[2] प्रायः कई कारणों से जटिल होता है। इसका अर्थ यह हो सकता है कि केवल एक ही प्रोग्रामर इसे विकसित नहीं कर सकता है, या यह कि अन्य मॉड्यूल या भागों को अलग से आयात करना होगा। प्रोग्राम भी अपने आप में बहुत जटिल हो सकते हैं, कुछ एक ही समय में एक ही चर तक पहुँचने या यहां तक कि डिस्प्ले के लिए पिक्सल उत्पन्न करने के लिए कई विधियों के साथ। संकलन के समय कम से कम त्रुटियों के साथ अपने कोड को विकसित करने के लिए प्रोग्रामर्स की सहायता के लिए स्केलेटन कोड का उपयोग किया जाता है।

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

स्यूडोकोड से संबंध

स्यूडोकोड का एक सामान्य उदाहरण

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

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

प्रोग्राम डिजाइन का यह तरीका भी प्रायः कलम और कागज पर किया जाता है, टेक्सट को वास्तव में लागू किए जाने वाले टेक्सट से आगे बढ़ाया जाता है। स्केलेटन प्रोग्रामिंग इसका अनुकरण करती है, लेकिन इस तरह से भिन्न होती है कि यह प्रायः एकीकृत विकास परिवेश या टेक्सट संपादकों में लिखी जाती है। यह प्रारंभिक डिजाइन चरण के बाद प्रोग्राम के आगे के विकास में सहायता करता है। स्केलेटन प्रोग्राम चलाए जाने पर सरलीकृत कार्यों को संचालित करने की अनुमति भी देता है।

कार्यान्वयन

स्केलेटन प्रोग्रामिंग को विभिन्न प्रोग्रामिंग अनुप्रयोगों की एक श्रृंखला में लागू किया जा सकता है।

प्रोग्रामिंग भाषा प्रलेखन

अधिकांश, यदि सभी प्रोग्रामिंग भाषाओं में स्केलेटन कोड नहीं है, तो इसका उपयोग सभी अंतर्निहित कार्यों और विधियों की परिभाषा में सहायता के लिए किया जाता है। यह नए प्रोग्रामरों को सिंटेक्स और लिखित विधियों के इच्छित कार्यान्वयन को समझने के लिए सरल साधन प्रदान करता है।

जावा, एक ऑब्जेक्ट ओरिएंटेड भाषा, जावा पैकेज के प्रत्येक ऑब्जेक्ट भाग के लिए पूरी तरह से अलग विधियों के साथ संरचित प्रलेखन पृष्ठ पर बहुत अधिक ध्यान केंद्रित करती है।[4] ऑब्जेक्ट ओरिएंटेड भाषाएँ अन्य भाषाओं में पाए जाने वाले सरल टॉप-डाउन दृष्टिकोण के स्थान पर उनके कार्यान्वयन के लिए पदानुक्रम आधारित संरचना पर ध्यान केंद्रित करती हैं। 'ऑब्जेक्ट्स' डेटा और चरों को संग्रहित करते हैं, जिससे प्रायः अधिक कुशल प्रोग्राम लिखे जाने की अनुमति मिलती है। इन वस्तुओं में अलग-अलग कार्य होते हैं जो आंतरिक चरों तक पहुंच सकते हैं, जिन्हें विधियों के रूप में जाना जाता है।

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

पायथन के पास अपने अंतर्निर्मित तरीकों को दस्तावेज करने के लिए एक समान दृष्टिकोण है, हालांकि दायरे और डेटा प्रकारों पर निर्धारण की कमी का अनुकरण करता है।[5] इस दस्तावेज़ीकरण में संक्षिप्त विवरण और विधि या फ़ंक्शन के विशिष्ट उपयोग के उदाहरण के साथ-साथ प्रत्येक विधि का सिंटेक्स है। उदाहरण में प्रदान किया गया स्केलेटन कोड प्रोग्रामर को त्वरित नज़र में फ़ंक्शन की अच्छी समझ देता है।

वर्ग परिभाषा

तीसरे पक्ष के डेवलपर्स द्वारा लिखे गए वर्गों, मुख्य रूप से लाइब्रेरीज के भाग के रूप में, उनकी प्रोग्रामिंग को स्केलेटन कोड के रूप में भी प्रदर्शित करती हैं। यह लाइब्रेरी के लिए किसी भी नए को सूचित करने में सहायता करता है कि कैसे कार्य और विधियां संचालित होती हैं। P5.Js कुछ सम्मिलित कार्यों के इच्छित उपयोग की व्याख्या करने के लिए अपने प्रलेखन पृष्ठ पर इस प्रारूप का उपयोग करता है।[6] यह प्रोग्रामिंग लैंग्वेज प्रलेखन से अलग है, हालांकि, विधि के सभी संभावित उपयोगों के स्थान पर पैरामीटर प्रदर्शित करने के लिए स्केलेटन कोड का उपयोग करना।

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

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

बहुरूपता आधारित परिभाषाएँ

बहुरूपता एक विचारधारा है जो ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग प्रतिमान के साथ चलती है, जहां विधियों को ओवरराइड या ओवरलोड (छोटे वर्ग में समान नाम वाली विधियां जो मूल वर्ग में लिखी गई विधि पर प्राथमिकता लेती हैं) किया जा सकता है। विधियों की परिभाषा भाषा के वाक्य-विन्यास द्वारा परिभाषित स्केलेटन रूपरेखा पर आधारित है।[9]

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

सार्वजनिक कंकाल उदाहरण ();

संक्षेप वर्ग लगभग वर्ग के कार्यान्वयन के समान है, हालांकि भाषा के आधार पर, कम से कम एक विधि को संक्षेप के रूप में परिभाषित किया गया है। इसका तात्पर्य है कि इस वर्ग के किसी भी बच्चे (कोई भी वर्ग जो विस्तार या कार्यान्वित करता है) को इसके लिए विधि परिभाषित करने की आवश्यकता है। संक्षेप वर्गाों में इंटरफेस के लिए बहुत ही समान परिभाषा शैली होती है, हालांकि कीवर्ड 'संक्षेप' प्रायः इस तथ्य की पहचान करने के लिए प्रयोग किया जाता है कि इसे छोटे वर्गों में लागू करने की आवश्यकता है।

सार्वजनिक संक्षेप कंकाल उदाहरण ();

ये उदाहरण जावा सिंटेक्स का उपयोग करते हैं।

समानांतर प्रोग्रामिंग

समानांतर प्रोग्रामिंग एक साथ कई कार्यों का संचालन है जो प्रायः दक्षता बढ़ाने के लिए उपयोग किया जाता है। ये प्रायः विकसित करने के लिए सबसे कठिन प्रकार के प्रोग्राम हैं, उनकी जटिलता और हार्डवेयर के साथ परस्पर संबंध के कारण भी। कई डेवलपर्स ने इस मुख्य कार्यप्रणाली के साथ प्रोग्राम लिखने का प्रयास किया है,[10] हालांकि यह विभिन्न परिणामों से पूरा किया गया है।

बाद के विकास के लिए विचाराधीन विधियों का संक्षेप में वर्णन करने के लिए एल्गोरिथम स्केलेटन रूपरेखा का उपयोग समानांतर प्रोग्रामिंग में किया जाता है। रूपरेखा एक ही प्रकार तक सीमित नहीं हैं, और इनमें से प्रत्येक प्रकार के डेवलपर के प्रोग्राम की दक्षता बढ़ाने के लिए अलग-अलग उद्देश्य हैं। इन्हें तीन मुख्य प्रकारों में वर्गीकृत किया जा सकता है: डेटा-समांतर, कार्य-समानांतर और रिज़ॉल्यूशन।[10]

डेटा-समानांतर

इन स्केलेटन एल्गोरिदम का उपयोग उन प्रोग्रामों को विकसित करने के लिए किया जाता है जो बड़े डेटा आधारित सॉफ़्टवेयर पर काम करते हैं, प्रायः बाद में उपयोग के लिए डेटा के बीच संबंंध की पहचान करते हैं। डेटा समानांतर एल्गोरिदम में 'मैप्स', 'फोर्क्स' और 'रिड्यूसेस' या 'स्कैन' सम्मिलित हैं।

  • 'मैप्स' सबसे अधिक उपयोग किए जाने वाले डेटा समानांतर एल्गोरिदम हैं, और प्रायः डेटा के बड़े सेट पर पूरा होने वाला एकल संचालन सम्मिलित होता है। दक्षता बढ़ाने के लिए, अंत में डेटा को फिर से एक साथ संरचित करने से पहले, कई डेटा सेटों में यह संचालन एक साथ लागू होता है।
  • 'फोर्क्स' 'मैप्स' के समान हैं लेकिन वे कुछ डेटा प्रकारों के लिए अलग संचालन का उपयोग करते हैं। इसे एकाधिक डेटा समानता के रूप में जाना जाता है।[10]
  • डेटा पर संचालन लागू करने से पहले, डेटा के सेट पर उपसर्ग लागू करने के लिए 'रिड्यूसेस' या 'स्कैन' का उपयोग किया जाता है। ये 'मैप्स' से भिन्न हैं क्योंकि उनके पास विधि के रनटाइम के दौरान आंशिक परिणामों का एक सेट होता है।

कार्य-समानांतर

ये संचालन, जैसा कि इनके नाम से पता चलता है, कार्य पर काम करते हैं। इसके अंतर्गत प्रत्येक प्रकार का एल्गोरिदम कार्यों के बीच व्यवहार में बदलाव के कारण भिन्न होता है। कार्य समानांतर एल्गोरिदम में 'अनुक्रमिक', 'फार्म', 'पाइप्स', 'यदि', 'के लिए' और 'जबकि' सम्मिलित हैं।

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

रिज़ॉल्यूशन स्केलेटन

ये स्केलेटन ऊपर पाए गए विशिष्ट स्केलेटन्स से बहुत भिन्न हैं। 'रिज़ॉल्यूशन' एल्गोरिथम निर्दिष्ट समस्या को हल करने के लिए विधियों के संयोजन का उपयोग करता है। एल्गोरिथ्म की दी गई समस्या "समस्याओं का समूह" हो सकती है।[10] इन स्केलेटन्स के दो मुख्य प्रकार हैं, 'विभाजन और अधिकार' या 'ब्रांड और सीमा'।

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

संदर्भ

  1. Freeman, Eric; Freeman, Elisabeth; Kathy, Sierra; Bert, Bates (2004). Hendrickson, Mike; Loukides, Mike (eds.). Head First Design Patterns (paperback). Vol. 1. O'REILLY. p. 440. ISBN 978-0-596-00712-6. Retrieved 2012-08-28.
  2. Lowery, Jeff (2019-11-02). "Why is Software Development Difficult?". Medium (in English). Retrieved 2020-11-15.
  3. 3.0 3.1 Bellamy, Rachel K. E. (1994-06-01). "What Does Pseudo-Code Do? A Psychological Analysis of the use of Pseudo-Code by Experienced Programmers". Human–Computer Interaction. 9 (2): 225–246. doi:10.1207/s15327051hci0902_3. ISSN 0737-0024.
  4. "Object (Java Platform SE 8 )". docs.oracle.com. Retrieved 2020-10-02.
  5. "Built-in Functions — Python v3.0.1 documentation". docs.python.org. 2009-02-14. Retrieved 2020-10-03.
  6. "reference | p5.js". p5js.org. Retrieved 2020-11-15.
  7. Granger, Chris (2020-11-18). "हम जिस नई चीज़ पर काम कर रहे हैं उसकी पहली झलक।". Twitter (in English). Retrieved 2020-11-19.
  8. Özcan, E. (2004). "एक प्राकृतिक भाषा इंटरफ़ेस का उपयोग करके जावा क्लास कंकाल उत्पन्न करना". Proceedings of the 1st International Workshop on Natural Language Understanding and Cognitive Science. SciTePress - Science and Technology Publications. 1: 126–134. doi:10.5220/0002683301260134. ISBN 972-8865-05-8.
  9. Benaya, Tamar; Zur, Ela (2008), Understanding Object Oriented Programming Concepts in an Advanced Programming Course, Lecture Notes in Computer Science, vol. 5090, Berlin, Heidelberg: Springer Berlin Heidelberg, pp. 161–170, doi:10.1007/978-3-540-69924-8_15, ISBN 978-3-540-69923-1, retrieved 2020-11-18
  10. 10.0 10.1 10.2 10.3 González-Vélez, Horacio; Leyton, Mario (2010-11-01). "A survey of algorithmic skeleton frameworks: high-level structured parallel programming enablers". Software: Practice and Experience. 40 (12): 1135–1160. doi:10.1002/spe.1026. ISSN 0038-0644. S2CID 16211075.