मुझे वास्तव में प्रक्रियात्मक और कार्यात्मक प्रोग्रामिंग प्रतिमानों के बीच के अंतर को समझने में कठिन समय हो रहा है ।
यहां कार्यात्मक प्रोग्रामिंग पर विकिपीडिया प्रविष्टि से पहले दो पैराग्राफ हैं :
कंप्यूटर विज्ञान में, कार्यात्मक प्रोग्रामिंग एक प्रोग्रामिंग प्रतिमान है जो गणना को गणितीय कार्यों के मूल्यांकन के रूप में मानता है और राज्य और पारस्परिक डेटा से बचा जाता है। यह फ़ंक्शन के अनुप्रयोग पर जोर देता है, अनिवार्य प्रोग्रामिंग शैली के विपरीत, जो राज्य में परिवर्तनों पर जोर देता है। फंक्शनल प्रोग्रामिंग की जड़ें लैम्ब्डा कैलकुलस में हैं, जो फंक्शन डेफिनिशन, फंक्शन एप्लिकेशन और रिकर्सन की जांच के लिए 1930 के दशक में विकसित एक औपचारिक प्रणाली है। कई कार्यात्मक प्रोग्रामिंग भाषाओं को लंबोदा पथरी पर विस्तार के रूप में देखा जा सकता है।
व्यावहारिक रूप से, एक गणितीय फ़ंक्शन और अनिवार्य प्रोग्रामिंग में उपयोग किए जाने वाले "फ़ंक्शन" की धारणा के बीच का अंतर यह है कि अनिवार्य कार्यों के दुष्प्रभाव हो सकते हैं, जिससे कार्यक्रम की स्थिति बदल जाती है। इस वजह से उनके पास संदर्भात्मक पारदर्शिता का अभाव है, अर्थात एक ही भाषा की अभिव्यक्ति अलग-अलग समय में अलग-अलग मूल्यों के परिणामस्वरूप निष्पादित कार्यक्रम की स्थिति के आधार पर हो सकती है। इसके विपरीत, कार्यात्मक कोड में, फ़ंक्शन का आउटपुट मान केवल उन तर्कों पर निर्भर करता है जो फ़ंक्शन के लिए इनपुट होते हैं, इसलिए किसी फ़ंक्शन
f
को किसी मान के लिए समान मान के साथ दो बार कॉलx
करने से परिणाम समान होगाf(x)
दोनों समय। साइड इफेक्ट्स को खत्म करने से एक कार्यक्रम के व्यवहार को समझना और भविष्यवाणी करना बहुत आसान हो सकता है, जो कार्यात्मक प्रोग्रामिंग के विकास के लिए महत्वपूर्ण प्रेरणाओं में से एक है।
पैरा 2 में जहां यह कहता है
इसके विपरीत, कार्यात्मक कोड में, एक फ़ंक्शन का आउटपुट मान केवल उन तर्कों पर निर्भर करता है जो फ़ंक्शन के लिए इनपुट हैं, इसलिए किसी फ़ंक्शन
f
को किसी तर्क के लिए समान मान के साथ दो बार कॉलx
करने सेf(x)
दोनों बार एक ही परिणाम उत्पन्न होगा ।
प्रक्रियात्मक प्रोग्रामिंग के लिए वही सटीक मामला नहीं है?
एक प्रक्रियात्मक बनाम कार्यात्मक के लिए क्या देखना चाहिए जो बाहर खड़ा है?