पोलिमोर्फ़िज्म (कंप्यूटर विज्ञान)
कंप्यूटर विज्ञान में, पोलिमोर्फ़िज्म (polymorphism) प्रोग्रामिंग भाषा की एक विशेषता है जो डेटा के भिन्न प्रकारों को एक समान इंटरफेस का उपयोग करते हुए हेंडल करने में मदद करती है। पैरामीट्रिक पोलिमोर्फ़िज्मकी अवधारणा डेटा के प्रकार और फंक्शन (functions) दोनों पर लागू होती है। एक फंक्शन जो भिन्न प्रकारों के मान का मूल्यांकन कर सकता है या इन पर लागू हो सकता है एक बहुरूपी फंक्शन (polymorphic function) कहलाता है। एक डेटा प्रकार जो एक सामान्यीकृत प्रकार (generalized type) (उदाहरण मनमाने प्रकारों के तत्वों की एक सूची) के रूप में प्रकट हो सकता है, वह सामान्यीकृत प्रकार की तरह निर्दिष्ट बहुरूपी डेटा प्रकार (polymorphic data type) है, जिससे इस प्रकार की विशेषज्ञता का निर्माण होता है। मूल रूप से पोलिमोर्फ़िज्मके दो भिन्न प्रकार हैं, जिनका वर्णन अनौपचारिक रूप से 1967 में क्रिस्टोफर स्ट्रेची के द्वारा किया गया था। यदि वास्तविक प्रकारों की रेंज जिसे परिमित और संयोजन में प्रयुक्त किया जा सकता है, उसे उपयोग से व्यग्तिगत रूप से निर्दिष्ट किया जाना चाहिए, यह तदर्थ पोलिमोर्फ़िज्म (ad-hoc polymorphism) कहलाती है। यदि सभी कोड किसी विशेष प्रकार के उल्लेख के बिना लेखे गए हैं और इस प्रकार से इन्हें नए प्रकार की किसी भी संख्या के साथ प्रयुक्त किया जा सकता है, यह पैरामीट्रिक पोलिमोर्फ़िज्म (parametric polymorphism) कहलाती है। जॉन सी. रेनाल्ड्स (और बाद में जीन-यवेस गिरार्ड) ने औपचारिक रूप से पोलिमोर्फ़िज्मकी इस धारणा को लेम्बडा केलकुलस (lambda calculus) के विस्तार के रूप में विकसित किया (यह बहुरूपी लेम्बडा केलकुलस या सिस्टम एफ कहलाती है) ऑब्जेक्ट ओरियनटेड प्रोग्रामिंग (object-oriented programming) में, तदर्थ पोलिमोर्फ़िज्म (ad-hoc polymorphism) प्रकार सिद्धांत (type theory) में एक अवधारणा है जिसमें नाम कई भिन्न प्रकारों के उदाहरणों को व्यक्त कर सकते हैं, जब तक वे किसी सामान्य सुपर वर्ग (common super class) से सम्बंधित हैं। तदर्थ पोलिमोर्फ़िज्म (Ad-hoc polymorphism) आमतौर पर सबटाइपिंग के माध्यम से समर्थन प्राप्त करती है, जैसे भिन्न प्रकार के ऑब्जेक्ट किसी अन्य प्रकार के ऑब्जेक्ट (उनके आधार प्रकार (their base type)) के लिए पूरी तरह से प्रतिस्थापन योग्य होते हैं और इस प्रकार से इन्हें सामान्य इंटरफेस के माध्यम से हेंडल किया जा सकता है। तदर्थ पोलिमोर्फ़िज्म (Ad-hoc polymorphism) फंक्शन और विधि ओवरलोडिंग का प्रयोग करते हुए कई भाषाओँ में भी समर्थन प्राप्त करती है। [तथ्य वांछित] पैरामीट्रिक पोलिमोर्फ़िज्म (Parametric polymorphism) को सांख्यिकीय रूप से टाइप की गयी कार्यात्मक प्रोग्रामिंग भाषा (functional programming languages) से भी व्यापक समर्थन प्राप्त होता है। ऑब्जेक्ट ओरियनटेड प्रोग्रामिंग समुदाय में पैरामीट्रिक पोलिमोर्फ़िज्मका उपयोग करने वाली प्रोग्रामिंग अक्सर जिनेरिक प्रोग्रामिंग (generic programming) कहलाती है।