
मैं प्रोग्रामिंग के आधुनिक अनुशासन के बारे में बात करना चाहता हूं जो स्केलेबिलिटी, दोष सहिष्णुता और तेजी से प्रतिक्रिया की बढ़ती आवश्यकताओं को पूरा करता है, और मल्टी-कोर वातावरण और क्लाउड कंप्यूटिंग दोनों में अपरिहार्य है, और आपको इस पर एक खुले ऑनलाइन पाठ्यक्रम से भी परिचित कराता है, जो
कुछ ही दिनों में शुरू होगा ।
यदि आपने प्रतिक्रियाशील प्रोग्रामिंग के बारे में कुछ नहीं सुना है, तो सब कुछ क्रम में है। (हालांकि इस मामले में आप कुछ हबपोस्ट्स से चूक गए:
हास्केल ,
आरएक्स फॉर जावास्क्रिप्ट ,
बेकन.जेएस ,
मेटियोर जेएस ।) यह एक तेजी से विकसित होने वाला अनुशासन है जिसमें
संगोष्ठी को घटना-उन्मुख और
अतुल्य के साथ जोड़ा जाता है। प्रतिक्रियाशीलता किसी भी वेब सेवा और वितरित प्रणाली में अंतर्निहित है, और कई उच्च-प्रदर्शन प्रणालियों में कोर के रूप में कार्य करता है जिसमें उच्च स्तर की समानता होती है। संक्षेप में, पाठ्यक्रम के लेखक सक्रिय प्रोग्रामिंग या
अभिनेताओं के बीच आदान-प्रदान किए गए अतुल्यकालिक डेटा धाराओं के साथ एक वितरित राज्य के साथ समानांतर प्रणालियों के लिए कार्यात्मक प्रोग्रामिंग के प्राकृतिक विस्तार (उच्च-क्रम के कार्यों) के रूप में प्रतिक्रियाशील प्रोग्रामिंग पर विचार करने का प्रस्ताव करते
हैं ।
अधिक समझने योग्य शब्दों में, यह
जेट मैनिफेस्टो में वर्णित है, इसका पूरा अनुवाद
हब पर प्रकाशित हुआ है विकिपीडिया के अनुसार,
प्रतिक्रियाशील प्रोग्रामिंग शब्द लंबे समय से मौजूद है और इसमें व्यावहारिक अनुप्रयोग हैं, लेकिन इसे हाल ही में विकास और प्रसार के लिए एक नया प्रोत्साहन मिला, जो कि जेट मैनिफ़ेस्ट के लेखकों के प्रयासों के लिए धन्यवाद -
टाइपसेफ इंक का एक पहल समूह
। टाइपसेफ को कार्यात्मक प्रोग्रामिंग वातावरण में सुंदर
स्काला भाषा के लेखकों और क्रांतिकारी समानांतर
मंच अक्का द्वारा स्थापित कंपनी के रूप में जाना जाता है। अब वे अपनी कंपनी को दुनिया के पहले प्रतिक्रियाशील मंच के निर्माता के रूप में विकसित कर रहे हैं, जिसे नई पीढ़ी विकसित करने के लिए डिज़ाइन किया गया है। उनका प्लेटफ़ॉर्म आपको जटिल उपयोगकर्ता इंटरफ़ेस को जल्दी से विकसित करने की अनुमति देता है और समानांतर कंप्यूटिंग और मल्टीथ्रेडिंग पर अमूर्तता का एक नया स्तर प्रदान करता है, जो पूर्वानुमानित स्केलिंग की गारंटी के लिए अपने अंतर्निहित जोखिमों को कम करता है। यह जेट मैनिफेस्ट के विचारों को व्यवहार में लाता है और डेवलपर को आधुनिक जरूरतों को पूरा करने वाले अनुप्रयोगों को अवधारणा बनाने और बनाने की अनुमति देता है।
आप इस मंच और प्रतिक्रियाशील प्रोग्रामिंग को coursera.org वेबसाइट,
"प्रतिक्रियाशील प्रोग्रामिंग के सिद्धांतों" के बड़े खुले पाठ्यक्रम में भाग लेकर खुद को परिचित कर सकते हैं। यह कोर्स मार्टिन ओडस्की के "रॉक पर पाठ्यक्रम के सिद्धांत के सिद्धांत" का एक निरंतरता है, जिसने 100,000 से अधिक प्रतिभागियों को आकर्षित किया और दुनिया में अपने प्रतिभागियों द्वारा एक बड़े पैमाने पर खुले ऑनलाइन पाठ्यक्रम के सफल समापन के उच्चतम स्तरों में से एक का प्रदर्शन किया। स्काला भाषा के निर्माता, एरिक मेयर के साथ, जिन्होंने .NET के लिए प्रतिक्रियाशील प्रोग्रामिंग के लिए
Rx वातावरण विकसित
किया , और रोलांड कुह्न, वर्तमान में टाइपकाफ़ में अक्का विकास टीम का नेतृत्व कर रहे हैं, नया पाठ्यक्रम सिखाते हैं। पाठ्यक्रम प्रतिक्रियाशील प्रोग्रामिंग के प्रमुख तत्वों को प्रकट करता है और दिखाता है कि कैसे उनका उपयोग स्केलेबिलिटी और फॉल्ट टॉलरेंस के साथ इवेंट-ओरिएंटेड सिस्टम को डिजाइन करने के लिए किया जाता है। प्रशिक्षण सामग्री को छोटे कार्यक्रमों के साथ चित्रित किया गया है और कार्यों के एक सेट के साथ है, जिनमें से प्रत्येक एक सॉफ्टवेयर परियोजना है, कार्यों के सफल समापन के मामले में, प्रतिभागियों को प्रमाण पत्र प्राप्त होता है। पाठ्यक्रम 7 सप्ताह तक रहता है और यह सोमवार 4 नवंबर से शुरू होता है। पाठ्यक्रम की एक विस्तृत रूपरेखा coursera.org वेबसाइट (और मेरे नोट के अंत में भी) पर उपलब्ध है:
www.coursera.org/course/reactive ।
उन लोगों के लिए जो लिंक का पालन नहीं करना चाहते हैं, मैं जेट मैनिफेस्ट की मूल अवधारणाओं की संक्षिप्त प्रस्तुति प्रदान करता हूं। यह
प्रतिक्रियाशील प्रोग्रामिंग क्या है, इस सवाल का जवाब देना चाहिए। प्रकट लेखक हाल के वर्षों में आवेदन आवश्यकताओं में नाटकीय परिवर्तन नोट करते हैं। आज, एप्लिकेशन को हजारों मल्टीकोर प्रोसेसर वाले मोबाइल उपकरणों से क्लाउड क्लस्टर तक किसी भी वातावरण में तैनात किया जाता है। ये वातावरण सॉफ्टवेयर और प्रौद्योगिकी के लिए नई आवश्यकताएं प्रस्तुत करते हैं। पिछली पीढ़ी के आर्किटेक्चर में, प्रबंधित सर्वर और कंटेनरों पर जोर दिया गया था, और मल्टीथ्रेडिंग के माध्यम से अतिरिक्त महंगे उपकरण, मालिकाना समाधान और समानांतर कंप्यूटिंग के कारण स्केलिंग हासिल की गई थी। अब एक नई वास्तुकला विकसित की जा रही है, जिसमें चार सबसे महत्वपूर्ण विशेषताओं को प्रतिष्ठित किया जा सकता है, जो उपयोगकर्ता और कॉर्पोरेट औद्योगिक वातावरण दोनों में तेजी से प्रचलित हैं। इस वास्तुकला के साथ सिस्टम: ईवेंट-चालित (ईवेंट-चालित), स्केलेबल (स्केलेबल), दोष सहिष्णु (लचीला) और एक तेज़ प्रतिक्रिया है, अर्थात्। उत्तरदायी (उत्तरदायी)। यह एक आरामदायक उपयोगकर्ता अनुभव प्रदान करता है जो एक वास्तविक समय का अनुभव देता है और एक सेल्फ-हीलिंग स्केलेबल एप्लिकेशन स्टैक द्वारा समर्थित है, जो मल्टी-कोर और क्लाउड वातावरण में तैनाती के लिए तैयार है। प्रतिक्रियाशील वास्तुकला की चार विशेषताओं में से प्रत्येक पूरे तकनीकी स्टैक पर लागू होती है, जो उन्हें बहु-स्तरीय आर्किटेक्चर में लिंक से अलग करती है। आइए उन पर थोड़ा और विस्तार से विचार करें।

घटना-उन्मुख अनुप्रयोग घटकों के अतुल्यकालिक संचार को मानते हैं और उनके शिथिल युग्मित डिजाइन को लागू करते हैं: संदेश भेजने वाले और प्राप्तकर्ता को एक दूसरे के बारे में या संदेश प्रसारित होने के तरीके के बारे में जानकारी की आवश्यकता नहीं होती है, जो उन्हें संचार की सामग्री पर ध्यान केंद्रित करने की अनुमति देता है। इस तथ्य के अलावा कि शिथिल युग्मित घटक प्रणाली की स्थिरता, विस्तार और विकास में उल्लेखनीय रूप से सुधार करते हैं, उनकी सहभागिता की अतुल्यकालिक और गैर-अवरुद्ध प्रकृति भी संसाधनों का एक महत्वपूर्ण हिस्सा मुक्त कर सकती है, प्रतिक्रिया समय को कम कर सकती है और पारंपरिक अनुप्रयोगों की तुलना में अधिक बैंडविड्थ प्रदान कर सकती है। यह घटना-उन्मुख प्रकृति के लिए धन्यवाद है कि प्रतिक्रियाशील वास्तुकला की शेष विशेषताएं संभव हैं।
प्रतिक्रियाशील प्रोग्रामिंग के संदर्भ में
स्केलेबिलिटी लोड में बदलाव के लिए एक प्रणाली की प्रतिक्रिया है, अर्थात। आवश्यकतानुसार जोड़ने या मुक्त कंप्यूट नोड्स की क्षमता द्वारा प्राप्त लोच। इसकी कम कनेक्टिविटी, अतुल्यकालिक संदेश और घटक स्थान (स्थान पारदर्शिता) की स्वतंत्रता के कारण, आवेदन की तैनाती विधि और टोपोलॉजी तैनाती समय और कॉन्फ़िगरेशन और अनुकूली एल्गोरिदम के विषय का समाधान बन जाती है जो लोड का जवाब देती है। इस प्रकार, एक कंप्यूटर नेटवर्क एक ऐसे अनुप्रयोग का हिस्सा बन जाता है जिसमें शुरू में स्पष्ट रूप से वितरित प्रकृति होती है।
एक प्रतिक्रियाशील वास्तुकला
की गलती सहिष्णुता भी डिजाइन का हिस्सा बन जाती है, और यह इसे पारंपरिक दृष्टिकोण से अलग करती है ताकि सर्वर का समर्थन और विफलता के मामले में नियंत्रण को रोककर निरंतर प्रणाली की उपलब्धता सुनिश्चित हो सके। इस तरह की प्रणाली की स्थिरता व्यक्तिगत घटकों की विफलताओं का सही ढंग से जवाब देने की क्षमता, इन विफलताओं को अलग करने, उन्हें उत्पन्न करने वाले संदेशों के रूप में उनके संदर्भ को बनाए रखने और इन संदेशों को किसी अन्य घटक को प्रेषित करने के लिए है जो यह तय कर सकती है कि त्रुटि को कैसे संभालना है। यह दृष्टिकोण आपको आवेदन के व्यापारिक तर्क को साफ रखने की अनुमति देता है, इससे विफलता प्रसंस्करण तर्क को अलग करता है, जो कि सिस्टम का उपयोग करके विफलताओं को पंजीकृत करने, अलग करने और प्रसंस्करण के लिए एक स्पष्ट घोषणात्मक रूप में तैयार किया जाता है। ऐसी स्व-उपचार प्रणालियों का निर्माण करने के लिए, घटकों को पदानुक्रम से आदेश दिया जाता है, और समस्या उस स्तर तक बढ़ जाती है जो इसे हल कर सकती है।
और अंत में,
जवाबदेही प्रणाली की क्षमता है कि उपयोगकर्ता लोड और विफलताओं की परवाह किए बिना उपयोगकर्ता के प्रभाव का जवाब देता है, ऐसे अनुप्रयोग उपयोगकर्ता को बातचीत में संलग्न करते हैं, सिस्टम के साथ घनिष्ठ संबंध की भावना पैदा करते हैं और वर्तमान कार्यों को करने के लिए पर्याप्त उपकरण। जवाबदेही न केवल वास्तविक समय प्रणालियों में प्रासंगिक है, बल्कि अनुप्रयोगों की एक विस्तृत श्रृंखला के लिए भी आवश्यक है। इसके अलावा, एक प्रणाली जो विफलता के समय भी जल्दी से प्रतिक्रिया करने में असमर्थ है, उसे दोष सहिष्णु नहीं माना जा सकता है। अवलोकन मॉडल, ईवेंट स्ट्रीम और स्टेटफुल क्लाइंट का उपयोग करके जवाबदेही हासिल की जाती है। अवलोकन किए गए मॉडल घटनाओं को उत्पन्न करते हैं जब उनका राज्य बदलता है और उपयोगकर्ताओं और प्रणालियों के बीच वास्तविक समय की बातचीत प्रदान करता है, और घटना प्रवाह अमूर्तता प्रदान करता है, जिस पर यह बातचीत गैर-अवरुद्ध अतुल्यकालिक परिवर्तनों और संचारों द्वारा निर्मित होती है।
इस प्रकार, प्रतिक्रियाशील अनुप्रयोग आधुनिक सॉफ्टवेयर विकास के कार्यों की एक विस्तृत श्रृंखला को हल करने के लिए एक संतुलित दृष्टिकोण का प्रतिनिधित्व करते हैं। घटना-चालित आधार पर निर्मित, वे मापनीयता और लचीलेपन की गारंटी के लिए आवश्यक उपकरण प्रदान करते हैं और पूर्ण-उत्तरदायी उत्तरदायी उपयोगकर्ता अनुभव का समर्थन करते हैं। लेखक एक प्रतिक्रियाशील प्रकट के सिद्धांतों का पालन करने के लिए सिस्टम की बढ़ती संख्या की उम्मीद करते हैं।
परिशिष्ट में, मैं अनुवाद के बिना पाठ्यक्रम योजना उद्धृत करता हूं। बस अगर आप इस जगह पर पढ़ते हैं, और आप अभी भी रुचि रखते हैं।
सप्ताह 1 : कार्यात्मक प्रोग्रामिंग के सिद्धांतों की समीक्षा: प्रतिस्थापन मॉडल, फॉर-एक्सप्रेशन और वे कैसे मोनड्स से संबंधित हैं। यादृच्छिक भाव उत्पन्न करने वालों के लिए: भावों के नए कार्यान्वयन का परिचय देता है। दिखाता है कि इसका उपयोग यादृच्छिक परीक्षण में कैसे किया जा सकता है और यह इस विचार को लागू करने वाले उपकरण, स्कैलेकैच का अवलोकन देता है।
सप्ताह 2 : कार्यात्मक प्रोग्रामिंग और उत्परिवर्तनीय स्थिति। किसी वस्तु को परस्पर क्या बनाता है? यह प्रतिस्थापन मॉडल को कैसे प्रभावित करता है। विस्तारित उदाहरण: डिजिटल सर्किट सिमुलेशन
सप्ताह 3 : वायदा। ठोस वाक्यविन्यास के रूप में भावों के साथ एक और मोनाद के रूप में वायदा पेश करता है। दिखाता है कि थ्रेड ब्लॉकिंग से बचने के लिए फ्यूचर की रचना कैसे की जा सकती है। क्रॉस-थ्रेड त्रुटि हैंडलिंग पर चर्चा करता है।
सप्ताह 4 : प्रतिक्रियाशील धारा प्रसंस्करण। धाराओं पर प्रतिक्रियात्मक संगणना के लिए वायदा को सामान्य बनाना। स्ट्रीम ऑपरेटर।
सप्ताह 5 : अभिनेता। अभिनेता मॉडल का परिचय देता है, संगति की असंगत इकाइयों के रूप में अभिनेताओं, अतुल्यकालिक संदेश गुजर, अलग संदेश वितरण शब्दार्थ (कम से कम एक बार, कम से कम एक बार, बिल्कुल एक बार) और अंतिम स्थिरता पर चर्चा करता है।
सप्ताह 6 : पर्यवेक्षण। विफलता, पदानुक्रमित विफलता से निपटने, त्रुटि कर्नेल पैटर्न, जीवन चक्र की निगरानी का परिचय देता है, क्षणिक और लगातार स्थिति पर चर्चा करता है।
सप्ताह 7 : बातचीत पैटर्न। प्रवाह नियंत्रण के लिए अभिनेताओं और पैटर्न के बीच संवादात्मक स्थिति के प्रबंधन पर चर्चा करता है, लचीलेपन या लोड संतुलन के लिए अभिनेताओं के पूल के लिए संदेशों का मार्ग, विश्वसनीय वितरण प्राप्त करने के लिए रिसेप्शन की प्राप्ति।