ডেটা চালিত প্রোগ্রামিং কি?


96

আমাকে একটি লজিস্টিক অ্যাপ্লিকেশনটির জন্য একটি বিশদ প্রকৌশল পরিকল্পনা লিখতে বলা হয়েছে যা আমরা কোনও গ্রাহকের কাছে প্রস্তাব দেওয়ার জন্য কোড করছি। আমাকে বলা হয়েছে যে এটি একটি ডেটা চালিত অ্যাপ্লিকেশন। অ্যাপ্লিকেশনটির "ডেটা-চালিত" হওয়ার অর্থ কী? বিপরীতটি কী? আমি এর কোনও সত্যিকারের সুস্পষ্ট উত্তর পাব বলে মনে হয় না যদিও ওয়েব সন্ধানের সময় আমি দেখতে পাচ্ছি অনেক লোক নিজের উদাহরণ পোস্ট করছে। কোন সাহায্যের ব্যাপকভাবে প্রশংসা হবে।


4
খুব সুন্দর সমস্ত বাস্তব প্রোগ্রামিং ডেটা চালিত।
মার্টিন স্প্যামার

16
সর্বোত্তম ইউনিক্স এর দ্য আর্ট প্রোগ্রামিং : এই বিষয়ে একজন ভাল আলোচনা হয়েছে homepage.cs.uri.edu/~thenry/resources/unix_art/ch09s01.html । মূল উক্তি: "ডেটা-চালিত প্রোগ্রামিংয়ে, ডেটা কেবল কোনও বস্তুর অবস্থা নয়, তবে প্রোগ্রামের নিয়ন্ত্রণ প্রবাহকে সংজ্ঞায়িত করে O যেখানে ওওর প্রাথমিক উদ্বেগ এনক্যাপসুলেশন, সেখানে ডেটা-চালিত প্রোগ্রামিংয়ের প্রাথমিক উদ্বেগটি লিখছে যতটা সম্ভব সংশোধন কোড "
এফএমসি

4
এফএমসির উত্তরটি আমার পক্ষে সবচেয়ে দৃinc়প্রত্যয়ী ব্যাখ্যা, এবং একটি উত্তর হওয়া উচিত, তবে বিশদভাবে ব্যাখ্যা করা উচিত।
ম্যাডস স্কজার্ন

উত্তর:


98

ডেটা চালিত প্রোগামিং একটি প্রোগ্রামিং মডেল যেখানে ডেটা নিজে প্রোগ্রামের প্রবাহকে নিয়ন্ত্রণ করে না প্রোগ্রামের যুক্তিকে। এটি এমন একটি মডেল যেখানে আপনি প্রোগ্রামটিতে বিভিন্ন ডেটা সেট সরবরাহ করে প্রবাহ নিয়ন্ত্রণ করেন যেখানে প্রোগ্রাম যুক্তি প্রবাহের কিছু জেনেরিক রূপ বা রাষ্ট্র-পরিবর্তনের is

উদাহরণস্বরূপ যদি আপনার এমন চারটি রাষ্ট্র রয়েছে এমন প্রোগ্রাম থাকে: ইউপি - ডাউন - স্টপ - START

আপনি রাষ্ট্রসমূহের প্রতিনিধিত্ব করে এমন ইনপুট (ডেটা) অফার করে এই প্রোগ্রামটি নিয়ন্ত্রণ করতে পারেন:

  • সেট 1: ডাউন - স্টপ - START - স্টপ - ইউপি - স্টপ
  • সেট 2: উত্তর - ডাউন - উত্তর - ডাউন

প্রোগ্রাম কোডটি একই থাকে তবে ডেটা সেট (যা কোনও গতিশীল ইনপুট ধরণের নয় তবে স্থিরভাবে কম্পিউটারে দেওয়া হয়) প্রবাহকে নিয়ন্ত্রণ করে।


4
প্রোগ্রামিং অংশটি "প্রবাহের সাধারণ ফর্ম বা রাষ্ট্র-পরিবর্তনের" লিখতে / সংজ্ঞায়িত করছে, আমি কি ঠিক আছি? তবে আমি কোনও ভাষায় এ জাতীয় "মেশিন" লিখতে পারি, এবং এটি সম্পর্কে অস্বাভাবিক কিছু নেই, তাই আপনার উত্তর থেকে আমি সত্যিই কিছু পাই না। সম্ভবত ডেটা-চালিত প্রোগ্রামিং হ'ল যখন ভাষা নিজে বা একটি গ্রন্থাগার, উত্সাহ দেয় বা এ জাতীয় মেশিনগুলি লিখতে খুব সহজ করে তোলে। অথবা সংজ্ঞাটি হ'ল ভাষা / গ্রন্থাগার যাক যাক যন্ত্রগুলি একটি ঘোষণামূলক উপায়ে সংজ্ঞায়িত করা যাক, পদ্ধতিগত নয়।
ম্যাডস স্কজার্ন

4
উপর en.wikipedia.org/wiki/Data-driven_programming , তারা একটি উদাহরণ হিসাবে awk ব্যবহার করুন। এডাব্লুকেতে দুটি জিনিস সরবরাহ করা হয়, ডেটা দিয়ে কী করা উচিত তা নির্ধারণ করে একটি এক্সপ্রেশন এবং ডেটা নিজেই। কী হতে হবে তা বোঝাতে সংজ্ঞাটি কী: 1) প্রোগ্রামিং বা 2) ডেটা। যদি এটি ডেটা হিসাবে বিবেচনা করা হয়, তবে প্রোগ্রামিংটি নিজেই ডাব্লু কে এর মেশিন, যা অবশ্যই এডাব্লুকে উদাহরণস্বরূপ স্থিতিশীল। তবে অন্যান্য প্রসঙ্গে যেমন, যদি কিছু traditionalতিহ্যগত পদ্ধতিগত পদ্ধতিতে মেশিনটি নিজে লিখতে হয় তবে তা একা প্রোগ্রামিং অংশ।
ম্যাডস স্কজার্ন

সুতরাং ... অধিকতর শক্তিশালী ডেটা ড্রাইভ প্রোগ্রামিং উদাহরণগুলি সম্পূর্ণ টিউরিংয়ের কথা মনে করে, এটি কি কোনও প্রাক-বিল্ট অনুমান এবং সরঞ্জামগুলি সহ কোনও ইঞ্জিনে অন্তর্ভুক্ত বিবৃতি হিসাবে পরিণত হয় না?
জিরকনকোড

55

যদিও ডেটা চালিত প্রোগ্রামিং কী তা সম্পর্কে কয়েকটি ধারণার বেশি থাকলেও, আমাকে ডেটা কাঠামো এবং একটি ফাংশন ব্যবহার করে একটি উদাহরণ দেওয়ার অনুমতি দিন।

অ ডেটা চালিত উদাহরণ:

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

প্রথম উদাহরণে একটি ফলাফল বা অন্যটি দেখানোর সিদ্ধান্ত কোড যুক্তিতে রয়েছে। শেষ উদাহরণে আউটপুটটি ফাংশনে পাস করা ডেটা দ্বারা নির্ধারিত হয় এবং সেই কারণে আমরা বলি যে আউটপুট ডেটা দ্বারা চালিত হয়।


4
আমি জানি এটি একটি সাধারণ উদাহরণ, তবে অ-ডেটা-চালিত উদাহরণটি কেবল opালু কোডিংয়ের উদাহরণের মতো দেখায়। ডেটা-চালিত মানে কি কেবল ভাল কোডিং অনুশীলন বোঝায়? যদি তা হয় তবে কেন কেউ ডেটা-ভিত্তিক চালিত পদ্ধতির অনুসরণ করতে চান?
জ্বিন

4
আমি দুঃখিত, তবে প্রথম উদাহরণটি ফাংশনাল প্রোগ্রামিংয়ের মতো দেখায় (যেখানে ডেটা এবং আচরণটি ডিউপলড হয়), এবং দ্বিতীয় উদাহরণটি অবজেক্ট ওরিয়েন্টেড (যেখানে ডেটা এবং আচরণের মিলিত হয়) বলে মনে হয়।
ভেকেয়

47

"আমাকে বলা হয়েছে যে এটি একটি ডেটা চালিত অ্যাপ্লিকেশন" - আপনাকে যে কেউ এটি বলেছে আপনাকে জিজ্ঞাসা করতে হবে।

আপনি এখানে কিছু প্রশংসনীয় উত্তর পড়তে চান না এবং তারপরে এটি সন্ধান করুন যে আপনার প্রকল্পের দায়িত্বে থাকা ব্যক্তিটির অর্থ এটি মোটেই নয়। এই শব্দগুচ্ছটির দ্ব্যর্থহীন অর্থের জন্য খুব অস্পষ্ট যা অবশ্যই আপনার প্রকল্পে প্রযোজ্য।


8
আপনি রিচি বলতে চাইছেন তা আমি বুঝতে পেরেছি এবং এটি একটি ভাল বিষয়। যাইহোক, আমি ভাবছিলাম যে "ডেটা-চালিত প্রোগ্রামিং" কোনও সফটওয়্যার ডেভলপমেন্ট ইন্ডাস্ট্রির দ্বারা কংক্রিটলি স্বীকৃত ছিল was আমি আমার বসের সাথে ফিরে যাচাই না করে কেবল এখানে ফেসবুকের সাথে কোনও উত্তর নেব না।
jtbradle

4
অবশ্যই - আপনি এখানে জিজ্ঞাসা করা ঠিক ছিল। তবে আমি মনে করি উত্তরটি হ'ল সর্বজনস্বীকৃত সংজ্ঞা নেই।
রিচিহিন্ডল

4
আপনি যখন মেটা ডেটা থেকে আপনার ইউএক্স তৈরি করেন তখন তাকে কী বলা হয়? আপনার কর্মপ্রবাহ যখন বাহ্যিক কনফিগারেশন দ্বারা নিয়ন্ত্রিত হয় তখন তাকে কী বলা হয়? এটি কি ডেটাচালিত আর্কিটেকচার এবং ইভেন্ট চালিত আর্কিটেকচার? ডেটাচালিত প্রোগ্রামিং কি ডাব্লুএসডিএল এবং গ্রাফকিউএল এর অনুরূপ হতে পারে যেখানে আপনার মডেলগুলি উত্পন্ন হয় তবে আপনি এখনও উপযুক্ত দেখেন তবে সেগুলির বিরুদ্ধে কোড দিচ্ছেন?
কোরি অ্যালিক্স

15

ডেটা চালিত বিকাশ এমন একটি বিষয় যা কেউ কোডটি নয় বরং ডেটা কাঠামো সম্পাদনা করে প্রোগ্রামের যুক্তিতে পরিবর্তন আনতে পারে।

আপনি এখানে ডেটা-চালিত প্রোগ্রামিং সম্পর্কে আরও তথ্য পেতে পারেন ।

প্রক্রিয়াজাতীয় প্রোগ্রামিং

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]);
}

4
@ দেলরোকো মৃত লিঙ্কটি দেখার জন্য ধন্যবাদ! ভবিষ্যতে, আপনি এই জাতীয় ওয়েব পৃষ্ঠাগুলির পুরানো অনুলিপিগুলি খুঁজতে ইন্টারনেট সংরক্ষণাগারটিতে যেতে পারেন । আমি এগিয়ে গিয়েছি এবং এটি ব্যবহার করে এই পোস্টের লিঙ্কটি পুনরুদ্ধার করেছি।
রায়ান এম

8

ডেটা চালিত অ্যাপ্লিকেশনটি হ'ল:

(1) প্রতিটি নির্দিষ্ট ডেটা সেটের জন্য পূর্বনির্ধারিত সিদ্ধান্ত নিতে এবং ফলাফল হিসাবে ফলাফল ছুঁড়ে ফেলার জন্য বিভিন্ন ডেটা সেট গ্রহণ করার নিয়মের একটি সেট

(২) কয়েকটি পূর্বনির্ধারিত প্রক্রিয়া যা ফলাফলের ভিত্তিতে ট্রিগার হয়।

নিখুঁত উদাহরণটি ifttt.com .com

আবেদনের বিধি ছাড়া কিছুই নেই। কী এটি কার্যকর করে তা হ'ল ডেটা যা এর মাধ্যমে প্রবাহিত হবে।


4

এই নিবন্ধটি আমি স্পষ্টভাবে বোঝাতে চাইছি এই শব্দটির অর্থ:

টেবিল-চালিত এবং ডেটা-চালিত প্রোগ্রামিং কী? http://www.paragoncor কর্পোরেট.com/ArticleDetail.aspx?ArticleID=31

ডেটা / টেবিল-চালিত প্রোগ্রামিং হ'ল পুনরাবৃত্তি প্রোগ্রামিং কন্সট্রাক্টসগুলি ডেটাতে রূপান্তর করার পদ্ধতি এবং একটি রূপান্তর প্যাটার্ন। এই ফ্যাশনে ব্যবহৃত হলে এই নতুন ডেটা প্রায়শই পিউরিস্টরা মেটা-ডেটা হিসাবে উল্লেখ করেন ।


1

কাজের কেউ নেই যে এই প্রশ্ন আপনাকে সাহায্য করতে পারে? এর চেয়ে বড় উদাহরণ ছাড়াই আপনি কী কাজ করছেন তা কল্পনা করা খুব কঠিন। তবে আমি যা সংগ্রহ করি তা থেকে এটি এমন একটি প্রোগ্রাম হতে চলেছে যে তারা প্রাথমিকভাবে তথ্য প্রবেশ করায়। এটি গ্রাহককে যে তথ্য পরিচালনা করতে হবে তা পুনরুদ্ধার এবং সম্পাদনা করতে সক্ষম হবে।

শুভকামনা করছি!!


1

আমি মনে করি প্রদত্ত পরামর্শটি খারাপ নয় তবে আমি সর্বদা ডেটা ড্রাইভড ডিজাইনের আপনার ডোমেন অবজেক্টের ভিত্তি হিসাবে বিদ্যমান বা প্রদত্ত ডেটা স্ট্রাকচার ব্যবহার করে ঘুরে বেড়ানোর কথা ভেবেছি।

উদাহরণস্বরূপ, ক্লাসিক বিক্রয়কর্মী পরিচালনা প্রোগ্রামে নিম্নলিখিত ধরণের টেবিলগুলির কাঠামো থাকতে পারে:

  • বিক্রয়ক
  • অঞ্চল
  • গ্রাহকরা
  • পণ্য

সুতরাং, আপনার অ্যাপ্লিকেশন এই ডেটা স্ট্রাকচারগুলি পরিচালনা করার চারদিকে কেন্দ্রিক হবে, কোনও সরল এপিআই নেওয়ার পরিবর্তে - "বিক্রয় করুন" ইত্যাদি জিনিসগুলি করে ...

অন্যান্য উত্তরগুলির হিসাবে ঠিক আমার মতামত;)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.