फंक्शनल रिएक्टिव प्रोग्रामिंग (एफआरपी) का त्वरित परिचय

FRP दो प्रोग्रामिंग प्रतिमानों के प्रतिच्छेदन का प्रतिनिधित्व करता है। लेकिन, इससे पहले कि हम अवधारणाओं में गहराई से खुदाई करें, हमें कुछ बुनियादी शब्दों के बारे में थोड़ा और जानना होगा।

एफआरपी: घटनाओं पर प्रतिक्रिया

इंपीरियल प्रोग्रामिंग

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

यहाँ एक उदाहरण है:

संख्या दें = [१, २, ३, ४, ५, ६,,,,, ९]
var नंबर्सलशनफ़ाइव = [इंट] ()
सूचकांक में 0 के लिए .. <नंबर
    {
    यदि संख्या [सूचकांक] <५
        {
        numbersLessThanFive.append (संख्या [सूचकांक])
        }
    }

जैसा कि आप देख सकते हैं, हम एक वांछित आउटपुट का उत्पादन करने के लिए क्रमिक रूप से निर्देशों की एक श्रृंखला निष्पादित करते हैं।

कार्यात्मक प्रोग्रामिंग

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

  • राज्य को अलग-अलग क्रमपरिवर्तन और संयोजनों में से एक के रूप में विचार करें जो आपके कार्यक्रम को इसके निष्पादन के दौरान किसी भी समय हो सकता है
  • डेटा म्यूटेबिलिटी वह अवधारणा है, जहां किसी दिए गए डेटासेट में प्रोग्राम एक्जीक्यूशन के दौरान किसी दिए गए कोर्स में बदलाव हो सकता है।

समान प्रोग्रामिंग का उपयोग करके जो उदाहरण दिया गया था, उसे निम्नलिखित तरीकों से इस्तेमाल किया जा सकता है:

संख्या दें = [१, २, ३, ४, ५, ६,,,,, ९]
संख्या दो देंसुविधाएँ = नंबर.फिल्टर {$ 0 <5}

हम फिल्टर फ़ंक्शन को एक निश्चित मानदंड वाले क्लोजर के साथ खिलाते हैं। उस मानदंड को फिर संख्या सरणी में प्रत्येक तत्व पर लागू किया जाता है, और परिणामी सरणी में ऐसे तत्व होते हैं जो हमारे मानदंडों को पूरा करते हैं।

दोनों उदाहरणों में दो सरणियों की घोषणा पर ध्यान दें।

पहले उदाहरण में, नंबरलेशनेटिव सरणी को एक संस्करण के रूप में घोषित किया गया था, जबकि दूसरे उदाहरण में, उसी सरणी को एक लेट के रूप में घोषित किया गया था।

क्या यह कुछ घंटियाँ बजाता है?

कौन सा दृष्टिकोण बेहतर है, किस सरणी के साथ काम करना सुरक्षित है?

क्या होगा यदि एक से अधिक धागे एक ही सरणी और उसके तत्वों के साथ काम करने की कोशिश कर रहे हैं?

क्या कोई स्थिर सरणी अधिक विश्वसनीय नहीं है?

प्रतिक्रियाशील प्रोग्रामिंग

रिएक्टिव प्रोग्रामिंग अतुल्यकालिक डेटा धाराओं या घटना धाराओं के साथ प्रोग्रामिंग का अभ्यास है। एक ईवेंट स्ट्रीम कुछ भी हो सकती है जैसे कीबोर्ड इनपुट, बटन टैप, जेस्चर, जीपीएस लोकेशन अपडेट, एक्सेलेरोमीटर और आईबेकॉन। आप एक स्ट्रीम सुन सकते हैं और उसके अनुसार प्रतिक्रिया कर सकते हैं।

आपने प्रतिक्रियाशील प्रोग्रामिंग के बारे में सुना होगा, लेकिन यह बहुत डराने वाला, डरावना, या गूढ़ भी लग सकता है। आपने ऐसा कुछ देखा होगा:

var दोडिमैटरऑरे = [[१, २], [३, ४], [५, ६]]
चलो फ्लैटअरे = दो आयामीअरे.फ्लैटमैप {सरणी में
    वापसी array.map {पूर्णांक में
        रिटर्न पूर्णांक * 2
    }
}

प्रिंट (flatArray)

आउटपुट: [२, ४, ६, 4, १०, १२]

पहली नज़र में, पूर्ववर्ती कोड थोड़ा अस्पष्ट लग सकता है, और यही कारण हो सकता है कि आपने प्रोग्रामिंग की इस शैली से अपना मुंह मोड़ लिया है। प्रतिक्रियाशील प्रोग्रामिंग, जैसा कि हमने पहले उल्लेख किया है, घटना धाराओं के साथ प्रोग्रामिंग है।

हालांकि, बड़ा सवाल अभी भी अनुत्तरित है। कार्यात्मक प्रतिक्रियाशील प्रोग्रामिंग (FRP) क्या है?

एफआरपी कार्यात्मक और प्रतिक्रियाशील प्रतिमानों का संयोजन है। दूसरे शब्दों में, यह कार्यात्मक प्रतिमान का उपयोग करके डेटा धाराओं पर प्रतिक्रिया कर रहा है। एफआरपी एक उपयोगिता या पुस्तकालय नहीं है - यह आपके अनुप्रयोगों के बारे में सोचने के तरीके और आपके अनुप्रयोगों के बारे में सोचने के तरीके को बदल देता है।

अगले ब्लॉग में मैं प्रतिक्रियाशील प्रोग्रामिंग के बुनियादी बिल्डिंग ब्लॉक्स के बारे में बात करूंगा - तब तक देखते रहिए और पढ़ने का आनंद लीजिए :)

प्रतिक्रियाशील अवधारणाओं पर एक ठोस समझ रखने और RxSwift में iOS एप्लिकेशन लिखने के लिए आप मेरी पुस्तक पढ़ सकते हैं: स्विफ्ट 4 में रिएक्टिव प्रोग्रामिंग।

मेरी अधिक परियोजनाएं और डाउनलोड करने योग्य कोड मेरे सार्वजनिक जीथूब रिपोज में हैं

आप यहां विषय के बारे में अधिक पढ़ सकते हैं

पढ़ने के लिए धन्यवाद, कृपया इसे शेयर करें अगर आपको यह उपयोगी लगे :)