एक चीज जो इस प्रश्न के लिए वास्तव में महत्वपूर्ण है (और उत्तर) निम्नलिखित है: नरक क्या है कार्यात्मक प्रोग्रामिंग, और इसके सबसे महत्वपूर्ण गुण क्या हैं। मैं इसके बारे में अपना विचार देने की कोशिश करूंगा:
कार्यात्मक प्रोग्रामिंग एक व्हाइटबोर्ड पर गणित लिखने की तरह है। जब आप एक व्हाइटबोर्ड पर समीकरण लिखते हैं, तो आप एक निष्पादन आदेश के बारे में नहीं सोचते हैं। वहाँ (आम तौर पर) कोई उत्परिवर्तन नहीं है। आप एक दिन बाद वापस नहीं आते हैं और इसे देखते हैं, और जब आप फिर से गणना करते हैं, तो आपको एक अलग परिणाम मिलता है (या हो सकता है, अगर आपके पास कुछ ताजा कॉफी है :))। असल में, बोर्ड पर क्या है, और इसका जवाब पहले से ही था जब आप चीजों को लिखना शुरू करते हैं, तो आपको अभी तक महसूस नहीं हुआ है कि यह अभी तक क्या है।
कार्यात्मक प्रोग्रामिंग बहुत कुछ ऐसा है; आप चीजों को नहीं बदलते हैं, आप सिर्फ समीकरण का मूल्यांकन करते हैं (या इस मामले में, "प्रोग्राम") और यह पता लगाएं कि उत्तर क्या है। कार्यक्रम अभी भी है, अनमॉडिफाइड। डेटा के साथ भी ऐसा ही है।
मैं कार्यात्मक प्रोग्रामिंग की सबसे महत्वपूर्ण विशेषताओं के रूप में निम्नलिखित को रैंक करूंगा: ए) संदर्भात्मक पारदर्शिता - यदि आप किसी अन्य समय और स्थान पर एक ही कथन का मूल्यांकन करते हैं, लेकिन समान चर मूल्यों के साथ, इसका मतलब अभी भी समान होगा। बी) कोई साइड इफेक्ट नहीं - जब तक आप व्हाइटबोर्ड को घूरते नहीं हैं, तो एक और आदमी जो दूसरे व्हाइटबोर्ड को देख रहा है, वह दुर्घटना परिवर्तन नहीं करेगा। c) फ़ंक्शन भी मान हैं। जिसे चारों ओर से पारित किया जा सकता है और अन्य चर के साथ या उसके साथ लागू किया जा सकता है। d) फंक्शन कंपोजिशन, आप h = g · f कर सकते हैं और इस प्रकार एक नए फंक्शन h (..) को परिभाषित करते हैं, जो कि कॉलिंग g (f (..)) के बराबर है।
यह सूची मेरे प्राथमिकता वाले क्रम में है, इसलिए संदर्भात्मक पारदर्शिता सबसे महत्वपूर्ण है, जिसके बाद कोई साइड इफेक्ट नहीं है।
अब, यदि आप अजगर के माध्यम से जाते हैं और जांचते हैं कि भाषा और पुस्तकालय कितनी अच्छी तरह से समर्थन करते हैं, और गारंटी देते हैं, तो ये पहलू - तो आप अपने स्वयं के प्रश्न का उत्तर देने के तरीके पर अच्छी तरह से हैं।