प्रोसीज़रल प्रोग्रामिंग

प्रक्रियात्मक प्रोग्रामिंग एक प्रोग्रामिंग प्रतिमान है, जो अनिवार्य प्रोग्रामिंग से प्राप्त हुआ है, प्रक्रिया कॉल की अवधारणा के आधार पर। प्रक्रियाएं (एक प्रकार की दिनचर्या या उपनेमका) में केवल किए जाने वाले कम्प्यूटेशनल चरणों की एक श्रृंखला होती है। किसी कार्यक्रम के निष्पादन के दौरान किसी भी समय किसी भी प्रक्रिया को बुलाया जा सकता है, जिसमें अन्य प्रक्रियाएं या स्वयं शामिल हैं। पहली प्रमुख प्रक्रियात्मक प्रोग्रामिंग भाषाएं 1957-1964 के आसपास दिखाई दीं, जिनमें फोरट्रान, ALGOL, COBOL, PL/I और BASIC शामिल हैं। पास्कल (प्रोग्रामिंग भाषा) और सी (प्रोग्रामिंग भाषा) 1970-1972 के आसपास प्रकाशित हुए थे।

कंप्यूटर प्रोसेसर एक ढेर रजिस्टर के माध्यम से प्रक्रियात्मक प्रोग्रामिंग के लिए हार्डवेयर समर्थन प्रदान करता है और सबरूटीन#जंप टू सबरूटीन और उनसे लौटने के लिए निर्देश देता है। अन्य प्रकार की प्रोग्रामिंग के लिए हार्डवेयर समर्थन संभव है, लेकिन व्यावसायिक रूप से कोई प्रयास सफल नहीं रहा (उदाहरण के लिए लिस्प मशीनें या जावा प्रोसेसर)।

प्रक्रियाएं और प्रतिरूपकता
प्रतिरूपकता (प्रोग्रामिंग) आम तौर पर वांछनीय है, विशेष रूप से बड़े, जटिल कार्यक्रमों में। इनपुट आमतौर पर तर्क (कंप्यूटर प्रोग्रामिंग) के रूप में सिंटैक्टिक रूप से निर्दिष्ट होते हैं और आउटपुट प्रतिलाभ की मात्रा के रूप में दिए जाते हैं।

देखते हुए एक और तकनीक है जो प्रक्रियाओं को मॉड्यूलर रखने में मदद करती है। यह प्रक्रिया को स्पष्ट प्राधिकरण के बिना, स्वयं के पिछले उदाहरणों सहित अन्य प्रक्रियाओं (और इसके विपरीत) के चरों तक पहुँचने से रोकता है।

कम मॉड्यूलर प्रक्रियाएं, अक्सर छोटे या जल्दी से लिखे गए कार्यक्रमों में उपयोग की जाती हैं, निष्पादन प्रणाली प्लेटफॉर्म में बड़ी संख्या में चर (प्रोग्रामिंग) के साथ बातचीत करती हैं, जिसे अन्य प्रक्रियाएं भी संशोधित कर सकती हैं।

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

अनिवार्य प्रोग्रामिंग
प्रक्रियात्मक प्रोग्रामिंग भाषाएँ भी अनिवार्य प्रोग्रामिंग भाषाएँ हैं, क्योंकि वे निष्पादन वातावरण की स्थिति का स्पष्ट संदर्भ देती हैं। यह चर (जो प्रोसेसर रजिस्टरों के अनुरूप हो सकता है) से लेकर लोगो_(प्रोग्रामिंग_लैंग्वेज) में कछुए की स्थिति जैसी कुछ भी हो सकती है।

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

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

कार्यात्मक प्रोग्रामिंग
व्यावहारिक योजना (प्रोग्रामिंग भाषा)ओं में मॉड्यूलरिटी और कोड पुन: उपयोग के सिद्धांत मूल रूप से प्रक्रियात्मक भाषाओं के समान ही हैं, क्योंकि वे दोनों संरचित प्रोग्रामिंग से उत्पन्न होते हैं। तो उदाहरण के लिए:
 * प्रक्रियाएं कार्यों के अनुरूप हैं। दोनों कार्यक्रमों के विभिन्न भागों में और इसके निष्पादन के विभिन्न बिंदुओं पर समान कोड के पुन: उपयोग की अनुमति देते हैं।
 * उसी टोकन से, प्रक्रिया कॉल फ़ंक्शन एप्लिकेशन के अनुरूप होती है।
 * फ़ंक्शन तर्कों, रिटर्न वैल्यू और वेरिएबल स्कोप के उपयोग से फ़ंक्शन और उनके मॉड्यूलर एक ही तरीके से एक दूसरे से अलग हो जाते हैं।

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

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

गूढ़ प्रोग्रामिंग भाषा लैंग्वेज फंक्शनल लैंग्वेज (जैसे अनलैम्ब्डा) मौजूद होती हैं, जो संरचित प्रोग्रामिंग को छोड़ देती हैं (और इसलिए चुनौतीपूर्ण) में प्रोग्राम करना मुश्किल हो जाता है। ये भाषाएं प्रक्रियात्मक और कार्यात्मक भाषाओं के बीच सामान्य आधार का अपवाद हैं।

तर्क प्रोग्रामिंग
तर्क प्रोग्रामिंग में, एक प्रोग्राम परिसर का एक सेट है, और उम्मीदवार प्रमेयों को साबित करने का प्रयास करके गणना की जाती है। इस दृष्टिकोण से, तर्क कार्यक्रम घोषणात्मक प्रोग्रामिंग हैं, जो समस्या को हल करने के तरीके के बजाय इस पर ध्यान केंद्रित करते हैं।

हालाँकि, SLD रिज़ॉल्यूशन द्वारा कार्यान्वित पिछड़ा तर्क तकनीक, लॉजिक प्रोग्रामिंग लैंग्वेज जैसे प्रोलॉग में समस्याओं को हल करने के लिए उपयोग की जाती है, प्रोग्राम को लक्ष्य-घटाने की प्रक्रिया के रूप में मानती है। इस प्रकार प्रपत्र के खंड:


 * H :- B1, …, Bn.

प्रक्रियाओं के रूप में दोनों की दोहरी व्याख्या है


 * दिखाने/हल करने के लिए H, दिखाएँ / हल करें B1 और और Bn

और तार्किक प्रभाव के रूप में:


 * B1 and … and Bn implies H.

अनुभवी लॉजिक प्रोग्रामर उन कार्यक्रमों को लिखने के लिए प्रक्रियात्मक व्याख्या का उपयोग करते हैं जो प्रभावी और कुशल हैं, और वे यह सुनिश्चित करने में सहायता के लिए घोषणात्मक व्याख्या का उपयोग करते हैं कि कार्यक्रम सही हैं।

यह भी देखें

 * प्रोग्रामिंग प्रतिमानों की तुलना
 * घोषणात्मक प्रोग्रामिंग
 * कार्यात्मक प्रोग्रामिंग (विपरीत)
 * अनिवार्य प्रोग्रामिंग
 * तर्क प्रोग्रामिंग
 * ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग
 * प्रोग्रामिंग प्रतिमान
 * प्रोग्रामिंग भाषा
 * संरचित प्रोग्रामिंग
 * एसक्यूएल # प्रक्रियात्मक एक्सटेंशन