5 कार्यात्मक प्रोग्रामिंग भाषाएँ आपको पता होनी चाहिए
विज्ञापन
यदि आप इंटरनेट पर प्रोग्रामिंग के रुझान को पढ़ने में किसी भी समय खर्च करते हैं, तो आपने कार्यात्मक प्रोग्रामिंग के बारे में सुना होगा। इस शब्द को काफी बार लिया जाता है, लेकिन इसका क्या मतलब है?
यहां तक कि अगर आप जानते हैं कि कार्यात्मक प्रोग्रामिंग क्या है, तो आप इसके बारे में अस्पष्ट हो सकते हैं कि कौन सी भाषाएं इसके लिए सबसे उपयुक्त हैं। आखिरकार, सभी प्रोग्रामिंग भाषाओं को समान नहीं बनाया जाता है। जब आप कई भाषाओं में कार्यात्मक प्रोग्रामिंग प्रतिमान लागू कर सकते हैं, तब भी कुछ ऐसे हैं जहाँ आप बहुत अधिक आरामदायक महसूस करेंगे।
कार्यात्मक प्रोग्रामिंग क्या है?
यदि आपके पास गणित की पृष्ठभूमि है, तो आपके पास कार्यात्मक प्रोग्रामिंग पर एक हेड स्टार्ट है। ऐसा इसलिए है क्योंकि कार्यात्मक प्रोग्रामिंग प्रतिमान गणितीय कार्यों की तरह कंप्यूटिंग का व्यवहार करता है। यदि आपके पास गणितीय पृष्ठभूमि नहीं है, तो यह आपको भ्रमित महसूस कर सकता है।
असल में, कार्यात्मक प्रोग्रामिंग कार्यों और डेटा को अपरिवर्तनीय मानता है। आप किसी फ़ंक्शन में डेटा पास करते हैं, और यह आम तौर पर उस डेटा को बदल देता है या किसी अन्य प्रकार का डेटा। कार्यात्मक प्रोग्रामिंग में, फ़ंक्शन को मूल डेटा या प्रोग्राम स्थिति को कभी नहीं बदलना चाहिए।
यूनिक्स दर्शन की समानता है कि प्रत्येक कार्यक्रम को एक काम अच्छी तरह से करना चाहिए। एक फ़ंक्शन को आपके प्रोग्राम के विभिन्न हिस्सों को नहीं छूना चाहिए। इसके बजाय, उसे इसका इनपुट लेना चाहिए और आपको एक आउटपुट देना चाहिए।
आदर्श रूप से, कार्यात्मक प्रोग्रामिंग में संभव होने पर फ़ंक्शन शुद्ध होना चाहिए। इसका मतलब है कि समान इनपुट को देखते हुए, फ़ंक्शन का आउटपुट हमेशा समान रहेगा।
कार्यात्मक बनाम ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग
यह ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग जैसी किसी चीज़ से नाटकीय प्रस्थान है। ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में, आपके पास अक्सर डेटा या स्थिति को बदलने के लिए समर्पित विभिन्न तरीकों के साथ एक आधार ऑब्जेक्ट होता है जो उस ऑब्जेक्ट का हिस्सा होते हैं। यदि स्पष्ट रूप से नहीं कहा गया है तो एक विधि डेटा या स्थिति को भी बदल सकती है।
व्यावहारिक कार्यक्रमों में, कभी-कभी यह समझ में आता है। उस ने कहा, यह कार्यक्रमों को बनाए रखने के लिए कठिन बना सकता है, क्योंकि यह हमेशा स्पष्ट नहीं होता है कि राज्य या डेटा में क्या परिवर्तन हो रहा है। कार्यात्मक प्रोग्रामिंग मूल रूप से शैक्षणिक वातावरण में उपयोग किया गया था, लेकिन इन प्रकार की समस्याओं को रोकने में भी मदद कर सकता है।
1. जावास्क्रिप्ट
कुछ प्रोग्रामिंग भाषाएं कार्यात्मक प्रोग्रामिंग की अनुमति देती हैं जबकि अन्य या तो इसे प्रोत्साहित करते हैं या लागू करते हैं। जावास्क्रिप्ट पहली श्रेणी में आती है। जब आप भाषा में कार्यात्मक प्रोग्रामिंग प्रतिमानों का उपयोग कर सकते हैं, तो आप आसानी से ऑब्जेक्ट-ओरिएंटेड दृष्टिकोण का उपयोग कर सकते हैं।
उस ने कहा, जावास्क्रिप्ट में निर्मित बहुत सारे कार्यात्मक प्रोग्रामिंग प्रतिमान हैं। उदाहरण के लिए, उच्च-क्रम के कार्यों को लें। ये ऐसे कार्य हैं जो अन्य कार्यों को तर्क के रूप में ले सकते हैं।
जावास्क्रिप्ट में कई कार्य हैं जो map()
, reduce()
, filter()
, और अन्य, जैसे सभी उच्च-क्रम वाले कार्य हैं। यह आपको एक सरणी के साथ सभी तरह की चीजों को जल्दी से करने के लिए उन्हें एक साथ श्रृंखला देता है।
जबकि शुरुआती जावास्क्रिप्ट में परिवर्तनशीलता के साथ कुछ समस्याएं थीं, ECMAScript मानक के नए संस्करण फिक्स प्रदान करते हैं। चर को परिभाषित करने के लिए कैच-ऑल var
कीवर्ड के बजाय, अब आपके पास const
और let
। जैसा कि नाम से ही स्पष्ट है, पहला आपको स्थिरांक को परिभाषित करने देता है। दूसरे, let
, उस फ़ंक्शन के लिए एक चर के दायरे को सीमित करता है जिसमें यह घोषित किया गया है।
2. अजगर
जावास्क्रिप्ट की तरह, पायथन एक सामान्यीकृत भाषा है जिसके साथ आप किसी भी संख्या में प्रोग्रामिंग प्रतिमानों का उपयोग कर सकते हैं। पायथन के अपने कारण हो सकते हैं 4 कारण क्यों अजगर आपके लिए प्रोग्रामिंग भाषा नहीं है 4 कारण क्यों पायथन आपके लिए प्रोग्रामिंग भाषा नहीं है पायथन प्रोग्रामिंग भाषा बेहद लोकप्रिय है, लेकिन यहां कुछ कारण हैं जिससे आप पायथन से बचना चाहते हैं । और पढ़ें, लेकिन कार्यात्मक प्रोग्रामिंग उनमें से एक नहीं है। यहां तक कि आधिकारिक पायथन प्रलेखन में कार्यात्मक प्रोग्रामिंग के लिए एक परिचय है।
शुरू करने के लिए, आप एक ही map()
, filter()
, reduce()
, और इसी तरह के अन्य कार्यों को बिल्ट-इन से ऊपर पाएंगे। जावास्क्रिप्ट के साथ, ये उच्च-क्रम के कार्य हैं क्योंकि वे अन्य कार्यों को तर्क के रूप में लेते हैं। पायथन में, कार्यात्मक प्रोग्रामिंग में lambda
कीवर्ड के रूप में एक फायदा है।
आप कुछ तरीकों से लैम्ब्डा के भावों का उपयोग कर सकते हैं। इसका उपयोग करने का एक तरीका सरल कार्यों के लिए आशुलिपि के रूप में है। जब किसी चर को सौंपा जाता है, तो आप लैम्बडा एक्सप्रेशन को बिल्कुल वैसा ही कह सकते हैं जैसा कि आप एक मानक पायथन फ़ंक्शन को कहते हैं। लैंबडा एक्सप्रेशन का असली फायदा तब मिलता है जब आप उन्हें अनाम फ़ंक्शंस के रूप में उपयोग करते हैं।
बेनामी फ़ंक्शन इस सूची में जावास्क्रिप्ट और अन्य भाषाओं में भी काम करते हैं। वे विशेष रूप से काम में आते हैं जब उच्च-क्रम वाले कार्यों के साथ उपयोग किया जाता है क्योंकि आप उन्हें मौके पर परिभाषित कर सकते हैं। अनाम फ़ंक्शंस के बिना, आपको bespoke फ़ंक्शंस के रूप में सरल जोड़ को भी पूर्व-परिभाषित करना होगा।
3. लौंग
जावास्क्रिप्ट और पायथन के विपरीत, क्लोजर वास्तव में एक घरेलू नाम नहीं हो सकता है, यहां तक कि प्रोग्रामर के बीच भी। यदि आप परिचित नहीं हैं, तो क्लोजर लिस्प प्रोग्रामिंग भाषा की एक बोली है, जो 1950 के दशक के उत्तरार्ध में है। यह अपने साथ बहुत ही विशिष्ट तरीके से काम करता है जो कार्यात्मक प्रोग्रामिंग के लिए एकदम सही होता है।
अन्य लिस्प बोलियों की तरह, क्लोजर कोड को डेटा के रूप में मानता है। इसका मतलब है कि कोड प्रभावी रूप से खुद को बदल सकता है। अन्य लिस्प बोलियों के विपरीत, क्लोजर जावा प्लेटफॉर्म पर चलता है और इसे जेवीएम बायटेकोड के लिए संकलित किया गया है। इसका मतलब यह है कि यह जावा पुस्तकालयों के साथ काम कर सकता है, चाहे वे क्लोजर में लिखे गए थे या नहीं।
इस सूची में पिछली भाषाओं के विपरीत, क्लोजर जमीन से एक कार्यात्मक प्रोग्रामिंग भाषा है। इसका मतलब है कि यह जहां कहीं भी संभव है, विशेष रूप से डेटा संरचनाओं के भीतर अपरिवर्तनीयता की वकालत करता है।
क्लजुरे को उम्मीद नहीं है कि सभी कार्यक्रम गणितीय रूप से "सिद्ध" होंगे, लेकिन जहाँ भी संभव हो शुद्ध कार्यों का उपयोग करने के लिए प्रोत्साहित करते हैं।
4. एल्म
इस सूची में नई भाषाओं में से एक, एल्म एक शुद्ध रूप से कार्यात्मक भाषा है जिसे शुरू में 2012 में इवान कज़्प्लिकि द्वारा डिज़ाइन किया गया था। भाषा ने वेब डेवलपर्स के बीच विशेष रूप से उपयोगकर्ता इंटरफेस बनाने के लिए लोकप्रियता हासिल की है।
इस सूची में प्रत्येक पूर्व प्रविष्टि के विपरीत, एल्म स्थैतिक प्रकार की जाँच का उपयोग करता है। यह संकलित समय में पकड़े गए त्रुटियों के साथ, कोई रनटाइम अपवाद सुनिश्चित करने में मदद करता है। इसका मतलब उपयोगकर्ताओं के लिए कम दिखाई देने वाली त्रुटियां हैं, जो एक प्रमुख प्लस है।
एल्म कंपाइलर HTML, CSS और जावास्क्रिप्ट को लक्षित करता है। उसी तरह जिस तरह आप जावा पर चलने वाले प्रोग्राम लिखने के लिए क्लोजर का उपयोग कर सकते हैं, आप एल्म में जावास्क्रिप्ट पुस्तकालयों का उपयोग करने वाले ऐप लिख सकते हैं।
एल्म और अन्य भाषाओं के बीच एक बड़ा अंतर यह है कि आपको जेनेरिक filter()
, map()
और इसी तरह के फ़ंक्शंस नहीं मिलेंगे। इसके बजाय, इन्हें List.map
या Dict.map
जैसे डेटा प्रकार द्वारा परिभाषित किया गया है।
5. हास्केल
हास्केल एक अन्य सांख्यिकीय रूप से टाइप की गई, विशुद्ध रूप से कार्यात्मक भाषा है। एल्म के विपरीत, हास्केल कुछ समय के लिए आसपास रहा है। भाषा का पहला संस्करण 1990 में डिजाइन किया गया था। नवीनतम मानक हास्केल 2010 है, जबकि अगला संस्करण 2020 के लिए योजनाबद्ध है।
जैसा कि हमने पहले ही पता लगाया है, हास्केल के शुद्ध रूप से कार्यात्मक प्रकृति का मतलब है कि डिजाइन द्वारा, कार्यों के दुष्प्रभाव नहीं होने चाहिए। यह अकादमिक में कार्यात्मक प्रोग्रामिंग की जड़ों के बावजूद वास्तविक दुनिया की समस्याओं को हल करने के लिए अच्छी तरह से अनुकूल है।
मुख्यधारा की लोकप्रियता में कमी के बावजूद, हास्केल को कुछ व्यापक रूप से इस्तेमाल की जाने वाली परियोजनाओं में नियोजित किया गया है। Xmonad विंडो मैनेजर पूरी तरह से हास्केल में लिखा गया है। पंडोक, जो विभिन्न प्रकारों के मार्कअप को अन्य प्रारूपों से परिवर्तित करता है और भाषा का उपयोग भी करता है।
मानक map()
, filter()
, reduce()
, और अन्य उच्च-क्रम के कार्य मौजूद हैं, जो आपको जावास्क्रिप्ट या पायथन से हास्केल तक की अवधारणाएं लेने देना चाहिए। यदि आप भाषा के बारे में अधिक जानना चाहते हैं, तो लर्न यू हास्केल फॉर ग्रेट गुड एक लोकप्रिय शुरुआती बिंदु है।
क्या आप प्रोग्रामिंग के लिए नए हैं?
उपरोक्त शब्दों और भाषाओं में से कुछ कुछ गूढ़ लग सकते हैं यदि आप अभी तक एक अनुभवी कोडर नहीं हैं। यह अच्छा है, जैसा कि आप नहीं जानते कि एक बेहतर सीखने वाला बनने में पहला कदम क्या है।
ऊपर सूचीबद्ध कुछ भाषाएं दूसरों की तुलना में शुरुआती लोगों के लिए बेहतर हैं। शुरुआती के लिए सर्वश्रेष्ठ प्रोग्रामिंग भाषाओं की हमारी सूची पर एक नज़र डालें। आप देखेंगे कि दो सूचियों के बीच कुछ क्रॉसओवर है।
और यदि आप रुचि रखते हैं, तो एक साधारण PHP वेबसाइट बनाने के लिए हमारी मार्गदर्शिका देखें। एक साधारण PHP वेबसाइट कैसे बनाएं एक सरल PHP वेबसाइट कैसे बनाएं एक वेबसाइट बनाना चाहते हैं, लेकिन यह नहीं जानते कि कहां से शुरू करें? एक बेसिक PHP वेबसाइट बनाने से आप वेब डेवलपमेंट की राह पर चले जाएंगे। अधिक पढ़ें ।
इसके बारे में अधिक जानें: कार्यात्मक प्रोग्रामिंग, जावास्क्रिप्ट, पायथन।