मैं कुछ समय के लिए एक वेब डेवलपर रहा हूं, और हाल ही में कुछ कार्यात्मक प्रोग्रामिंग सीखना शुरू कर दिया है। दूसरों की तरह, मुझे अपने पेशेवर काम में इन अवधारणाओं में से कई को लागू करने में कुछ महत्वपूर्ण समस्याएं आई हैं। मेरे लिए, इसका मुख्य कारण यह है कि मैं शेष स्टेटस के एफपी के लक्ष्य के बीच एक संघर्ष को देखता हूं, इस तथ्य के साथ काफी हद तक ऐसा लगता है कि मेरे द्वारा किए गए अधिकांश वेब विकास कार्यों को डेटाबेस से काफी जुड़ा हुआ है, जो बहुत डेटा-केंद्रित हैं।क्या बाधाओं पर डेटाबेस और कार्यात्मक प्रोग्रामिंग हैं?
एक चीज जिसने मुझे ओओपी पक्ष पर एक और अधिक उत्पादक डेवलपर बनाया था, ऑब्जेक्ट-रिलेशनल मैपर्स की खोज थी, जैसे कि नेट, क्लास :: डीबीआई, पर्ल के लिए डीबीआई, रूबी के लिए एक्टिव रिकार्ड इत्यादि। मुझे लिखित लेखन से दूर रहने और पूरे दिन बयानों का चयन करने के लिए, और वस्तुओं के साथ आसानी से डेटा के साथ काम करने पर ध्यान केंद्रित करने के लिए। बेशक, जब भी उनकी शक्ति की आवश्यकता होती थी, तब भी मैं एसक्यूएल प्रश्न लिख सकता था, लेकिन अन्यथा यह दृश्यों के पीछे अच्छी तरह से सारणित था।
अब, कार्यात्मक-प्रोग्रामिंग में बदलना, ऐसा लगता है कि कई एफपी वेब ढांचे जैसे लिंक को बॉयलरप्लेट एसक्यूएल कोड लिखने की आवश्यकता होती है, जैसा कि this example में है। वेबलॉक्स थोड़ा बेहतर लगता है, लेकिन ऐसा लगता है कि डेटा के साथ काम करने के लिए ओओपी मॉडल का उपयोग किया जाता है, और अभी भी this example में आपके डेटाबेस में प्रत्येक तालिका के लिए कोड मैन्युअल रूप से लिखा जाना आवश्यक है। मुझे लगता है कि आप इन मानचित्रण कार्यों को लिखने के लिए कुछ कोड पीढ़ी का उपयोग करते हैं, लेकिन यह निश्चित रूप से अनजान दिखता है।
(नोट मैंने वेबलॉक्स या लिंक को बहुत बारीकी से नहीं देखा है, मैं केवल गलत समझ सकता हूं कि उनका उपयोग कैसे किया जाता है)।
तो सवाल यह है, डेटाबेस का उपयोग भागों के लिए वेब अनुप्रयोग, या अन्य विकास एक एसक्यूएल डाटाबेस के साथ इंटरफेस की आवश्यकता होती है हम नीचे निम्न पथ में से एक के लिए मजबूर हो रहे हैं (जो मेरा मानना है कि बहुत बड़ी हैं):
- एक कष्टप्रद, अन-पृथक तरीका है कि मैन्युअल रूप से एसक्यूएल या SQL जैसी कोड आला का एक बहुत लेखन शामिल है में कार्यात्मक प्रोग्रामिंग
- एक्सेस डेटा का उपयोग न करें एक छद्म OOP प्रतिमान में लिंक
- सेना हमारे कार्यात्मक भाषा , इस प्रकार सच कार्यात्मक प्रोग्रामिंग के कुछ लालित्य और स्थिरता को हटा रहा है।
स्पष्ट रूप से, इनमें से कोई भी विकल्प आदर्श नहीं लगता है। इन मुद्दों को बाधित करने का एक तरीका मिला है? क्या यहां वास्तव में एक मुद्दा भी है?
नोट: मैं व्यक्तिगत रूप से एफपी मोर्चे पर लिस्प के साथ सबसे परिचित हूँ, इसलिए यदि आप किसी भी उदाहरण देना चाहता हूँ और कई एफपी भाषाओं पता है, तुतलाना शायद पसंद के पसंदीदा भाषा
पुनश्च होगा: विशिष्ट समस्याओं के लिए वेब विकास के अन्य पहलुओं को this question देखें।
यह भी देखें: http://stackoverflow.com/questions/218190/is-functional-to-relational-mapping-easier-than-object-to-relational –
@WW - धन्यवाद, किसी भी तरह से उस प्रश्न को याद किया। –
ClojureQL और HaskellDB देखें। वे संबंधपरक बीजगणित का उपयोग कर अमूर्त परतें हैं। – Masse