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

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

कुछ सामान्य प्रोग्रामन पैराडाइम इस प्रकार हैं। (पदानुक्रमित संबंध में दर्शाए गए ):

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

## अवलोकन

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

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

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

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