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

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

कुछ सामान्य प्रोग्रामिंग प्रतिमान इस प्रकार हैं। (पदानुक्रमित संबंध में दर्शाए गए ):नॉरमार्क, कर्ट. Overview of the four main programming paradigms. अलबोर्ग विश्वविद्यालय, 9 मई 2011. Retrieved 22 सितंबर 2012.

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

अवलोकन
प्रोग्रामिंग प्रतिमान कम्प्यूटर विज्ञान के उन शोधों से विकसित हुए हैं जो सॉफ्टवेयर विकास की मौजूदा पद्धतियों का अध्ययन करते हैं। इन शोधों की मदद से यह समझना और तुलना करना आसान हो जाता है कि अलग-अलग प्रोग्रामिंग तरीके कैसे काम करते हैं और उन्हें किन भाषाओं में लागू किया जाता है। इसी तरह,  सॉफ्टवेयर इंजीनियरिंग के अन्य शोध क्षेत्र विकास प्रक्रियाओं का अध्ययन करते हैं और उनकी तुलना के लिए  अलग-अलग पद्धतियाँ बताते हैं।

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

जब कोई डेवलपर ऐसी भाषा का उपयोग करता है जो कई प्रतिमानों का समर्थन करती है, तो वह अपनी आवश्यकता और समझ के अनुसार भाषा की विशेषताओं का चुनाव करता है। कई बार डेवलपर प्रतिमानों के बारे में विशेष रूप से सोचे बिना ही भाषा की सुविधाओं का उपयोग करता है। बाद में, उस  कोड को किसी विशेष प्रतिमान के अंतर्गत वर्गीकृत करना अधिकतर एक शैक्षणिक (अकादमिक) प्रक्रिया होती है।

सन्दर्भ
श्रेणी:प्रोग्रामिंग भाषा विषय