Что такое программирование на основе данных?
На работе мне было поручено написать подробный инженерный план для логистического приложения, которое мы кодируем, чтобы предложить клиенту. Мне сказали, что это приложение, управляемое данными. Что значит для приложения быть "управляемым данными"? Что наоборот? Похоже, я не могу получить действительно четкого ответа на этот вопрос, хотя во время поиска в Интернете я вижу, как многие люди публикуют свои собственные примеры. Любая помощь будет принята с благодарностью.
9 ответов
Управляемое данными программирование - это модель программирования, в которой сами данные управляют потоком программы, а не логикой программы. Это модель, в которой вы управляете потоком, предлагая программе различные наборы данных, где логика программы является некоторой общей формой потока или изменений состояния.
Например, если у вас есть программа, которая имеет четыре состояния: UP - DOWN - STOP - START
Вы можете управлять этой программой, предлагая ввод (данные), который представляет состояния:
- set1: ВНИЗ - СТОП - СТАРТ - СТОП - ВВЕРХ - СТОП
- set2: ВВЕРХ - ВНИЗ - ВВЕРХ - ВНИЗ
Программный код остается тем же, но набор данных (который не является динамическим типом ввода, но статически предоставляется компьютеру) контролирует поток.
Хотя есть более чем несколько идей относительно того, что такое программирование, управляемое данными, позвольте мне привести пример, использующий структуру данных и функцию.
Не управляемый данными пример:
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
В первом примере решение показать один или другой результат заключается в логике кода. В последнем примере выходные данные определяются данными, которые передаются в функцию, и по этой причине мы говорим, что выходные данные "управляются" данными.
"Мне сказали, что это приложение, управляемое данными", - вам нужно спросить любого, кто вам это сказал.
Вы не хотите читать какой-то правдоподобный ответ здесь, а затем узнаете, что это совсем не то, что имел в виду человек, отвечающий за ваш проект. Фраза слишком расплывчата, чтобы иметь однозначное значение, которое определенно будет относиться к вашему проекту.
Разработка на основе данных - это то, что можно внести изменения в логику программы, редактируя не код, а структуру данных.
Вы можете найти больше информации о программировании на основе данных на 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]);
}
Приложение, управляемое данными:
(1) набор правил, принимающих разные наборы данных, чтобы принимать заранее определенное решение для каждого конкретного набора данных и выбрасывать результат в качестве результата
(2) несколько предопределенных процессов, которые запускаются в зависимости от результата.
Прекрасный пример - ifttt.com
Приложение не имеет ничего, кроме правил. Что делает его полезным, так это данные, которые будут проходить через него.
В этой статье наиболее четко объясняется, что я понимаю под этим термином:
Что такое табличное и управляемое данными программирование? http://www.paragoncorporation.com/ArticleDetail.aspx?ArticleID=31
Программирование на основе данных / таблиц - это метод разделения повторяющихся конструкций программирования на данные и шаблон преобразования. Эти новые данные часто упоминаются пуристами как метаданные при использовании таким образом.
Я думаю, что данный совет не плох, но я всегда думал, что Data Driven Design вращается вокруг использования существующих или данных структур данных в качестве основы для ваших доменных объектов.
Например, классическая программа управления продавцом может иметь следующую структуру типов таблиц:
- Salesperson
- Область, край
- Клиенты
- Товары
Таким образом, ваше приложение будет сосредоточено на управлении этими структурами данных, а не на прямом API, который выполняет такие вещи, как "продажа" и т. Д.
Просто мое мнение, как подсказывают другие ответы;)
Никто на работе не может помочь вам с этим вопросом? Очень сложно представить, над чем вы работаете, без большего примера. Но из того, что я собираю, это будет программа, в которую они в основном вводят информацию. Это позволит получать и редактировать информацию, которой должен управлять клиент.
Удачи!!
Представьте, что вам нужна программа, которая запрашивает у пользователя существительные и прилагательные (или другие языковые конструкции), которые вы будете использовать для заполнения предложения (например, MadLibs).
Процедурный пример
noun1 = input('Noun: ')
noun2 = input('Noun: ')
adj = input('Adjective: ')
print(f'The {noun1} jumped over the {adj} {noun2}')
Если бы вы хотели написать другую версию (больше существительных, другую фразу и т. д.), вы бы написали другую программу.
Пример, управляемый данными
def get_inputs(inputs_needed):
inputs = {}
for key, prompt in inputs_needed.items():
inputs[key] = input(prompt + ': ')
return inputs
for game in games_json:
inputs = get_inputs(game['inputs_needed'])
print(game['phrase'].format(**inputs)
Теперь индивидуальную игру можно определить как:
{
"inputs_needed": {
"noun1": "Noun",
"noun2": "Noun",
"adj": "Adjective"
},
"phrase": "The {noun1} jumped over the {adj} {noun2}"
}
Теперь, чтобы создать новую версию, вы просто меняете файл JSON. Код остается прежним.