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