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