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

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

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

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

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

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

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

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

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

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

जंहा नामकरण दोनों के मध्य भिन्न होता है, चूंकि उनके समान शब्दार्थ हैं।

कार्यात्मक प्रोग्रामिंग
व्यावहारिक योजना (प्रोग्रामिंग भाषाओं) में मध्यस्थिती और संकेत-लिपि पुन: उपयोग के सिद्धांत मूल रूप से प्रक्रियात्मक भाषाओं के समान ही हैं, चूँकि वे दोनों संरचित प्रोग्रामिंग से उत्पन्न होते हैं। तो उदाहरण के लिए,
 * प्रक्रियाएं कार्यों के अनुरूप होती हैं। अतः दोनों कार्यक्रमों के विभिन्न भागों में और इसके निष्पादन के विभिन्न बिंदुओं पर समान संकेत-लिपि के पुन: उपयोग की अनुमति देते हैं।
 * उसी प्रतीक से प्रक्रिया कॉल अनुष्ठान आवेदन के अनुरूप होती है।
 * अनुष्ठान लॉजिकों, विवरणी महत्व और अस्थिर सीमा के उपयोग से अनुष्ठान और उनके मध्यस्थ ही विधि से दूसरे से भिन्न हो जाते हैं।

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

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

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

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

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


 * H :- B1, …, Bn.

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


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

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


 * B1 and … and Bn implies H.

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

यह भी देखें

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