मैं पिछले कुछ समय से एक वेब डेवलपर हूं, और हाल ही में कुछ कार्यात्मक प्रोग्रामिंग सीखना शुरू किया है। दूसरों की तरह, मुझे अपने पेशेवर काम के लिए इनमें से कई अवधारणाओं को लागू करने में कुछ महत्वपूर्ण परेशानी हुई है। मेरे लिए, इसका मुख्य कारण मैं देख रहा हूं कि एफपी के बीच शेष स्टेटलेस के लक्ष्य के बीच एक संघर्ष काफी हद तक इस तथ्य से जुड़ा हुआ है कि मैंने जो सबसे अधिक वेब विकास कार्य किया है, वह बहुत हद तक डेटाबेस से जुड़ा हुआ है, जो बहुत डेटा-केंद्रित हैं।
चीजों के OOP के बारे में मुझे एक और अधिक उत्पादक डेवलपर बना दिया गया था। वस्तु-संबंधपरक मैपर की खोज थी जैसे कि MyGeneration d00dads for .Net, Class :: DBI for perl, ActiveRecord for ruby, इत्यादि ने मुझे दूर रहने की अनुमति दी। पूरे दिन डालने और बयानों को लिखने से, और वस्तुओं के रूप में आसानी से डेटा के साथ काम करने पर ध्यान केंद्रित करने के लिए। बेशक, मैं अभी भी एसक्यूएल क्वेरी लिख सकता था जब उनकी शक्ति की आवश्यकता थी, लेकिन अन्यथा यह पर्दे के पीछे अच्छी तरह से अमूर्त था।
अब, कार्यात्मक-प्रोग्रामिंग की ओर मुड़ते हुए, यह एफपी के कई वेब फ्रेमवर्क के साथ ऐसा लगता है जैसे लिंक को इस उदाहरण में बहुत सारे बॉयलरप्लेट एसक्यूएल कोड लिखने की आवश्यकता होती है । वेबलॉक थोड़ा बेहतर लगता है, लेकिन यह डेटा के साथ काम करने के लिए एक ओओपी मॉडल का उपयोग करने के लिए लगता है, और अभी भी इस उदाहरण के रूप में आपके डेटाबेस में प्रत्येक तालिका के लिए मैन्युअल रूप से लिखे जाने के लिए कोड की आवश्यकता होती है । मुझे लगता है कि आप इन मानचित्रण कार्यों को लिखने के लिए कुछ कोड पीढ़ी का उपयोग करते हैं, लेकिन ऐसा लगता है कि निश्चित रूप से अन-लिस्प है।
(ध्यान दें कि मैंने वेबलॉक या लिंक्स को बहुत करीब से नहीं देखा है, मैं बस गलतफहमी हो सकती है कि उनका उपयोग कैसे किया जाता है)।
तो सवाल यह है कि वेब एक्सेस के डेटाबेस एक्सेस के अंश (जो मुझे लगता है कि बहुत बड़े हैं) के लिए, या अन्य विकास के लिए एक sql डेटाबेस के साथ इंटरफेस की आवश्यकता होती है, जो हमें निम्नलिखित रास्तों में से एक के लिए मजबूर करने वाला प्रतीत होता है:
- कार्यात्मक प्रोग्रामिंग का उपयोग न करें
- डेटा को कष्टप्रद, बिना-सार वाले तरीके से एक्सेस करना जिसमें मैन्युअल रूप से बहुत अधिक एसक्यूएल या एसक्यूएल-जैसे कोड अला लिंक लिखना शामिल है
- एक छद्म-OOP प्रतिमान में हमारी कार्यात्मक भाषा को बाध्य करें, इस प्रकार कुछ सच्चे कार्यात्मक प्रोग्रामिंग की लालित्य और स्थिरता को हटा दें।
स्पष्ट रूप से, इनमें से कोई भी विकल्प आदर्श नहीं लगता है। इन मुद्दों को दरकिनार करने का एक तरीका मिल गया है? क्या वास्तव में यहाँ भी एक मुद्दा है?
नोट: मैं व्यक्तिगत रूप से FP के मोर्चे पर LISP से सबसे अधिक परिचित हूं, इसलिए यदि आप कोई उदाहरण देना चाहते हैं और कई FP भाषा जानते हैं, तो लिस्प संभवतः पसंद की भाषा होगी
पुनश्च: वेब विकास के अन्य पहलुओं के लिए विशिष्ट मुद्दों के लिए यह प्रश्न देखें ।