अपने विकास के वातावरण में कार्यात्मक प्रोग्रामिंग का परिचय [बंद]


15

यह एक लंबी कहानी है लेकिन मैं इसे सर्वश्रेष्ठ रूप में प्रस्तुत करने की कोशिश करूंगा। हम एक .NET शॉप हैं जो विभिन्न प्रकार के फंडों के लिए सॉफ्टवेयर लिखते हैं। उदाहरण के लिए, हम स्वास्थ्य दावा प्रबंधन सॉफ्टवेयर, पेंशन प्रबंधन सॉफ्टवेयर, 401 (के) सॉफ्टवेयर और कुछ अन्य वित्तीय प्रकार की चीजें लिखते हैं।

अब हम एक नए दायरे में प्रवेश कर रहे हैं: डेरिवेटिव और क्वांटिटेटिव एनालिटिक्स प्रकार का काम, जो बहुत ही रोमांचक लगता है। यह कुछ ऐसा है जो मुझे बताया गया है कि अगले 8-12 महीनों में नीचे आ रहा है।

अब, मैंने अपने दम पर कुछ कार्यात्मक प्रोग्रामिंग सीख ली है, मुख्य रूप से इस पुस्तक के माध्यम से विभिन्न भाषाओं में सिर्फ सतही झलक है, लेकिन वास्तव में कभी भी इसे गहराई से नहीं खोदा। अब, क्योंकि हम एक .NET शॉप हैं, मैं सोच रहा था कि F # एक अच्छा विकल्प हो सकता है, क्योंकि हम संभवतः कुछ .NET लाइब्रेरी और मौजूदा नॉलेज का लाभ उठा सकते हैं।

मेरा सवाल है, कहाँ शुरू करने के लिए? यदि मैं हास्केल, एर्लांग, स्काला, एफ #, आदि के साथ जाना चाहिए, तो मुझे यह पता लगाने में बहुत मुश्किल समय हो रहा है कि वे सभी बहुत ही रोचक और सक्षम हैं और बहुत स्पष्ट रूप से यह एक अच्छा मौका हो सकता है ताकि माइक्रोसॉफ्ट निर्भर हो।

क्या किसी के पास भी ऐसी ही स्थिति है? यदि ऐसा है, तो आपके अनुभव ने छलांग को कार्यात्मक बना दिया था और आपने क्या चुना और क्यों? मुझे पता है कि यह एक बड़ा सवाल है, लेकिन मैं ऐसे किसी भी डेवलपर्स को नहीं जानता, जो अभी कार्यात्मक तरीकों का उपयोग कर रहा है, इसलिए मेरे पास Googling के अलावा अन्य जगहों पर लगातार घूमने और सर्वोत्तम कार्यात्मक भाषा पर हर जगह लौ युद्धों को खोजने का कोई और तरीका नहीं है।


अनुशंसित पढ़ने: कहाँ से शुरू करने के लिए
gnat

जवाबों:


14

प्रोटोटाइप, प्रोटोटाइप, प्रोटोटाइप! व्यवसाय की कार्यक्षमता का एक बिट लें जो आपको लगता है कि कार्यात्मक प्रोग्रामिंग की आवश्यकता है और विभिन्न भाषाओं को आज़माएं और देखें कि क्या वे वास्तव में आपको लाभ और अंतर-योग्यता प्रदान करते हैं जिन्हें आप खोज रहे हैं।


अच्छी सलाह और मैंने इसे ध्यान दिया होगा, वास्तव में मैं अभी एक एर्लैंग स्थापित कर रहा हूं ताकि इसे जाना जा सके।
नोडी द नोड गाइ

10

पहला सवाल जो आपको सच में जवाब देने की आवश्यकता है, वह यह है कि आप एक कार्यात्मक भाषा का उपयोग करने पर विचार क्यों कर रहे हैं। यदि आप स्विच के लिए एक व्यावसायिक कारण को सही नहीं ठहरा सकते हैं तो आपको ऐसा नहीं करना चाहिए। दूसरे शब्दों में, अपने काम के माहौल में एक नई रूपरेखा, भाषा या अन्य नई तकनीक को केवल इसलिए पेश करना चाहते हैं क्योंकि आप इसे सीखना चाहते हैं या क्योंकि यह लगता है कि अगली "शांत" चीज निश्चित रूप से एक गलती है। इसलिए आपको पहले खुद से सच्चाई से पूछने की जरूरत है कि प्रेरणा क्या है।

यदि आप वास्तव में महसूस करते हैं कि आपको किसी विशेष समस्या को हल करने के लिए एक कार्यात्मक भाषा की आवश्यकता है, और ज्यादातर मुख्यधारा की कार्यात्मक भाषाओं को संभालने से आपकी आवश्यकताओं को पूरा किया जाएगा, तो मैं सबसे परिपक्व और सबसे बड़े उपयोगकर्ता समुदाय के साथ जाऊंगा। एरलंग एक अच्छा विकल्प है और इन दोनों आवश्यकताओं को पूरा करता है, हालांकि, विशुद्ध रूप से एमएस / .NET वातावरण में, मैं एफ # का उपयोग करके समझ सकता हूं।


2
@ennukiller - मैं निश्चित रूप से देख सकता हूं कि कार्यात्मक प्रोग्रामिंग हमारे लिए एक अच्छा विकल्प होगा और मैं झूठ नहीं बोलने जा रहा हूं - मैं इसे सिर्फ किताबी बौद्धिक उत्तेजना प्रदान करने के लिए उपयोग करना पसंद करूंगा। हम बड़े पैमाने पर गणना करने जा रहे हैं और मैं मल्टी-कोर का लाभ उठाना चाहता हूं। इसके अलावा, यह जरूरी है कि हर गणितीय कार्य सही साबित हो, मैं समझता हूं कि यह कार्यात्मक के साथ आसान हो सकता है।
नोडी द नूड गाइ

2
यदि आपको प्रमाणों की आवश्यकता है, तो शुद्ध कार्यात्मक प्रोग्रामिंग सबसे अच्छा है। यहाँ कुछ सुझाव कार्यात्मक भाषाओं के कार्यात्मक ऐड-ऑन के लिए हैं - वे अधिक परिचित हो सकते हैं, लेकिन आपको सही कोड नहीं देंगे। साइड इफेक्ट्स की उपस्थिति में, आप इस तथ्य का उपयोग नहीं कर सकते हैं कि x = x ('संदर्भात्मक पारदर्शिता'), और आपको यह साबित करना होगा कि कोड में बाद में x अभी भी पहले जैसा ही मान रखता है। कुछ भाषाओं में, उदाहरण के लिए, ऐसा हो सकता है कि जिसके x:=3; y:=10; x:=add(x,x);परिणामस्वरूप परिणाम x6 नहीं है और yजो 10. नहीं है। इस संदर्भ में अपने कार्यों को सही साबित करने के लिए अव्यवहारिक है।
एंड्रयूसी

9

मैं किसी मौजूदा .Net कोडबेस वाली दुकान के लिए एफ # से दृढ़ता से सहमत हूं, क्योंकि मैं एक मौजूदा जावा कोडबेस वाली दुकान के लिए स्काला के साथ दृढ़ता से सहमत हूं।

फंक्शनल प्रोग्रामिंग किसी भी अन्य की तरह एक उपकरण है। अच्छी तरह से इस्तेमाल किया, और आप पहले से ही कोड विकसित कर रहे हैं के साथ एकीकृत, यह आपके कोड क्या कर रहा है के बारे में कारण के लिए यह आसान बनाने के द्वारा आप और अधिक उत्पादक बना सकते हैं। भाषाओं को बदलना नि: शुल्क है, हालांकि, इसलिए आपका सबसे अच्छा दांव एक समाधान है जो आपको संक्रमण में यथासंभव लंबे समय तक अपने मौजूदा कोड का उपयोग करने देता है। आपके वातावरण में एक नई भाषा को पेश करने में असफल रहने का सबसे महत्वपूर्ण तरीका, आखिरकार, अपने सहकर्मियों को बताना होगा कि उन्हें एक बदलाव के लाभों को देखने के लिए अब तक जो कुछ भी मिला है, उसे फिर से लिखना होगा, इस बिंदु पर, आप अभी भी उन्हें बेचने की कोशिश कर रहे हैं।


7

मैं तुरंत एक नई भाषा सीखने के बिना कार्यात्मक प्रोग्रामिंग शुरू करने की सलाह दूंगा । यदि आप एक नए प्रतिमान को सीखने की कोशिश कर रहे हैं तो यह तब और कठिन हो जाता है जब आप एक नई भाषा के वाक्य विन्यास के साथ पकड़ पाने की कोशिश कर रहे हों।

बेशक, जो भाषाएँ विशेष रूप से कार्यात्मक प्रोग्रामिंग करने के लिए विकसित की गई हैं, उनके कुछ फायदे होंगे (जैसे विशिष्ट निर्माण जैसे कि समझ और डेटा संरचनाओं को डिफ़ॉल्ट रूप से अपरिवर्तनीय बनाना), लेकिन सामान्य तौर पर बनाने के लिए सबसे बड़ा कदम एक कार्यात्मक के लिए अपनी सोच को बदलना है। अंदाज। C # करने के लिए बहुत अच्छा है।

मूल रूप से, आप बस अपने कोड की स्थिति को बदलना बंद कर देते हैं। मैंने इसे जावा का उपयोग करके किया है और यह C # के साथ और भी आसान है क्योंकि आपके पास लैम्ब्डा है। एक बार जब आप उस शैली को लटका देते हैं और यह महसूस करते हैं कि इसके लिए क्या अच्छा है, तो एक कार्यात्मक भाषा को चुनना बहुत आसान होगा (इस बात की परवाह किए बिना कि क्या यह एफ # आप चुनते हैं या एर्लांग) और इसके साथ बेहद उत्पादक हो।


1
+1: मैं आपसे सहमत हूं। मैंने जावा और सी ++ में अधिक कार्यात्मक शैली में कोड करना शुरू कर दिया है (अधिक अंतिम और कॉन्स्टेबल चर का उपयोग करके, फ़ंक्शन रचना का उपयोग करके जटिल ऑपरेशन को तोड़ दिया है)। मुझे लगता है कि इससे निश्चित रूप से जावा और सी ++ में मेरी प्रोग्रामिंग शैली में सुधार हुआ है। थोड़ी देर के बाद, जब कोई आगे जाने के लिए तैयार महसूस करता है, तो एक कार्यात्मक भाषा (हास्केल, ओकेमेल, एसएमएल, लिस्प, स्काला, एफ #, आदि) आज़मा सकता है
जियोर्जियो

1

यदि आप चाहते हैं कि सभी कार्यात्मक प्रोग्रामिंग सीखना और समझना चाहते हैं, तो बस आयरनपिथॉन स्थापित करें और पायथन में कार्यात्मक सुविधाओं पर ध्यान केंद्रित करें। सबसे खराब रूप से, आप एक उपकरण सीखेंगे जिसे एक एप्लिकेशन में कोड की लाइनों की संख्या में कटौती करने के लिए C # के साथ एकीकृत किया जा सकता है और आपको शेड्यूल से पहले अधिक बगफ्री उत्पादों को वितरित करने में मदद करेगा।

उदाहरण के लिए जनरेटर के बारे में DaBeaz की प्रस्तुतियों पर एक नज़र डालें कि कैसे पायथन में कार्यात्मक दृष्टिकोण जटिल चीजों को सरल कर सकते हैं http://www.dabeaz.com/generators/

इसके अलावा, मुझे लगता है कि आप स्काला के साथ कुछ समय निवेश करने में बुद्धिमान होंगे। यह बीटा मोड में .NET पर चलता है, इसलिए आप इसे स्थापित कर सकते हैं और इसका उपयोग सीखने के उद्देश्यों के लिए आज कर सकते हैं, और शरद ऋतु में यह .NET के लिए रिलीज़ मोड में होगा। इसका मतलब है कि आप स्काला में कोड लिख सकते हैं जो JVM और .NET के पोर्टेबल है। और, चूंकि स्काला एक्टर्स और मैसेज पासिंग के आसपास आधारित है, इसलिए कई अलग-अलग मशीनों पर चलने वाले कई अलग-अलग कार्यक्रमों से बने एप्लिकेशन को बनाना बहुत आसान है। जब आप मिश्रण में .NET / JVM पोर्टेबिलिटी जोड़ते हैं, तो विचार करने के लिए एक और पहलू है। आपके पास एक ऐसा एप्लिकेशन हो सकता है जो उन्हें थर्ड पार्टी जावा लाइब्रेरीज़ और 3rd पार्टी .NET लाइब्रेरीज़ दोनों का लाभ देता है। दोनों प्रक्रियाओं को स्काला में लिखा जाएगा, और संचार करने के लिए स्काला रिमोट संदेश (दूरस्थ अभिनेता) का उपयोग करेगा। अक्का की जाँच करें, पुस्तकालय जो ऐसा लगता है कि यह अंततः स्काला के मानक पुस्तकालय का हिस्सा बन जाएगा, जो कि Typeafe.com कर रहा है।


+1: विभिन्न प्लेटफॉर्म पर स्काला और इसकी उपलब्धता का उल्लेख करने के लिए। प्रश्न: क्या स्काला में वर्तमान अभिनेता के कार्यान्वयन की जगह अक्का लेगा? या दोनों एक-दूसरे के अस्तित्व में होंगे?
जियोर्जियो

यकीन नहीं होता कि अक्का जल्द ही वर्तमान स्काला अभिनेताओं को बदल देगा, लेकिन स्काला निर्माता मार्टिन ओडस्की ने कंपनी टाइपसाक में अक्का निर्माता जोनास बोनेर के साथ जुड़ गए हैं। वे अक्का के साथ स्काला को बढ़ावा दे रहे हैं और अब प्ले फ्रेमवर्क के साथ। इसलिए यह संभावना है कि विकास का ध्यान अक्का पर होगा। यदि आप केवल स्काला के साथ अभिनेताओं को सीख रहे हैं, तो पहले अक्का पर ध्यान केंद्रित करना सबसे अच्छा होगा।
माइकल डिलन

जानकारी के लिए बहुत - बहुत धन्यवाद! मैंने स्काला में अभिनेताओं पर एक नज़र डाली, लेकिन अब तक केवल एक बहुत ही सतही।
जियोर्जियो

-1

मैं निश्चित रूप से स्वीकार किए गए उत्तर के मुख्य जोर से सहमत हूं, और यह देखते हुए कि आप मूल रूप से एरलांग को दे कर चीजों को सुव्यवस्थित कर रहे हैं, यह कोशिश करता है कि आपको लगता है कि आप कैसे सीखते हैं और बस सही में थोड़ी सी नग्नता की आवश्यकता है दिशा, तो स्पष्ट रूप से यह आपके लिए एक अच्छा जवाब था ... लेकिन, मुझे लगता है कि मैं सवाल को थोड़ा अलग तरीके से लिखूंगा, क्योंकि मैं देख रहा हूं कि इस जवाब से मुझे बहुत मदद नहीं मिली होगी; मैं हमेशा सीखने के लिए कोड करता हूं! तो, यहाँ मेरे विचार हैं ...

(बीटीडब्लू, मैं एक पुस्तक में अध्याय के लिए और अधिक विस्तार से बताता हूं, और मुझे यकीन है कि मैं अपनी प्रवृत्ति को पूरी तरह से यहां नहीं रोक सकता , लेकिन मैं एक अलग तरह की कोशिश करने जा रहा हूं;) यहाँ पर अपने विचारों को संक्षेप में प्रस्तुत करने जा रहा हूँ, और यदि कोई व्यक्ति किसी भी चीज़ पर अधिक विस्तार चाहता है, या सोचता है कि मेरे द्वारा कहे जाने वाले किसी चीज़ को इस प्रारूप में गुमराह किया जा रहा है, तो मैं उत्तर देने के लिए याद करने की पूरी कोशिश करूँगा ...)

अपने आप को कार्य पर रखने की कोशिश करने के लिए ओपी में पूछे जाने वाले जोरदार सवालों की मेरी समझ; मैं एक न्यूनतम करने के लिए आवश्यक के रूप में समझाना होगा ....

पहले त्वरित उत्तर:

क्या मैं ऐसी ही स्थिति में था? यह कम से कम समान था; मैं कई अलग-अलग परियोजनाओं का नेतृत्व कर रहा था जो कि फिर भी संबंधित थीं ... (सीआरएम / वेब / डीबी / डेटा एकीकरण / आदि)।

मैंने कार्य को कैसे / क्यों बनाया है? " मैंने कुछ LINQ उदाहरण देखे और हालाँकि मैंने निश्चित रूप से कुछ प्रकार की एकीकृत, सांख्यिकीय रूप से टाइप की गई, क्वेरी भाषा का सपना देखा था [जैसा कि मैंने मुख्य रूप से वैधानिक रूप से टाइप की गई भाषाओं (मुख्य रूप से C ++ और बाद में #) का उपयोग किया था। )] अपने पूरे करियर के दौरान ... लेकिन, यह एक बहुत तेजी से आग का माहौल था जिसमें मैं था, और हालांकि मैं अक्सर यह देखने में कामयाब रहा था कि अतीत में क्या आ रहा था, मैंने कभी भी इसके बारे में नहीं सोचा था इसलिए मैंने कभी भी यह नहीं सोचा था कि यह प्लेन पुरानी वस्तुओं पर संचालन की अनुमति दे सकता है (lol!) बस के रूप में आसानी से; जब मैंने देखा कि मुझे पता था कि मेरे पास यह है ... तो, यही कारण है कि और कैसे की शुरुआत: मैंने LINQ को समझने के लिए सीखने पर ध्यान केंद्रित किया ।

चार विचार ... इर्र, नहीं यह सही नहीं है ... Forethoughts

जब मैंने मार्टिज्न वर्बर्ग के उत्तर को पढ़ा , तो व्यवसाय की कार्यक्षमता का उल्लेख तुरंत मेरे दिमाग को खींचता है कि मैं जो भी काम कर रहा हूं उसके लिए कोड लागू करना शुरू करूं ... इस बात पर निर्भर करता है कि प्रारंभिक प्रयोग मैं कितना अलग था, लेकिन इसका जवाब सिर्फ यह था अपने बड़े पैर की अंगुली को डुबाना, मुझे यकीन नहीं है कि मेरे पास काम के लिए सीधे (या जल्द ही काम करने के लिए) कुछ भी था जिसने मुझे उत्साह / जुनून प्रदान किया होगा मुझे लगता है कि आपको शायद पहले कुछ समस्याओं से निपटना चाहिए जो आप से निपटना शुरू करते हैं ...

मैं लगभग पूरी तरह से वैधानिक रूप से टाइप की जाने वाली भाषाओं + OOP के रूपकों और प्रतिमानों पर आधारित था + जो कुछ भी मैंने समाप्त कर दिया, वर्षों से अपनी वास्तविक समस्याओं को हल करते समय गलती से अपने मस्तिष्क को लपेट लिया ... इंगित किया जा रहा है, यदि आप सभी की तरह मैं थे, तो आपको संभावना है कि आपके पास बहुत से सामान समर्पित हैं जो कि LINQ / FP के साथ आपकी बहुत मदद नहीं करेंगे।

मुझे लगता है कि यह शुद्ध प्रक्रियात्मक बनाम OO प्रोग्रामिंग की तरह है: वहाँ बहुत प्रक्रियात्मक सामान है कि आप OOP में उपयोग करना समाप्त कर देंगे, लेकिन जो C से C ++ में आते हैं वे इसे grok / ken / " प्राथमिकता " OO के बिना बनाते हैं। अंत में C ++ पर बहुत खराब है। मैंने वास्तव में बहुत (15+) लंबे समय के फ़र्मवेयर और डिवाइस ड्राइवर डेवलपर्स के नरक का साक्षात्कार किया है, जिन्होंने वास्तव में सोचा था कि वे सी ++ जानते थे, लेकिन जो, ज्यादातर , सी + + की एक बहुत ही बुनियादी / पाठ्यपुस्तक समझ थी, जिसमें व्यावहारिक रूप से कोई समझ नहीं थी। ओओपी में अनुभव - क्योंकि उन्होंने वास्तव में ओओपी कभी नहीं किया था ... उन्होंने स्टैटिक सदस्यों के साथ सिंगलटन बहुउद्देश्यीय कक्षाएं लिखीं और कुछ स्थिर-गैर-स्टैटिक / गैर-सिंगलटन वर्गों की कुछ मात्राओं के साथ स्थिर कार्य किए गए जिनका उपयोग संरचना के रूप में किया गया था।

और एफपी में कुछ इसी तरह का दिमाग है (प्रतिमान पर नहीं उठाया गया है) अवधारणाओं और अन्य चीजें जो इसके साथ-साथ चलती हैं, और (हालांकि मैंने अपने लिए आदर्श होने के लिए बहुत सारी तकनीकों के संकरण को पाया है) मैं और अधिक समझता हूं और समय जितना आगे बढ़ता है, मेरी सोच अपने टूलसेट में वास्तविक कार्यात्मक क्षमताओं को प्राप्त करने से पहले सीमित थी; मैंने अतीत में कई चीजों को एक तरह से लागू करने में कामयाबी हासिल की थी, जो कि कुछ अधिक रचनात्मक थी, जो शायद सबसे ज्यादा ऊ प्रोग्रामर थे, लेकिन जैसा कि मैं उन अवधारणाओं का उपयोग करता हूं, जो मेरी सोच से पहले कास्टेड थे ... समस्याओं के पूरे वर्ग हैं जिन्हें हल किया जा सकता है कुछ पंक्तियों में जो C ++ / C # में करने के लिए बहुत सारे विरोधाभास का एक नरक ले जाता था।

अचानक तुम खुद को खोजते हो ...

ए "टू लॉन्ग" पोस्ट में

आप सब "एक जैसे नहीं पढ़े" के चक्रव्यूह में हैं।

आप निकट भविष्य में एक टेलीकांफ्रेंस देखते हैं, तेजी से निकट आ रहे हैं।
> संक्षिप्त
अहां। ज़रूर। ठीक है, हम कहेंगे "terse" मोड "on" है।

आप निकट भविष्य में एक टेलीकांफ्रेंस देखते हैं, तेजी से निकट आ रहे हैं।
> इसका क्या मतलब है?
मैं तो बस कह रहा हूं'। क्या आपको आज सुबह कुछ नहीं करना है?

आप निकट भविष्य में एक टेलीकांफ्रेंस देखते हैं, तेजी से निकट आ रहे हैं। 
> अरे, यह तुम्हारे पीछे एक grue है?
क्या!? कहाँ पे?! [चिल्लाते हुए भागता है]

> क्षमा करें, मुझे समझ में नहीं आया कि कहां, रेफरेज?
[जारी रखा और चिल्ला रहा है, व्यंग्य

तो ... मुझे क्या सीखना चाहिए, प्रिय PSE, प्रिय PSE?

मैं व्यक्तिगत रूप से LINQ के साथ C # में शुरू हुआ। इसने मुझे एक समय में कुछ अवधारणाओं को पेश करने की अनुमति दी, और जब मैं लगातार एफपी और इसकी अवधारणाओं, और अधिक LINQ, और दोनों के बीच के संबंध के बारे में पढ़ रहा था, तो इसने मुझे उत्पादक काम करते हुए आगे बढ़ने का रास्ता दिया। मैंने एक समय में कुछ चीजों में जोड़ा, डेटा क्वेश्चन जल्दी ही मेरे लिए एक टन समझे बिना एक उपयोगी उपकरण बन गया।

अब, इसे वापस देखते हुए, मैं चाहता हूं कि मैं अपनी अगली परियोजना (लगभग एक साल बाद निबटा) पहले कर सकूं; मैं एफ # से मामूली परिचित हुआ (जो, संयोग से, मुझे एमएल (मेटलंगेज) सीखने पर एक शानदार शुरुआत दी और यह अन्य व्युत्पन्न है (उदाहरण के लिए, ओएमएक्सएल भी।)

मूल रूप से, मुझे लगता है कि 'क्या' का एक सभ्य उत्तर कुछ प्रोग्रामिंग समस्या की एक अच्छी जोड़ी को खोजने पर निर्भर करता है जो आपकी रुचि रखते हैं, लेकिन निश्चित रूप से इसे एफपी के एक बिट के साथ जोड़ा जाना चाहिए जिसे आप सीखना चाहते हैं ... (और आप कुल्ला कर सकते हैं / सूची से कुछ खटखटाने के बाद दोहराना / दोहराना ...) और, निश्चित रूप से, आप हमेशा मुख्य बात सीखने से थोड़ा अधिक सीखते हैं जो आप करने के लिए निर्धारित करते हैं; पहले तो मैंने कुछ बच्चे पैदा किए, लेकिन फिर मैंने बड़े काम करना शुरू कर दिया और उन चीजों को करते समय छोटे सामान को गिरने दिया।

सबसे पहले, आपकी नाव क्या है? विशेष रूप से सबसे पहले यह कुछ मजेदार और रोमांचक है (आपके लिए) और यह आपकी रुचि को आपके लिए सार्थक बनाने के लिए पर्याप्त होगा। इसलिए, IOW समस्याओं पर काम करने के लिए, और उन समस्याओं को संबोधित करने वाली तकनीकों ... LINQ और इनलाइन डेटा मेरे लिए पहली बार क्वेरी कर रहे हैं। मेरे लिए पुनरावृत्ति एक और थी, जिसमें पूंछ पुनरावृत्ति भी शामिल है, मैं इसे गोडेलएस्चेब-नेस की खुदाई करता हूं; और मैं पूंछ पुनरावृत्ति के बारे में पढ़ रहा था। इस समय के आसपास, मैं जिन चीजों पर काम कर रहा था, उन्हें रोक दिया गया था, और मेरे पास समय का एक बड़ा ब्लॉक था, इसलिए मैं इसे लंबे समय तक रखने में सक्षम था। यह कम रुकावट के साथ आसान था, लेकिन क्योंकि मैंने उन चीजों को चुना जो मुझे लगा कि मज़ेदार थे, यह सब काम के रुकावट के साथ भी कठिन नहीं था। :)

और यद्यपि मैं कुछ भी शांत नहीं था, मैं आपको स्वयं जागरूक केकड़े कार्यक्रम के बारे में बता सकता हूं, मैं इसमें बहुत अच्छा पाने में कामयाब रहा।

और ... मैं इसे किससे सीखूं, प्रिय PSE, प्रिय PSE, किसके साथ?

इसके लिए, मैंने विभिन्न एल्गोरिदम का उपयोग किया, जो मुझे वैसे भी दिलचस्पी लेने के लिए हुआ, साथ ही विभिन्न चीजें जो मैंने सोचा था कि अगर आप एफ # में कर सकते हैं, और जब मैं विचारों से बाहर निकलूंगा तो मैं 99 बोतल बीयर और प्रोजेक्ट यूलर जैसी चीजों से निपटूंगा। समस्याएं ...

मुझे यकीन है कि आप बहुत सी चीजें पा सकते हैं जो आपके लिए ब्याज है कि एफपी प्रासंगिक है; यह OOP को एन्हांसमेंट्स से सब कुछ प्रदान करता है जो आपको चीजों को थोड़ा और अधिक स्पष्ट रूप से बताने में मदद करता है, जिस तरह से आप इसके बारे में सोचते थे कि जिस आकार को आप पहचान नहीं पाते हैं और संभावना व्यक्त करने के लिए मानसिक मॉडल भी नहीं था। इससे पहले।

लेकिन ... मेरे मॉडल में एक छेद है, प्रिय पीएसई एक छेद ...

और यही कारण है कि यह महत्वपूर्ण है कि, विशेष रूप से शुरुआत में, लेकिन वास्तव में आपके सीखने के दौरान (और जब आप कुछ सीख रहे हैं तो क्या यह हमेशा सच नहीं है?) आप कम से कम समस्याओं के बीच असंबंधित चीजों को पढ़ने के लिए थोड़ा समय लेते हैं? अभी भी एफपी और विशेषज्ञों द्वारा लिखित स्रोत कोड को पढ़ने का समय, अधिमानतः समान या समान समस्याओं को हल करना; साथ ही उनकी बातों के स्पष्टीकरण ...

और सभी समय, आपको यह समझने के लिए अपने मस्तिष्क को तनावपूर्ण करना होगा, अपने पुराने दृष्टिकोण से नहीं बल्कि एफपी के भीतर से ही ... मेरे लिए कुछ बिंदु पर, यह क्लिक किया, और ... वह चीज जो मैं सबसे अच्छी तरह से संबंधित कर सकता हूं। डच में अधिक या कम धाराप्रवाह बनने के लिए; कुछ बिंदु पर मैं खुद को पर्याप्त मानसिकता में रखने में कामयाब रहा (मैंने इसे विसर्जन के माध्यम से किया, जो कि मूल रूप से मैंने यहां वर्णित किया है, "एफपी लर्निन" के माध्यम से इसे पूरी तरह से सीखने की बजाय खुद को एफपी में विसर्जित करना ...

और, आखिरकार मैंने किया; मैं सब कुछ आंतरिक रूप से करने और अपने मस्तिष्क को चारों ओर मोड़ने में कामयाब रहा, जब तक कि मेरे बिना एफपी / लिनक्यू को पॉप करना शुरू नहीं किया, यहां तक ​​कि इसे ओओपी में वापस अनुवाद करने का प्रयास भी नहीं करना पड़ा। (हाँ, मैंने ऐसा किया; मुझे अपनी स्कर्ट लटकाने के लिए कुछ करना पड़ा। हाट। जो भी हो।)

अंतिम विचार...

मेरा, मेरा, ऐसा लगता है कि आप अपने हस्ताक्षर को चालाक समझने की क्षमता खो रहे हैं
अनुभाग शीर्षक। कितनी शर्म की बात है।

टेलीकांफ्रेंस अभी भी तेजी से आ रही है। यह अब बहुत बड़ा प्रतीत होता है।
> हाँ, हाँ, अच्छी तरह से। मुझे लगता है कि आप उस ग्रू को खोने में कामयाब रहे।
 नज़दीकी कॉल, कि ... अच्छा, हाँ, मैं जा रहा हूँ ... ओह, नहीं!
AAAAAAAHHHHHH !! [एक बार फिर चिल्लाते हुए भागता है]

टेलीकांफ्रेंस अभी भी तेजी से आ रही है।
यह किसी भी तरह से सर लिन्सीजोन क्लीज़ेविज़ जैसा दिखता है।
यह लगभग आप पर है।
> अरे, जल्दी करो! मेरे पास आपके साथ प्रयास करने के लिए एक प्रयोग है! (और एक पो-टा-टू)

आप स्वाभाविक रूप से एफपी के बारे में ऑनलाइन जानकारी का खजाना पा सकते हैं। मुख्य बात बुनियादी अवधारणाओं को समझना है, और फिर उन्हें लागू करना सीखें। उदाहरण के लिए, अपरिवर्तनीयता के बारे में जानें, और यह एफपी के लिए महत्वपूर्ण / उपयोगी क्यों है। मैं सब कुछ के साथ जाने के लिए एक छोटे से सिद्धांत को सीखने की सलाह देता हूं, जैसे कि शुद्ध एफपी औपचारिक प्रमाण के लिए कितना अधिक उत्तरदायी हो सकता है। यह F # के पूर्वज, एमएल के पीछे एक प्रेरणा शक्ति थी। YMMV बेशक आप किसी को इस मामले में आँसू करने के लिए ऊब हो सकते हैं, बहुत सारे उदाहरण, बहुत सारे परीक्षण और त्रुटि यह देखने के लिए कि क्यों इस्तेमाल की जाने वाली तकनीकें हैं कि वे आपकी मदद करेंगे कि 'अहा!' लाइटबल्ब पल।

तो, मैं इसे अभी के लिए छोड़ दूँगा। आशा है कि यह किसी के लिए कुछ काम का हो। मैं सीखने के लिए विशिष्ट चीजों में थोड़ा अधिक प्राप्त करना चाहता था लेकिन मैं इस समय से बाहर हूं। मुझे उम्मीद है कि जल्द ही इसे वापस पाने के लिए कुछ समय मिल जाएगा, हालांकि यह मेरे लिए एक लंबा सप्ताह लग रहा है, इसलिए शायद कम से कम सप्ताहांत होगा।

<3 "GRUEBOL, एक स्टॉपगैप का परिचय; बस SnozzML समाप्त होने तक। यह जल्द ही होना चाहिए; मुझे इस बार मेरी मदद करने वाली एक बड़ी समिति मिली।" - ग्रेस हॉपरविट एगहेड, प्रसिद्ध अंतिम शब्द , XX97 GUE <3


"प्रिय SO" क्या है?
gnat

प्रिय ढेर अतिप्रवाह था; गीत के ताल का मिलान करने के लिए माना जाता है 'वहाँ एक छेद है बाल्टी में' xD
ashleybutterfly

जब एसओ के बाहर पोस्ट किया जाता है, तो यह आपके बिंदुओं को समझने में कठिन बनाता है
gnat

Derp! हाँ, वास्तव में किया है। tyvm। :)
शैलेबटरफ्लाई

अगर किसी के पास मेरे उत्तर को बेहतर बनाने के लिए सुझाव हैं, तो मैं इसकी सराहना करूंगा .. क्या यह बुरा हास्य था? या बुरी सलाह? यह वास्तव में मेरे अनुभव पर आधारित है, इसलिए यदि मैं इसे और अधिक उपयोगी बना सकता हूं तो मुझे इसे बदलने में खुशी होगी। धन्यवाद;)
ashleybutterfly
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.