Вопрос по – Что такое программирование на основе данных?

81

Мне поручили на работе написать подробный инженерный план для логистического приложения, которое мы кодируем, чтобы предложить клиенту. Мне сказали, что это приложение, управляемое данными. Что значит для приложения быть «управляемым данными»? Что наоборот? Кажется, я не могу получить какого-либо действительно четкого ответа на этот вопрос, хотя во время поиска в Интернете я вижу, как многие люди публикуют свои собственные примеры. Любая помощь будет принята с благодарностью.

Практически все программирование в реальном мире основано на данных. Martin Spamer
Ответ FMc является для меня наиболее убедительным объяснением, и должен быть ответом, но подробным. Mads Skjern
КлассическийThe Art of Unix Programming имеет хорошее обсуждение этой темы:homepage.cs.uri.edu/~thenry/resources/unix_art/ch09s01.html, Ключевая цитата: «В программировании, управляемом данными, данные - это не просто состояние какого-либо объекта, но на самом делеdefines the control flow of the program, Там, где основной проблемой в ОО является инкапсуляция, основная проблема в программировании на основе данныхwriting as little fixed code as possible. & Quot; FMc

Ваш Ответ

8   ответов
85

Управляемое данными программирование - это модель программирования, в которой сами данные управляют потоком программы, а не логикой программы. Это модель, в которой вы управляете потоком, предлагая программе различные наборы данных, где логика программы является некоторой общей формой потока или изменений состояния.

Например, если у вас есть программа, которая имеет четыре состояния: UP - DOWN - STOP - START

Вы можете управлять этой программой, предлагая ввод (данные), который представляет состояния:

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

Программный код остается тем же, но набор данных (который не является динамическим типом ввода, но статически передается компьютеру) контролирует поток.

Error: User Rate Limit Exceededen.wikipedia.org/wiki/Data-driven_programmingError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
0

Я думаю, что данный совет не является плохим, но я всегда думал, что Data Driven Design вращается вокруг использования существующих или данных структур данных в качестве основы для ваших доменных объектов.

Например, классическая программа управления продавцами может иметь следующую структуру типов таблиц:

  • Salesperson
  • Region
  • Customers
  • Products

Таким образом, ваше приложение будет сосредоточено на управлении этими структурами данных, а не на прямом API, который делает такие вещи, как - «сделать продажу». так далее...

Просто мое мнение, как подсказывают другие ответы;)

4

В этой статье наиболее четко объясняется, что я понимаю под этим термином:

Что такое программирование на основе таблиц и данных? http://www.paragoncorporation.com/ArticleDetail.aspx?ArticleID=31

Data/Table-Driven programming is the technique of factoring repetitious programming constructs into data and a transformation pattern. This new data is often referred to by purists as meta-data when used in this fashion.

46

Хотя есть более чем несколько идей относительно того, что такое программирование, управляемое данными, позвольте мне привести пример, использующий структуру данных и функцию.

Не управляемый данными пример:

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

В первом примере решение показать один или другой результат заключается в логике кода. В последнем примере выходные данные определяются данными, которые передаются в функцию, и по этой причине мы говорим, что выходные данные являются «управляемыми». по данным.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
7

Приложение, управляемое данными:

(1) набор правил, принимающих разные наборы данных, чтобы принимать заранее определенное решение для каждого конкретного набора данных и выбрасывать результат в качестве результата

(2) несколько предопределенных процессов, которые запускаются в зависимости от результата.

Прекрасный пример - ifttt.com

Приложение не имеет ничего, кроме правил. Что делает его полезным, так это данные, которые будут проходить через него.

43

"Мне сказали, что это приложение, управляемое данными" - тебе нужно спросить того, кто тебе это сказал.

Вы не хотите читать какой-нибудь правдоподобный ответ здесь, а затем узнаете, что это совсем не то, что имел в виду человек, отвечающий за ваш проект. Фраза слишком расплывчата, чтобы иметь однозначное значение, которое определенно будет относиться к вашему проекту.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded jtbradle
1

Никто на работе не может помочь вам с этим вопросом? Очень сложно представить, над чем вы работаете, без большего примера. Но из того, что я собираю, это будет программа, в которую они в основном вводят информацию. Это позволит получать и редактировать информацию, которой должен управлять клиент.

Удачи!!

9

Data driven development is something that one can make changes to the logic of the program by editing not the code but the data structure.

Вы можете найти больше информации о программировании на основе данных наhttp://www.faqs.org/docs/artu/ch09s01.html

Procedural Programming

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

Data Driven Programming

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

Похожие вопросы