कार्यात्मक प्रोग्रामिंग मेरे लिए एक अजीब जानवर है। मैंने एफ # और हास्केल सीखा, कुछ सरल कार्यक्रम लिखे और उनका उपयोग करके प्यार किया, लेकिन कभी "रहस्योद्घाटन का फ्लैश" नहीं था जो कुछ लोग बात करते हैं। लेकिन धीरे-धीरे, मैंने देखा कि अधिक से अधिक मैं कोड लिख रहा था, जो अपरिवर्तनीय होने के लिए था, कार्यों को और अधिक, छोटे कार्यों में तोड़ रहा था, और प्रतिनिधियों को बहुत अधिक उपयोग करने की कोशिश कर रहा था। इसकी एक बात यह है कि, यदि आप इसे पसंद करते हैं, तो आपके काम में कमी आती है क्योंकि उन तकनीकों का मूल्य स्वयं स्पष्ट है।
अब, व्यावहारिक रूप से प्रशिक्षण के लिए: मैं पाता हूं कि दो अवधारणाएं वास्तव में मेरे लिए एक शैली के रूप में कार्यात्मक प्रोग्रामिंग पर क्लिक करती हैं।
सबसे पहले, एफपी शैली डेटा की संरचना पर आधारित है, न कि ओओपी में रचना के रूप में। मैंने टाइप सी में लिस्ट की तरह कुछ को देखा # एक टाइपिंग-ट्रिक लिस्ट जनरेट करने के लिए एक चतुर ट्रिक के रूप में, कुछ ऐसा जिसने टाइप (स्ट्रिंग) को दूसरे टाइप (लिस्ट) में बनाया। एफपी सीखने के बाद, मैं अब मोनाड्स की तरह जेनरिक को देखता हूं। सूची एक संरचित रूप है जो कोड ले सकता है, और यह तारों को सजाता है।
दूसरा, और शायद C # / ASP प्रोग्रामर के लिए अधिक उपयोगी है, यह विचार है कि FP पुनरावृत्ति और पुनरावृत्ति पर काम करता है, जबकि OOP उत्परिवर्तन और लूपिंग पर काम करता है। मैं अब एक प्रकार का एफपी के रूप में एएसपी पृष्ठ जीवनचक्र के बारे में सोचता हूं: प्रत्येक अनुरोध को पूरे जीवन-चक्र के माध्यम से खरोंच से संसाधित किया जाता है, इसलिए संपूर्ण पृष्ठ प्रभाव में होता है, एक बड़ा धीरे-धीरे होने वाला कार्यक्रम। यदि आप उस धारणा को संकुचित कर सकते हैं, तो आपको एक बेहतर विचार मिलता है कि कैसे एक अनिवार्य कार्यक्रम को उन कार्यों के छोरों के आसपास संरचित किया जा सकता है जो डेटा में लेते हैं, उस पर काम करते हैं, और पुराने को संशोधित करने के बजाय नया डेटा वापस करते हैं।
कम से कम मेरे लिए, कम से कम मेरे लिए, इस दृष्टिकोण से उबरने के लिए कि डूबने वाली भावना है कि आप संसाधनों का टन बर्बाद कर रहे हैं जब परस्पर वस्तुओं का उपयोग करके स्मृति की एक टन की बचत होगी। GC में हम भरोसा करते हैं, और मुझे सिर्फ प्रदर्शन की चिंताओं को दूर करने के लिए सीखना था जब तक कि मैं वास्तव में कार्यक्रम को नहीं देखता और सत्यापित करता कि क्या कोई भी था, और यदि ऐसा है तो प्रोफाइलर का उपयोग करने के लिए देखें कि समस्याएं कहां थीं।