रैपर फ़ंक्शन: Difference between revisions
m (Abhishek moved page आवरण समारोह to रैपर फ़ंक्शन without leaving a redirect) |
No edit summary |
||
Line 1: | Line 1: | ||
रैपर फ़ंक्शन सॉफ़्टवेयर [[पुस्तकालय (कम्प्यूटिंग)|लाइब्रेरी (कम्प्यूटिंग)]] या [[कंप्यूटर प्रोग्राम]] में एक फ़ंक्शन (कंप्यूटर प्रोग्रामिंग) ('सबरूटीन' के लिए दूसरा शब्द) है जिसका मुख्य उद्देश्य दूसरे सबरूटीन<ref>{{cite book |title=Using Visual Basic 6 |last=Reselman |first=Bob |author2=Peasley, Richard |author3=Pruchniak, Wayne |year=1998 |publisher=Que |isbn=9780789716330 |page=446 |url=https://books.google.com/books?id=X5ZQAAAAMAAJ }}</ref> या [[सिस्टम कॉल|प्रणाली कॉल]] को कम या कोई अतिरिक्त संगणना के साथ कॉल करना है। रैपर फ़ंक्शंस का उपयोग सबरूटीन के अंतर्निहित कार्यान्वयन के विवरण को अमूर्त करके कंप्यूटर प्रोग्राम लिखने को आसान बनाने के लिए किया जाता है। | |||
== उद्देश्य == | == उद्देश्य == | ||
रैपर कार्य प्रत्यायोजन (प्रोग्रामिंग) का साधन है और इसका उपयोग कई उद्देश्यों के लिए किया जा सकता है। | |||
=== प्रोग्रामिंग सुविधा === | === प्रोग्रामिंग सुविधा === | ||
कंप्यूटर प्रोग्राम लिखने को आसान बनाने के लिए | कंप्यूटर प्रोग्राम लिखने को आसान बनाने के लिए रैपर फ़ंक्शंस का उपयोग किया जा सकता है। इसका उदाहरण [[जावा एडब्ल्यूटी]] लाइब्रेरी में <code>MouseAdapter</code> इसी प्रकार की कक्षाएं हैं।<ref>[http://java.sun.com/docs/books/tutorial/uiswing/events/mouselistener.html The Java Tutorials]</ref> | ||
रैपर फ़ंक्शंस उन अनुप्रयोगों के विकास में उपयोगी होते हैं जो तृतीय-पक्ष लाइब्रेरी फ़ंक्शंस का उपयोग करते हैं। प्रत्येक तीसरे पक्ष के कार्यों के लिए रैपर लिखा जा सकता है और मूल अनुप्रयोग में उपयोग किया जाता है। यदि तीसरे पक्ष के कार्यों में परिवर्तन होता है या अद्यतन किया जाता है, तो मूल अनुप्रयोग में केवल तृतीय पक्ष कार्यों के सभी उदाहरणों को बदलने के विरोध में मूल अनुप्रयोग में रैपर को संशोधित करने की आवश्यकता होती है। | |||
=== वर्ग/ऑब्जेक्ट इंटरफेस को बदलना === | === वर्ग/ऑब्जेक्ट इंटरफेस को बदलना === | ||
{{Main|एडेप्टर प्रारूप}} | {{Main|एडेप्टर प्रारूप}} | ||
रैपर फ़ंक्शंस का उपयोग किसी आधुनिक वर्ग या ऑब्जेक्ट को एक अलग इंटरफ़ेस रखने के लिए [[एडेप्टर पैटर्न|एडेप्टर प्रारूप]] के लिए किया जा सकता है। आधुनिक लाइब्रेरी कोड का उपयोग करते समय यह विशेष रूप से उपयोगी होता है। | |||
=== कोड परीक्षण === | === कोड परीक्षण === | ||
रैपर फ़ंक्शंस का उपयोग फ़ंक्शन के लिए प्रत्येक कॉल के लिए एक ही त्रुटि जांच को दोहराकर बड़ी मात्रा में कोड की लंबाई बढ़ाए बिना पूर्व-आधुनिक प्रणाली फ़ंक्शंस के लिए [[डीबगर]] रूटीन लिखने के लिए किया जा सकता है।<ref>{{cite book |title=UNIX Network Programming |last=Stevens |first=Richard |author2=Fenner, Bill |author3=Rudoff |author4= Andrew M. |year=2003 |publisher=Addison-Wesley |isbn=9780131411555 |pages=5–6, 29 |url=https://books.google.com/books?id=ptSC4LpwGA0C }}</ref> मूल फ़ंक्शन के सभी कॉल को रैपर पर कॉल के साथ प्रतिस्थापित किया जा सकता है, जिससे प्रोग्रामर को रैपर लिखे जाने के बाद त्रुटि जाँच के बारे में भूलने की अनुमति मिलती है। | |||
परीक्षण चालक एक प्रकार का | परीक्षण चालक एक प्रकार का रैपर फ़ंक्शन है जो कोड मॉड्यूल का प्रयोग करता है, सामान्यतः इसे विभिन्न सेटिंग्स या पैरामीटर के साथ बार-बार कॉल करता है, जिससे प्रत्येक संभावित पथ को सख्ती से आगे बढ़ाया जा सके। यह बांटने योग्य कोड नहीं है, किन्तु यह अस्थायी योग्य कोड नहीं है, जिसे सामान्यतः [[प्रतिगमन परीक्षण]] में उपयोग के लिए रखा जाता है। | ||
इंटरफ़ेस एडेप्टर एक प्रकार का | इंटरफ़ेस एडेप्टर एक प्रकार का रैपर फ़ंक्शन है जो उपयोगकर्ता के लिए इसे अधिक समझदार या प्रासंगिक बनाने के विश्वाश से कोड मॉड्यूल में इंटरफ़ेस को सरल, दर्जी या प्रवर्धित करता है। यह मापदंडों का नाम बदल सकता है, मापदंडों को जोड़ सकता है, मापदंडों के लिए डिफ़ॉल्ट सेट कर सकता है, और पसंद कर सकता है। | ||
=== [[एकाधिक वंशानुक्रम]] === | === [[एकाधिक वंशानुक्रम]] === | ||
[[प्रोग्रामिंग भाषा]] में जो आधार वर्ग के विविध वंशानुक्रम की सहायता नहीं करती है, | [[प्रोग्रामिंग भाषा]] में जो आधार वर्ग के विविध वंशानुक्रम की सहायता नहीं करती है, रैपर फ़ंक्शंस का उपयोग इसे अनुकरण करने के लिए किया जा सकता है। नीचे [[जावा (प्रोग्रामिंग भाषा)]] वर्ग के एक भाग का उदाहरण दिया गया है जो लिंक्डलिस्ट और हैशसेट से विरासत में मिला है। अधिक कार्यान्वयन विवरण के लिए [[विधि (कंप्यूटर प्रोग्रामिंग)]] देखें।<syntaxhighlight lang="d"> | ||
public class Test implements LinkedList, HashSet{ | public class Test implements LinkedList, HashSet{ | ||
Line 41: | Line 39: | ||
== हेल्पर फंक्शन == | == हेल्पर फंक्शन == | ||
सहायक कार्य एक ऐसा कार्य है जो वर्णनात्मक नाम निर्दिष्ट करके और [[गणना]]ओं के पुन: उपयोग की अनुमति देकर संगणना के कुछ भागों को समूहित करता है।<ref>{{cite web|url=https://web.cs.wpi.edu/~cs1101/a05/Docs/creating-helpers.html|archive-url=https://web.archive.org/web/20210507033146/https://web.cs.wpi.edu/~cs1101/a05/Docs/creating-helpers.html|archive-date=7 May 2021|title=CS 1101: Helper functions|first=Kathi|last=Fisler|publisher=[[Worcester Polytechnic Institute]]|year=2005|access-date=17 November 2021|url-status=live}}</ref> चूंकि सभी | सहायक कार्य एक ऐसा कार्य है जो वर्णनात्मक नाम निर्दिष्ट करके और [[गणना]]ओं के पुन: उपयोग की अनुमति देकर संगणना के कुछ भागों को समूहित करता है।<ref>{{cite web|url=https://web.cs.wpi.edu/~cs1101/a05/Docs/creating-helpers.html|archive-url=https://web.archive.org/web/20210507033146/https://web.cs.wpi.edu/~cs1101/a05/Docs/creating-helpers.html|archive-date=7 May 2021|title=CS 1101: Helper functions|first=Kathi|last=Fisler|publisher=[[Worcester Polytechnic Institute]]|year=2005|access-date=17 November 2021|url-status=live}}</ref> चूंकि सभी रैपर सहायक कार्य नहीं होते हैं, सभी सहायक कार्य रैपर होते हैं, और सहायक कार्यों का उल्लेखनीय उपयोग - प्रायः उपयोग किए जाने वाले संचालन को गतिशील बाइनरी अनुवाद में होता है, जिसमें [[मशीन कोड]] के अनुवाद में एक विशेष [[कंप्यूटर आर्किटेक्चर]] के सहायक कार्यों का उपयोग किया जाता है, एक निर्देश दूसरे में आर्किटेक्चर सेट करता है।<ref>{{cite conference|title=Helper function inlining in dynamic binary translation|conference= CC: Compiler Construction|publisher=[[Association for Computing Machinery]]|first=Wenwen|last=Wang|doi=10.1145/3446804.3446851|page=107|url=https://dl.acm.org/doi/10.1145/3446804.3446851|location=New York, United States|isbn=978-1-4503-8325-7|date=3 March 2021}}</ref> | ||
== यह भी देखें == | == यह भी देखें == | ||
* [[रैपर | * [[रैपर लाइब्रेरी]] | ||
* [[चालक आवरण]] | * [[चालक आवरण|चालक रैपर]] | ||
* एडेप्टर प्रारूप | * एडेप्टर प्रारूप | ||
* [[डेकोरेटर पैटर्न|डेकोरेटर प्रारूप]] | * [[डेकोरेटर पैटर्न|डेकोरेटर प्रारूप]] | ||
* प्रतिनिधिमंडल (प्रोग्रामिंग) | * प्रतिनिधिमंडल (प्रोग्रामिंग) | ||
* [[अग्रेषण (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग)]] | * [[अग्रेषण (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग)]] | ||
* [[भाषा बंधन]] | * [[भाषा बंधन]] रैपर दूसरी भाषा के लिए | ||
* घूंट स्वचालित | * घूंट स्वचालित रैपर जनरेटर | ||
* [[नेस्टेड समारोह]] | * [[नेस्टेड समारोह]] | ||
* [[आंशिक आवेदन]] | * [[आंशिक आवेदन]] |
Revision as of 13:26, 3 March 2023
रैपर फ़ंक्शन सॉफ़्टवेयर लाइब्रेरी (कम्प्यूटिंग) या कंप्यूटर प्रोग्राम में एक फ़ंक्शन (कंप्यूटर प्रोग्रामिंग) ('सबरूटीन' के लिए दूसरा शब्द) है जिसका मुख्य उद्देश्य दूसरे सबरूटीन[1] या प्रणाली कॉल को कम या कोई अतिरिक्त संगणना के साथ कॉल करना है। रैपर फ़ंक्शंस का उपयोग सबरूटीन के अंतर्निहित कार्यान्वयन के विवरण को अमूर्त करके कंप्यूटर प्रोग्राम लिखने को आसान बनाने के लिए किया जाता है।
उद्देश्य
रैपर कार्य प्रत्यायोजन (प्रोग्रामिंग) का साधन है और इसका उपयोग कई उद्देश्यों के लिए किया जा सकता है।
प्रोग्रामिंग सुविधा
कंप्यूटर प्रोग्राम लिखने को आसान बनाने के लिए रैपर फ़ंक्शंस का उपयोग किया जा सकता है। इसका उदाहरण जावा एडब्ल्यूटी लाइब्रेरी में MouseAdapter
इसी प्रकार की कक्षाएं हैं।[2]
रैपर फ़ंक्शंस उन अनुप्रयोगों के विकास में उपयोगी होते हैं जो तृतीय-पक्ष लाइब्रेरी फ़ंक्शंस का उपयोग करते हैं। प्रत्येक तीसरे पक्ष के कार्यों के लिए रैपर लिखा जा सकता है और मूल अनुप्रयोग में उपयोग किया जाता है। यदि तीसरे पक्ष के कार्यों में परिवर्तन होता है या अद्यतन किया जाता है, तो मूल अनुप्रयोग में केवल तृतीय पक्ष कार्यों के सभी उदाहरणों को बदलने के विरोध में मूल अनुप्रयोग में रैपर को संशोधित करने की आवश्यकता होती है।
वर्ग/ऑब्जेक्ट इंटरफेस को बदलना
रैपर फ़ंक्शंस का उपयोग किसी आधुनिक वर्ग या ऑब्जेक्ट को एक अलग इंटरफ़ेस रखने के लिए एडेप्टर प्रारूप के लिए किया जा सकता है। आधुनिक लाइब्रेरी कोड का उपयोग करते समय यह विशेष रूप से उपयोगी होता है।
कोड परीक्षण
रैपर फ़ंक्शंस का उपयोग फ़ंक्शन के लिए प्रत्येक कॉल के लिए एक ही त्रुटि जांच को दोहराकर बड़ी मात्रा में कोड की लंबाई बढ़ाए बिना पूर्व-आधुनिक प्रणाली फ़ंक्शंस के लिए डीबगर रूटीन लिखने के लिए किया जा सकता है।[3] मूल फ़ंक्शन के सभी कॉल को रैपर पर कॉल के साथ प्रतिस्थापित किया जा सकता है, जिससे प्रोग्रामर को रैपर लिखे जाने के बाद त्रुटि जाँच के बारे में भूलने की अनुमति मिलती है।
परीक्षण चालक एक प्रकार का रैपर फ़ंक्शन है जो कोड मॉड्यूल का प्रयोग करता है, सामान्यतः इसे विभिन्न सेटिंग्स या पैरामीटर के साथ बार-बार कॉल करता है, जिससे प्रत्येक संभावित पथ को सख्ती से आगे बढ़ाया जा सके। यह बांटने योग्य कोड नहीं है, किन्तु यह अस्थायी योग्य कोड नहीं है, जिसे सामान्यतः प्रतिगमन परीक्षण में उपयोग के लिए रखा जाता है।
इंटरफ़ेस एडेप्टर एक प्रकार का रैपर फ़ंक्शन है जो उपयोगकर्ता के लिए इसे अधिक समझदार या प्रासंगिक बनाने के विश्वाश से कोड मॉड्यूल में इंटरफ़ेस को सरल, दर्जी या प्रवर्धित करता है। यह मापदंडों का नाम बदल सकता है, मापदंडों को जोड़ सकता है, मापदंडों के लिए डिफ़ॉल्ट सेट कर सकता है, और पसंद कर सकता है।
एकाधिक वंशानुक्रम
प्रोग्रामिंग भाषा में जो आधार वर्ग के विविध वंशानुक्रम की सहायता नहीं करती है, रैपर फ़ंक्शंस का उपयोग इसे अनुकरण करने के लिए किया जा सकता है। नीचे जावा (प्रोग्रामिंग भाषा) वर्ग के एक भाग का उदाहरण दिया गया है जो लिंक्डलिस्ट और हैशसेट से विरासत में मिला है। अधिक कार्यान्वयन विवरण के लिए विधि (कंप्यूटर प्रोग्रामिंग) देखें।
public class Test implements LinkedList, HashSet{
@Override
//contains data members and data methods
//covariant return
}
लाइब्रेरी फ़ंक्शंस और प्रणाली कॉल्स
कई मानक लाइब्रेरी कार्य, जैसे कि सी मानक लाइब्रेरी में, प्रणाली कॉल के अमूर्त (कंप्यूटर विज्ञान) आयन के लिए इंटरफ़ेस (कंप्यूटिंग) के रूप में कार्य करते हैं। ग्लिबक में फोर्क और निष्पादित प्रकार्य इसके उदाहरण हैं। वे निचले स्तर के फोर्क (ऑपरेटिंग प्रणाली) को कॉल करते हैं और प्रणाली कॉल को क्रमशः निष्पादित करते हैं।
यह समान रूप से नामित प्रणाली कॉल के अतिरिक्त उच्च-स्तरीय लाइब्रेरी कॉल को संदर्भित करने के लिए गलत विधि से शब्द प्रणाली कॉल और सिस्कल का उपयोग कर सकता है, जिसे वे लपेटते हैं।[4][5]
हेल्पर फंक्शन
सहायक कार्य एक ऐसा कार्य है जो वर्णनात्मक नाम निर्दिष्ट करके और गणनाओं के पुन: उपयोग की अनुमति देकर संगणना के कुछ भागों को समूहित करता है।[6] चूंकि सभी रैपर सहायक कार्य नहीं होते हैं, सभी सहायक कार्य रैपर होते हैं, और सहायक कार्यों का उल्लेखनीय उपयोग - प्रायः उपयोग किए जाने वाले संचालन को गतिशील बाइनरी अनुवाद में होता है, जिसमें मशीन कोड के अनुवाद में एक विशेष कंप्यूटर आर्किटेक्चर के सहायक कार्यों का उपयोग किया जाता है, एक निर्देश दूसरे में आर्किटेक्चर सेट करता है।[7]
यह भी देखें
- रैपर लाइब्रेरी
- चालक रैपर
- एडेप्टर प्रारूप
- डेकोरेटर प्रारूप
- प्रतिनिधिमंडल (प्रोग्रामिंग)
- अग्रेषण (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग)
- भाषा बंधन रैपर दूसरी भाषा के लिए
- घूंट स्वचालित रैपर जनरेटर
- नेस्टेड समारोह
- आंशिक आवेदन
संदर्भ
- ↑ Reselman, Bob; Peasley, Richard; Pruchniak, Wayne (1998). Using Visual Basic 6. Que. p. 446. ISBN 9780789716330.
- ↑ The Java Tutorials
- ↑ Stevens, Richard; Fenner, Bill; Rudoff; Andrew M. (2003). UNIX Network Programming. Addison-Wesley. pp. 5–6, 29. ISBN 9780131411555.
- ↑ "syscalls(2) - Linux manual page". man7.org. Retrieved 2020-04-25.
- ↑ "System Calls (The GNU C Library)". www.gnu.org. Retrieved 2020-04-25.
- ↑ Fisler, Kathi (2005). "CS 1101: Helper functions". Worcester Polytechnic Institute. Archived from the original on 7 May 2021. Retrieved 17 November 2021.
- ↑ Wang, Wenwen (3 March 2021). Helper function inlining in dynamic binary translation. CC: Compiler Construction. New York, United States: Association for Computing Machinery. p. 107. doi:10.1145/3446804.3446851. ISBN 978-1-4503-8325-7.