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