2005 से 2013 तक सभी तरह से वेब विकास में इम्पीरेटिव प्रोग्रामिंग शैली का अभ्यास किया गया था।
अनिवार्य प्रोग्रामिंग के साथ, हमने कोड लिखा है जो हमारे आवेदन को ठीक से सूचीबद्ध करना चाहिए, चरण दर चरण।
कार्यात्मक प्रोग्रामिंग शैली संयोजन कार्यों के चतुर तरीकों के माध्यम से अमूर्तता पैदा करती है।
जवाबों में घोषणात्मक प्रोग्रामिंग का उल्लेख है और इसके बारे में मैं कहूंगा कि घोषणात्मक प्रोग्रामिंग कुछ नियमों को सूचीबद्ध करता है जिनका हमें पालन करना है। हम तब प्रदान करते हैं जो हम अपने आवेदन के लिए कुछ प्रारंभिक स्थिति के रूप में संदर्भित करते हैं और हम उन नियमों को परिभाषित करते हैं कि आवेदन कैसे व्यवहार करता है।
अब, ये त्वरित विवरण शायद बहुत मायने नहीं रखते हैं, इसलिए एक सादृश्य के माध्यम से चलने से अनिवार्य और घोषणात्मक प्रोग्रामिंग के बीच के अंतर से चलते हैं।
कल्पना कीजिए कि हम सॉफ्टवेयर का निर्माण नहीं कर रहे हैं, बल्कि इसके बजाय हम जीवित रहने के लिए पीक बनाते हैं। शायद हम बुरे बेकर हैं और स्वादिष्ट पाई को सेंकना नहीं जानते।
तो हमारा बॉस हमें एक दिशा-निर्देश देता है, जिसे हम एक नुस्खा के रूप में जानते हैं।
नुस्खा हमें बताएगा कि पाई कैसे बनाई जाए। एक नुस्खा इस तरह से एक अनिवार्य शैली में लिखा गया है:
- 1 कप मैदा मिलाएं
- 1 अंडा जोड़ें
- 1 कप चीनी डालें
- एक पैन में मिश्रण डालो
- पैन को 30 मिनट और 350 डिग्री एफ में ओवन में रखें।
घोषणात्मक नुस्खा निम्नलिखित करेगा:
1 कप आटा, 1 अंडा, 1 कप चीनी - प्रारंभिक अवस्था
नियम
- यदि सब कुछ मिश्रित है, तो पैन में रखें।
- अगर सब कुछ unmixed, कटोरा में जगह है।
- यदि पैन में सब कुछ है, तो ओवन में रखें।
इसलिए जरूरी एप्रोच स्टेप बाई स्टेप एप्रोच हैं। आप चरण एक से शुरू करते हैं और चरण 2 और इतने पर जाते हैं।
आप अंत में कुछ अंत उत्पाद के साथ समाप्त होते हैं। तो इस पाई को बनाते हुए, हम इन सामग्रियों को लेते हैं, उन्हें मिलाते हैं, इसे एक पैन और ओवन में डालते हैं और आपको अपना अंतिम उत्पाद मिल जाता है।
एक घोषणात्मक दुनिया में, इसका अलग.इस घोषणात्मक नुस्खा में हम अपनी रेसिपी को दो अलग-अलग हिस्सों में अलग-अलग करेंगे, एक भाग से शुरू करते हैं जो चर की तरह नुस्खा की प्रारंभिक स्थिति को सूचीबद्ध करता है। तो यहाँ हमारे चर हमारे अवयवों की मात्रा और उनके प्रकार हैं।
हम प्रारंभिक अवस्था या प्रारंभिक अवयव लेते हैं और उनके लिए कुछ नियम लागू करते हैं।
इसलिए हम प्रारंभिक अवस्था लेते हैं और उन्हें इन नियमों के माध्यम से बार-बार पास करते हैं जब तक कि हम एक प्रकार का फल स्ट्रॉबेरी पाई या जो भी खाने के लिए तैयार नहीं हो जाते।
इसलिए एक घोषणात्मक दृष्टिकोण में, हमें यह जानना होगा कि इन नियमों को ठीक से कैसे बनाया जाए।
इसलिए जिन नियमों को हम अपनी सामग्री या स्थिति की जांच करना चाहते हैं, अगर मिलाया जाए, तो उन्हें एक पैन में रखें।
हमारी प्रारंभिक स्थिति के साथ, यह मेल नहीं खाता क्योंकि हमने अभी तक अपनी सामग्री को मिलाया नहीं है।
इसलिए नियम 2 कहता है, यदि वे मिश्रित नहीं हैं, तो उन्हें एक कटोरे में मिलाएं। ठीक है हाँ यह नियम लागू होता है।
अब हमारे पास हमारे राज्य के रूप में मिश्रित सामग्री का एक कटोरा है।
अब हम उस नए राज्य को फिर से अपने नियमों पर लागू करते हैं।
इसलिए नियम 1 कहता है कि यदि सामग्री को पैन में मिलाया जाता है, तो ठीक है, अब नियम 1 लागू होता है, इसे करने दें।
अब हमारे पास यह नया राज्य है जहां सामग्री मिश्रित और एक पैन में है। नियम 1 अब प्रासंगिक नहीं है, नियम 2 लागू नहीं होता है।
नियम 3 कहता है कि यदि सामग्री एक पैन में है, तो उन्हें ओवन में रखें, महान वह नियम जो इस नए राज्य पर लागू होता है, इसे करने देता है।
और हम एक स्वादिष्ट गर्म सेब पाई या जो कुछ भी करते हैं, उसके साथ समाप्त होते हैं।
अब, यदि आप मेरे जैसे हैं, तो आप सोच रहे होंगे कि हम अभी भी अनिवार्य प्रोग्रामिंग क्यों नहीं कर रहे हैं। यह समझ में आता है।
ठीक है, साधारण प्रवाह के लिए हाँ, लेकिन अधिकांश वेब अनुप्रयोगों में अधिक जटिल प्रवाह होते हैं जिन्हें अनिवार्य रूप से अनिवार्य प्रोग्रामिंग डिज़ाइन द्वारा कैप्चर नहीं किया जा सकता है।
एक घोषणात्मक दृष्टिकोण में, हमारे पास कुछ प्रारंभिक सामग्री या प्रारंभिक अवस्था हो सकती है textInput=“”
, जैसे एकल चर।
शायद पाठ इनपुट एक खाली स्ट्रिंग के रूप में शुरू होता है।
हम इस प्रारंभिक स्थिति को लेते हैं और इसे आपके आवेदन में परिभाषित नियमों के एक सेट पर लागू करते हैं।
यदि उपयोगकर्ता पाठ में प्रवेश करता है, तो पाठ इनपुट अपडेट करें। ठीक है, अभी जो लागू नहीं होता है।
यदि टेम्पलेट प्रदान किया गया है, तो विजेट की गणना करें।
- यदि textInput अपडेट किया गया है, तो टेम्पलेट को फिर से प्रस्तुत करें।
ठीक है, इसमें से कोई भी लागू नहीं होता है इसलिए यह कार्यक्रम घटित होने वाली किसी घटना की प्रतीक्षा करेगा।
तो कुछ बिंदु पर एक उपयोगकर्ता पाठ इनपुट को अपडेट करता है और फिर हम नियम नंबर 1 को लागू कर सकते हैं।
हम इसे अद्यतन कर सकते हैं “abcd”
इसलिए हमने सिर्फ अपना टेक्स्ट और टेक्सट अपडेट अपडेट किया है, नियम नंबर 2 लागू नहीं होता है, नियम नंबर 3 कहता है कि यदि टेक्स्ट इनपुट अपडेट है, जो अभी हुआ है, तो टेम्पलेट को फिर से प्रस्तुत करें और फिर हम नियम 2 पर वापस जाएं। यदि टेम्पलेट रेंडर किया गया है , विजेट की गणना, ठीक विजेट की गणना करने देता है।
सामान्य तौर पर, प्रोग्रामर के रूप में, हम अधिक घोषणात्मक प्रोग्रामिंग डिजाइनों के लिए प्रयास करना चाहते हैं।
इम्पीरेटिव अधिक स्पष्ट और स्पष्ट लगता है, लेकिन एक घोषणात्मक दृष्टिकोण बड़े अनुप्रयोगों के लिए बहुत अच्छी तरह से मापता है।