डेटा-संचालित प्रोग्रामिंग क्या है?


92

मुझे एक लॉजिस्टिक्स एप्लिकेशन के लिए एक विस्तृत इंजीनियरिंग योजना लिखने के लिए काम सौंपा गया है जिसे हम एक ग्राहक को प्रस्तावित करने के लिए कोडिंग कर रहे हैं। मुझे बताया गया है कि यह एक डेटा-संचालित एप्लिकेशन है। "डेटा-चालित" अनुप्रयोग के लिए इसका क्या अर्थ है? इसके विपरीत क्या है? मैं इसके लिए कोई स्पष्ट उत्तर नहीं दे सकता, हालांकि वेब खोज के दौरान मैं कई लोगों को अपने स्वयं के उदाहरण पोस्ट करते हुए देख सकता हूं। किसी भी तरह की सहायता का स्वागत किया जाएगा।


2
बहुत सारी वास्तविक दुनिया प्रोग्रामिंग डेटा-संचालित है।
मार्टिन स्पैमर

16
क्लासिक द आर्ट ऑफ यूनिक्स प्रोग्रामिंग में इस विषय की एक अच्छी चर्चा है: होमपेज . cs.uri.edu/~thenry/resources/unix_art/ch09s01.html । मुख्य उद्धरण: "डेटा-संचालित प्रोग्रामिंग में, डेटा केवल किसी वस्तु की स्थिति नहीं है, लेकिन वास्तव में कार्यक्रम के नियंत्रण को परिभाषित करता है । जहां OO में प्राथमिक चिंता एनकैप्सुलेशन है, डेटा-संचालित प्रोग्रामिंग में प्राथमिक चिंता लिख रही है। जितना संभव हो उतना कम निश्चित कोड । "
FMc

2
एफएमसी का जवाब मेरे लिए सबसे ठोस व्याख्या है, और इसका जवाब होना चाहिए, लेकिन विस्तृत है।
मैड्स स्केजर्न

जवाबों:


94

डेटा चालित प्रोगामिंग एक प्रोग्रामिंग मॉडल है जहाँ डेटा प्रोग्राम के प्रवाह को नियंत्रित करता है न कि प्रोग्राम लॉजिक को। यह एक मॉडल है जहां आप प्रोग्राम में विभिन्न डेटा सेट की पेशकश करके प्रवाह को नियंत्रित करते हैं जहां प्रोग्राम लॉजिक प्रवाह या राज्य-परिवर्तनों का कुछ सामान्य रूप है।

उदाहरण के लिए यदि आपके पास प्रोग्राम है जिसमें चार राज्य हैं: यूपी - नीचे - बंद - स्टार्ट

आप इस कार्यक्रम को राज्यों का प्रतिनिधित्व करने वाले इनपुट (डेटा) की पेशकश के द्वारा नियंत्रित कर सकते हैं:

  • set1: DOWN - STOP - START - STOP - UP - STOP
  • set2: UP - DOWN - UP - DOWN

प्रोग्राम कोड समान है लेकिन डेटा सेट (जो डायनामिक इनपुट प्रकार का नहीं है, लेकिन कंप्यूटर को दिया गया है) प्रवाह को नियंत्रित करता है।


3
प्रोग्रामिंग भाग "प्रवाह या राज्य-परिवर्तनों का सामान्य रूप" लिख रहा है, क्या मैं सही हूं? लेकिन मैं किसी भी भाषा में इस तरह की "मशीन" लिख सकता हूं, और इसके बारे में कुछ भी असामान्य नहीं है, इसलिए मुझे आपके जवाब से वास्तव में कुछ भी नहीं मिलता है। शायद डेटा-चालित प्रोग्रामिंग तब होती है जब भाषा स्वयं या पुस्तकालय, इस तरह की मशीनों को लिखने के लिए प्रोत्साहित करती है या बहुत आसान बनाती है। या हो सकता है कि परिभाषा यह है कि भाषा / पुस्तकालय चलो मशीनों को एक घोषणात्मक तरीके से परिभाषित करते हैं, अर्थात प्रक्रियात्मक नहीं।
मैड्स स्केजर्न

2
पर en.wikipedia.org/wiki/Data-driven_programming , वे एक उदाहरण के रूप AWK का उपयोग करें। AWK में दो चीजों की आपूर्ति की जाती है, एक अभिव्यक्ति जिसे परिभाषित किया जाता है कि डेटा और डेटा के साथ क्या किया जाए। अभिव्यक्ति को परिभाषित करने के लिए क्या होना चाहिए: 1) प्रोग्रामिंग, या 2) डेटा। यदि इसे डेटा माना जाता है, तो प्रोग्रामिंग स्वयं AWK की मशीन है, जो AWK के उदाहरण में निश्चित रूप से स्थिर है। लेकिन अन्य संदर्भों में, उदाहरण के लिए अगर मशीन को कुछ पारंपरिक प्रक्रियात्मक तरीके से लिखना, तो वह केवल प्रोग्रामिंग हिस्सा है।
मैड्स स्केजर्न

इसलिए ... यह मानते हुए कि अधिक शक्तिशाली डेटा ड्राइव प्रोग्रामिंग उदाहरण पूर्ण हो रहे हैं, क्या यह केवल कुछ पूर्व-निर्मित मान्यताओं और उपकरणों के साथ इंजन में शामिल बयान नहीं है?
ज़िरकोनकोड

54

हालाँकि डेटा चालित प्रोग्रामिंग क्या है, इसके बारे में कुछ विचार हैं, मुझे डेटा संरचना और फ़ंक्शन का उपयोग करके एक उदाहरण देने की अनुमति देता है।

गैर डेटा संचालित उदाहरण:

data_lloyd = {'name': 'Lloyd', 'lives': 'Alcoy }
data_jason = {'name': 'Jason', 'lives': 'London' }
go = function(x) 
    if x.name == 'Lloyd' 
    then 
        print("Alcoy, Spain") 
    else 
        print("London, UK") 
end

डेटा संचालित उदाहरण:

data_lloyd = {'name': 'Lloyd', 'lives': function(){ print("Alcoy, Spain") }
data_jason = {'name': 'Jason', 'lives': function(){ print("London, UK") }
go = function(x)
    x.lives()
end

पहले उदाहरण में एक परिणाम दिखाने का निर्णय या दूसरा कोड लॉजिक में है। अंतिम उदाहरण में आउटपुट उस डेटा द्वारा निर्धारित किया जाता है जिसे फ़ंक्शन में पास किया जाता है और उस कारण से हम कहते हैं कि आउटपुट डेटा द्वारा संचालित है।


3
मुझे पता है कि यह एक सरल उदाहरण है, लेकिन गैर-डेटा-चालित उदाहरण बस मैला कोडिंग के उदाहरण जैसा दिखता है। क्या डेटा-चालित का मतलब सिर्फ अच्छी कोडिंग प्रथाओं से है? यदि हां, तो कोई भी गैर-डेटा-संचालित दृष्टिकोण का पीछा क्यों करना चाहेगा?
जिन

4
मुझे खेद है, लेकिन पहला उदाहरण कार्यात्मक प्रोग्रामिंग (जहां डेटा और व्यवहार को डिकोड किया गया है) की तरह दिखता है, और दूसरा उदाहरण ऑब्जेक्ट ओरिएंटेड (जहां डेटा और व्यवहार युग्मित है) जैसा दिखता है।
वेकसी

47

"मुझे बताया गया है कि यह एक डेटा-संचालित एप्लिकेशन है" - आपको यह पूछने की ज़रूरत है कि जिसने भी आपको बताया है।

आप यहां कुछ प्रशंसनीय जवाब नहीं पढ़ना चाहते हैं और फिर पता लगा सकते हैं कि यह बिल्कुल नहीं है कि आपके प्रोजेक्ट के प्रभारी व्यक्ति का क्या मतलब है। वाक्यांश बहुत अस्पष्ट है जिसका स्पष्ट अर्थ है कि निश्चित रूप से आपकी परियोजना पर लागू होगा।


8
मैं समझता हूं कि रिची से आपका क्या मतलब है, और यह एक अच्छी बात है। हालाँकि, मैं सोच रहा था कि "डेटा-संचालित प्रोग्रामिंग" सॉफ़्टवेयर विकास उद्योग द्वारा किसी प्रकार का शब्द है। मैं अपने बॉस के साथ वापस जाँच किए बिना यहाँ फेस फेस वैल्यू पर कोई जवाब नहीं दूंगा।
-धन्य

5
ज़रूर - आप यहाँ पूछने के लिए सही थे। लेकिन मुझे लगता है कि इसका उत्तर यह है कि कोई सार्वभौमिक रूप से स्वीकृत परिभाषा नहीं है।
रिचीहिंडले

जब आप मेटा-डेटा से अपना UX जेनरेट करते हैं तो इसे क्या कहा जाता है? जब आपके वर्कफ़्लो को बाहरी कॉन्फ़िगरेशन द्वारा नियंत्रित किया जाता है तो उसे क्या कहा जाता है? क्या वह डेटा ड्रिवेन आर्किटेक्चर और इवेंट ड्रिवेन आर्किटेक्चर है? क्या डेटा चालित प्रोग्रामिंग WSDL और ग्राफकिन के समान है, जहां आपके मॉडल उत्पन्न होते हैं, लेकिन आप अभी भी उनके खिलाफ कोड रखते हैं, हालांकि आप फिट हैं?
कोरी एलिक्स

15

डेटा चालित विकास एक ऐसी चीज है जो कोड नहीं बल्कि डेटा संरचना का संपादन करके कार्यक्रम के तर्क में परिवर्तन कर सकता है।

आप http://www.faqs.org/docs/artu/ch09s01.html पर डेटा-संचालित प्रोग्रामिंग के बारे में अधिक जानकारी प्राप्त कर सकते हैं

प्रक्रियात्मक प्रोग्रामिंग

var data = { 
            {do:'add',arg:{1,2}},
            {do:'subtract',arg:{3,2}},
            {do:'multiply',arg:{5,7}},
            };

foreach(var item in data){  
    switch(item.do){
        case 'add':
            console.log(item.arg[0] + item.arg[1]);
        break;
        case 'subtract':
            console.log(item.arg[0] - item.arg[1]);
        break;
        case 'multiply':
            console.log(item.arg[0] * item.arg[1]);
        break;
    }
}

डेटा संचालित प्रोग्रामिंग

var data = { 
            {do:'+',arg:{1,2}},
            {do:'-',arg:{3,2}},
            {do:'*',arg:{5,7}},
            };

foreach(var item in data){      
    console.log(eval (item.arg[0] + item.do + item.arg[1]);
}

7

डेटा संचालित अनुप्रयोग है:

(1) प्रत्येक विशिष्ट डेटा सेट और परिणाम के रूप में फेंकने के लिए पूर्व निर्धारित निर्णय लेने के लिए विभिन्न डेटा सेटों को स्वीकार करने वाले नियमों का एक सेट

(२) कुछ पूर्व निर्धारित प्रक्रियाएँ जो परिणाम के आधार पर शुरू होती हैं।

आदर्श उदाहरण ifttt.com है

आवेदन के पास नियमों के अलावा कुछ भी नहीं है। जो इसे उपयोगी बनाता है, वह डेटा है जो इसके माध्यम से बहेगा।


4

यह लेख सबसे स्पष्ट रूप से समझाता है कि मैं इस शब्द का मतलब क्या समझता हूं:

तालिका-चालित और डेटा-चालित प्रोग्रामिंग क्या है? http://www.paragoncorporation.com/ArticleDetail.aspx?ArticleID=31

Data / Table-Driven प्रोग्रामिंग डेटा और एक परिवर्तन पैटर्न में दोहराए जाने वाले प्रोग्रामिंग कंस्ट्रक्शन को फैक्टर करने की तकनीक है। इस नए डेटा को अक्सर शुद्धतावादियों द्वारा मेटा-डेटा के रूप में संदर्भित किया जाता है जब इस फैशन में उपयोग किया जाता है।


1

काम पर कोई भी नहीं है जो इस प्रश्न के साथ आपकी मदद कर सकता है? यह कल्पना करना बहुत कठिन है कि आप बिना अधिक उदाहरण के बिना क्या काम कर रहे हैं। लेकिन मैं जो इकट्ठा करता हूं, वह एक ऐसा कार्यक्रम होने जा रहा है जिसमें वे मुख्य रूप से जानकारी दर्ज करते हैं। वह जानकारी पुनः प्राप्त करने और संपादित करने में सक्षम होगी जिसे ग्राहक को प्रबंधित करने की आवश्यकता है।

शुभकामनाएँ!!


1

मुझे लगता है कि दी गई सलाह बुरी नहीं है, लेकिन मैंने हमेशा सोचा है कि डेटा ड्रिवेन डिज़ाइन अपने डोमेन ऑब्जेक्ट्स के लिए नींव के रूप में मौजूदा या दी गई डेटा संरचनाओं का उपयोग करने के लिए घूमती है।

उदाहरण के लिए, क्लासिक विक्रेता प्रबंधन कार्यक्रम में निम्न प्रकार की सारणी हो सकती है:

  • विक्रेता
  • क्षेत्र
  • ग्राहकों
  • उत्पाद

तो, आपका एप्लिकेशन इन डेटा संरचनाओं को प्रबंधित करने के इर्द-गिर्द केंद्रित होगा, बजाय एक सीधा एपीआई लेने के जो कि चीजें करता है जैसे - "बिक्री करें" आदि ...

जैसा कि अन्य उत्तर सुझाते हैं, बस मेरी राय;)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.