पॉलीमॉर्फिज्म और जेनेरिक्स
पॉलीमॉर्फिज्म कोड के एक ही टुकड़े को कई प्रकारों पर समान रूप से संचालित करने की अनुमति देता है, जिसमें पैरामीट्रिक पॉलीमॉर्फिज्म (जेनेरिक्स), एड हॉक पॉलीमॉर्फिज्म (ओवरलोडिंग और टाइप क्लासेस), और सबटाइप पॉलीमॉर्फिज्म इसके मुख्य रूप हैं।
Definition
पॉलीमॉर्फिज्म वह गुण है जिसके द्वारा एक एकल फ़ंक्शन, प्रकार, या ऑपरेशन एक से अधिक प्रकार के मानों पर लागू हो सकता है; पैरामीट्रिक पॉलीमॉर्फिज्म प्रकार मापदंडों (जेनेरिक्स) के माध्यम से समान रूप से ऐसा करता है, जबकि एड हॉक पॉलीमॉर्फिज्म प्रकार-विशिष्ट कार्यान्वयनों पर प्रेषित होता है।
Scope
यह विषय पॉलीमॉर्फिज्म के प्रमुख प्रकारों को शामिल करता है: जेनेरिक्स और सिस्टम एफ द्वारा साकार किया गया पैरामीट्रिक पॉलीमॉर्फिज्म, ओवरलोडिंग और टाइप क्लासेस के माध्यम से एड हॉक पॉलीमॉर्फिज्म, और समावेशन (सबटाइप) पॉलीमॉर्फिज्म। यह पैरामीट्रिसिटी और इसके द्वारा प्राप्त होने वाले मजबूत तर्क सिद्धांतों, और जेनेरिक एब्स्ट्रैक्शन को कैसे संकलित और विवश किया जाता है, पर प्रकाश डालता है।
Core questions
- जेनेरिक्स टाइप सुरक्षा का त्याग किए बिना पुन: उपयोग कैसे प्रदान करते हैं?
- पैरामीट्रिसिटी क्या है और यह मुफ्त में क्या गारंटी देता है?
- टाइप क्लासेस एड हॉक ओवरलोडिंग को कैसे व्यवस्थित करते हैं?
- जेनेरिक परिभाषाओं को कैसे संकलित किया जाता है, और कौन सी बाधाएं टाइप मापदंडों को बांध सकती हैं?
Key theories
- पैरामीट्रिसिटी (एब्स्ट्रैक्शन प्रमेय)
- रेनॉल्ड्स का एब्स्ट्रैक्शन प्रमेय दर्शाता है कि पैरामीट्रिकली पॉलीमॉर्फिक फ़ंक्शन प्रकारों में समान रूप से व्यवहार करते हैं, एक ऐसा गुण जो ठोस प्रकार के इंस्टेंटिएशन से स्वतंत्र रूप से उनके संभावित व्यवहार को विवश करता है।
- मुफ्त के प्रमेय
- वैडलर ने दिखाया कि एक पैरामीट्रिकली पॉलीमॉर्फिक फ़ंक्शन का प्रकार अकेले उसके व्यवहार के बारे में मुफ्त प्रमेयों को दर्शाता है, जो पैरामीट्रिसिटी का एक सीधा और व्यावहारिक परिणाम है।
- सैद्धांतिक ओवरलोडिंग के लिए टाइप क्लासेस
- वैडलर और ब्लॉट ने टाइप क्लासेस की शुरुआत की, जिससे एड हॉक पॉलीमॉर्फिज्म को एक सुसंगत प्रकार-सैद्धांतिक आधार मिला जहां ओवरलोडेड ऑपरेशंस को मेथड कार्यान्वयनों के निहित शब्दकोशों को पास करके हल किया जाता है।
Clinical relevance
जेनेरिक्स और पॉलीमॉर्फिज्म आधुनिक भाषाओं में पुन: प्रयोज्य लाइब्रेरी डिज़ाइन और कलेक्शन फ्रेमवर्क के लिए केंद्रीय हैं। टाइप क्लासेस और उनके अनुरूप (ट्रेट्स, कॉन्सेप्ट्स, प्रोटोकॉल) सैद्धांतिक, टाइप-सुरक्षित ओवरलोडिंग प्रदान करते हैं, जबकि पैरामीट्रिसिटी शुद्धता तर्क और कंपाइलर अनुकूलन का समर्थन करती है।
History
सिस्टम एफ, जो पैरामीट्रिक पॉलीमॉर्फिज्म को कैप्चर करता है, की खोज 1970 के दशक की शुरुआत में गिरार्ड और रेनॉल्ड्स द्वारा स्वतंत्र रूप से की गई थी। एमएल ने अनुमान के साथ पॉलीमॉर्फिज्म को व्यवहार में लाया। कार्डेलि और वेगनर के 1985 के सर्वेक्षण ने पॉलीमॉर्फिज्म के रूपों को वर्गीकृत किया, रेनॉल्ड्स ने 1983 में पैरामीट्रिसिटी को औपचारिक रूप दिया, और वैडलर और ब्लॉट के 1989 के टाइप क्लासेस ने हास्केल में ओवरलोडिंग को आकार दिया और अन्य जगहों पर ट्रेट्स और कॉन्सेप्ट्स को प्रभावित किया।
Debates
- इरेज़र बनाम रीफाइड जेनेरिक्स
- भाषा कार्यान्वयनकर्ता टाइप इरेज़र द्वारा जेनेरिक्स को संकलित करने पर बहस करते हैं, जो सरल है लेकिन रनटाइम टाइप जानकारी खो देता है, बनाम रनटाइम पर टाइप मापदंडों को रीफाइंग करना, जो जटिलता और कोड आकार की लागत पर आत्मनिरीक्षण को सक्षम बनाता है।
Key figures
- John Reynolds
- Jean-Yves Girard
- Philip Wadler
- Luca Cardelli
- Robin Milner
Related topics
Seminal works
- reynolds1983
- wadler1989free
- wadler1989
- cardelli1985
Frequently asked questions
- पैरामीट्रिक और एड हॉक पॉलीमॉर्फिज्म में क्या अंतर है?
- पैरामीट्रिक पॉलीमॉर्फिज्म सभी प्रकार के तर्कों पर एक समान कार्यान्वयन लागू करता है (जैसा कि जेनेरिक्स के साथ होता है), जबकि एड हॉक पॉलीमॉर्फिज्म एक प्रकार-विशिष्ट कार्यान्वयन का चयन करता है, जैसा कि ओवरलोडिंग या टाइप क्लासेस के साथ होता है।
- पैरामीट्रिसिटी हमें क्या देती है?
- पैरामीट्रिसिटी गारंटी देती है कि एक जेनेरिक फ़ंक्शन सभी प्रकार के इंस्टेंस को समान रूप से मानता है, जिससे उसके व्यवहार के बारे में 'मुफ्त प्रमेय' प्राप्त होते हैं जो अकेले उसके प्रकार के हस्ताक्षर से प्राप्त होते हैं।