क्यों कार्यात्मक प्रोग्रामिंग


38

कार्यात्मक प्रोग्रामिंग के साथ सौदा क्या है? मैं इसके बारे में बहुत बात करता हूं लेकिन ईमानदार होने के लिए मैंने उन्हें कभी भी उपयोगी नहीं पाया। इतने सारे विश्वविद्यालय स्पष्ट रूप से उन्हें क्यों सिखाते हैं?


6
AI प्रोग्रामिंग में बहुत बड़ा है।
एक्वा

3
@aqua - क्यों नहीं के लिए एक जवाब होना चाहिए?
मार्टिन बेकेट

5
मैं यह भी बताना चाहूंगा कि पारंपरिक ओओ भाषाएं कार्यात्मक प्रोग्रामिंग से अवधारणाओं को शामिल करना शुरू कर रही हैं। Linq (.NET में), बिंदु में एक मामला है।
अपूर्व ०२०

मुझे लगता है कि कार्यात्मक प्रोग्रामिंग आपके मस्तिष्क को अधिक व्यायाम करती है, और वास्तव में पैथी कोड को जन्म दे सकती है। तो यह बहुत अच्छा है।
Adel

2
@ apoorv020: और जेनेरिक, टुपल्स और कचरा संग्रह और ... सभी की उत्पत्ति कार्यात्मक भाषाओं में हुई।
जॉन हैरोप

जवाबों:


60

क्यों कार्यात्मक प्रोग्रामिंग मामलों के साथ शुरू करो । फिर व्हाई फंक्शन प्रोग्रामिंग मैटर्स मैटर्स की ओर रुख करें । कुछ गोलियां:

  • फ़ंक्शनल प्रोग्रामिंग आपको समस्याओं के बारे में अलग तरह से तर्क करने की अनुमति देता है
  • कार्यात्मक अमूर्त बहुत शक्तिशाली है और आपको अन्य प्रतिमानों के लिए अपने कोड को डीआरवाई करने की अनुमति नहीं देता है
  • हमारे बहु-कोर भविष्य में, कार्यात्मक भाषाओं को एक साथ कार्यों में विभाजित करना आसान हो सकता है (हालांकि समस्या के साथ-कड़ाई से-कार्यात्मक भाषाएँ भी इस समस्या पर कड़ी मेहनत नहीं कर रही हैं)।
  • यह साबित करना आसान है कि शुद्ध कार्यात्मक भाषाओं (कोई साइड इफेक्ट) में लिखे गए कार्यक्रम गणितीय रूप से सही नहीं हैं।

5
+1 - ये सभी उत्कृष्ट बिंदु हैं, और मैंने जो कुछ भी करने की कोशिश की उससे अधिक स्पष्ट रूप से और अधिक सटीक रूप से और दोनों के साथ समझाया गया है।
jmort253

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

1
@ Jörg W Mittag, भाषा के गुणों के बारे में खुद को जानना बहुत आसान है। नकारात्‍मक शब्दार्थ भाषा कार्यात्मक भाषाओं के लिए तुच्छ है, और अनिवार्य के लिए काफी जटिल है।
एसके-तर्क

मजेदार यह है कि दूसरा लिंक कुछ "स्पष्ट" तर्क प्रदान करता है, यह जानकर कि मैं 1 लिंक भी नहीं पढ़ता हूं।
जोक

+1: शानदार जवाब। मुझे विशेष रूप से पसंद है कि आप शब्दों में # 1 और # 2 बुलेट अंक कैसे डालते हैं।
जिम जी।

9

कार्यात्मक प्रोग्रामिंग अवधारणाएं एक नींव का निर्माण करती हैं जो आपके सोचने के तरीके को बदल देगा और वास्तविक दुनिया की समस्याओं को हल करने में आपकी सहायता करेगा।

यह अवधारणा समान है कि हम सभी मल्टी-वियरेबल कैलकुलस, बीजगणित और / या इंजीनियरिंग फिजिक्स को कंप्यूटर साइंस की बड़ी कंपनियों के रूप में क्यों सीखते हैं, भले ही हमें अपने करियर में उस विशिष्ट ज्ञान की कभी आवश्यकता न हो।

यही कारण है कि लॉ स्कूल गणित में बीएस के साथ उम्मीदवारों से प्यार करते हैं। गणित का अध्ययन आपको तार्किक तरीके से कई अवधारणाओं के बारे में सोचना सिखाता है, और कार्यात्मक प्रोग्रामिंग आपको अमूर्तता और कई अन्य महत्वपूर्ण अवधारणाएं सिखाती है जो आपको समस्याओं को तोड़ने और एक अलग प्रकाश में देखने में मदद करती हैं।

सारांश में, कार्यात्मक प्रोग्रामिंग आपको सीखने के तरीके को सिखाने में मदद करता है।


शायद यह वास्तव में एक नाम की जरूरत नहीं है? क्या यह केवल 'सही' प्रोग्राम डिज़ाइन नहीं है?

4

जब आप शुरुआत कर रहे हैं, तो कार्यात्मक प्रोग्रामिंग सबसे अच्छा सोच मॉडल है। क्योंकि आपके अधिकांश कार्यक्रमों को ऑब्जेक्ट-ओरिएंटेशन की आवश्यकता नहीं होगी। कम से कम मेरा अनुभव तो यही रहा।

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

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


1
+1 - मुझे यह पसंद है कि आप नौकरी के लिए सबसे अच्छी तकनीक का उपयोग करते हैं: सुनिश्चित करें कि यह समझ में आता है।
jmort253

1
अफसोस की बात है कि हमारे उद्योग में सामान्य ज्ञान दुर्लभ है। क्योंकि हम में से प्रत्येक के पास पूरी तरह से अलग-अलग अनुभव हैं, जो कि हमारे द्वारा की गई गलतियों के कारण अलग-अलग हैं, हम में से प्रत्येक की अलग-अलग आदतें हैं, और हम उन्हें क्यों करते हैं ... जैसे कि स्रोत नियंत्रण को अपनाना, किसी के लिए कोई मतलब नहीं रखता है जिसने हमेशा काम किया है themself।
crosenblum

"सामान्य ज्ञान दुनिया में सबसे अधिक वितरित की जाने वाली चीज है, हर एक के लिए यह सोचता है कि वह इसके साथ इतनी अच्छी तरह से संपन्न है कि यहां तक ​​कि जो अन्य सभी मामलों में संतुष्ट करने के लिए सबसे कठिन हैं, वे पहले से ज्यादा इसकी इच्छा नहीं रखते हैं। है। " - डेसकार्टेस

3

क्योंकि यह क्रियाओं पर जोर देता है, संज्ञाओं पर नहीं। कभी-कभी यह क्रिया है जो मायने रखती है।


OOP संज्ञा पर बल देता है। कभी-कभी यह संज्ञाएं होती हैं जो मायने रखती हैं। हम कैसे जानते हैं? - झूठी दुविधा। सिस्टम

3

क्योंकि सामान्य तौर पर यह समान कार्य को पूरा करने के लिए कम कोड का उपयोग करता है। लिखने के लिए कम कोड, बनाए रखने के लिए कम कोड है। कम कोड होने के अलावा, यह कम अवस्था में भी होता है, और इस प्रकार यह तर्क करने के लिए थोड़ा सरल है (एक बार जब आप इसके लिए उपयोग किए जाते हैं)।


तो, क्या यह केवल 'बेहतर' की परिभाषा नहीं है? हम आपके द्वारा वर्णित के अलावा कुछ भी क्यों करना चाहते हैं?

2

शायद इसलिए कि विश्वविद्यालय सभी प्रोग्रामिंग प्रतिमानों से कुछ सिखाना चाहते हैं, और कुछ चीजों के लिए कार्यात्मक प्रोग्रामिंग बेहतर है (जैसे खेल वर्ण आंदोलन का वर्णन करना और एनिमेशन का वर्णन करना)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.