O que é programação baseada em dados?


90

Recebi a tarefa de escrever um plano de engenharia detalhado para um aplicativo de logística que estamos programando para propor a um cliente. Disseram-me que é um aplicativo baseado em dados. O que significa um aplicativo ser "orientado por dados"? Qual é o oposto? Não consigo obter uma resposta realmente clara para isso, embora, durante a pesquisa na web, possa ver muitas pessoas postando seus próprios exemplos. Qualquer ajuda seria muito apreciada.


2
Praticamente toda a programação do mundo real é orientada por dados.
Martin Spamer

16
O clássico The Art of Unix Programming tem uma boa discussão sobre este tópico: homepage.cs.uri.edu/~thenry/resources/unix_art/ch09s01.html . Citação chave: "Na programação orientada a dados, os dados não são apenas o estado de algum objeto, mas na verdade definem o fluxo de controle do programa . Onde a principal preocupação em OO é o encapsulamento, a principal preocupação na programação orientada a dados é a escrita o mínimo de código fixo possível . "
FMc

2
A resposta da FMc é para mim a explicação mais convincente e deveria ser uma resposta, mas elaborada.
Mads Skjern

Respostas:


93

A programação orientada por dados é um modelo de programação em que os próprios dados controlam o fluxo do programa e não a lógica do programa. É um modelo onde você controla o fluxo, oferecendo diferentes conjuntos de dados para o programa, onde a lógica do programa é alguma forma genérica de fluxo ou de mudanças de estado.

Por exemplo, se você tiver um programa com quatro estados: UP - DOWN - STOP - START

Você pode controlar este programa, oferecendo entrada (dados) que representa os estados:

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

O código do programa permanece o mesmo, mas o conjunto de dados (que não é do tipo de entrada dinâmica, mas estaticamente fornecido ao computador) controla o fluxo.


3
A parte de programação é escrever / definir a "forma genérica de fluxo ou de mudança de estado", certo? Mas posso escrever essa "máquina" em qualquer idioma, e não há nada de incomum nisso, então realmente não entendi nada com sua resposta. Talvez a programação baseada em dados seja quando a própria linguagem ou uma biblioteca encoraja ou torna muito fácil escrever essas máquinas. Ou talvez a definição seja que a linguagem / biblioteca permita definir as máquinas de forma declarativa, ou seja, não procedural.
Mads Skjern

2
Em en.wikipedia.org/wiki/Data-driven_programming , eles usam AWK como exemplo. No AWK, duas coisas são fornecidas, uma expressão que define o que fazer com os dados e os próprios dados. Qual é a expressão que define o que deve acontecer considerado: 1) a programação, ou 2) dados. Se forem considerados dados, então a programação é a própria máquina do AWK, que, claro, no exemplo do AWK, é estática. Mas em outros contextos, por exemplo, se escrever a própria máquina de alguma forma processual tradicional, essa é a parte de programação.
Mads Skjern

Então ... assumindo que exemplos de programação de drives de dados mais poderosos estão se tornando completos, isso não se torna simplesmente uma instrução de inclusão em um mecanismo com algumas suposições e ferramentas pré-construídas?
ZirconCode

53

Embora existam mais do que algumas idéias sobre o que é programação orientada a dados, permita-me dar um exemplo usando uma estrutura de dados e uma função.

Exemplo não orientado a dados:

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

Exemplo baseado em dados:

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

No primeiro exemplo, a decisão de mostrar um resultado ou outro está na lógica do código. No último exemplo, a saída é determinada pelos dados que são passados ​​para a função e por esse motivo dizemos que a saída é 'orientada' pelos dados.


3
Eu sei que este é um exemplo simples, mas o exemplo não orientado a dados parece apenas um exemplo de codificação desleixada. Orientado por dados significa apenas boas práticas de codificação? Em caso afirmativo, por que alguém iria querer seguir uma abordagem não baseada em dados?
Jin de

4
Lamento, mas o primeiro exemplo parece programação funcional (onde dados e comportamento são desacoplados), e o segundo exemplo parece orientado a objetos (onde dados e comportamento são acoplados).
Vakey

47

“Disseram-me que é um aplicativo orientado por dados” - você precisa perguntar a quem lhe disse isso.

Você não quer ler uma resposta plausível aqui e depois descobrir que não é exatamente isso que a pessoa responsável pelo seu projeto quis dizer. A frase é muito vaga para ter um significado inequívoco que definitivamente se aplicará ao seu projeto.


8
Eu entendo o que você quer dizer com Richie, e esse é um bom ponto. No entanto, eu queria saber se "programação orientada a dados" era algum tipo de termo reconhecido concretamente pela indústria de desenvolvimento de software. Não aceitarei nenhuma resposta daqui simplesmente pelo valor de face, sem verificar novamente com meu chefe. -Obrigado :)
jtbradle

5
Claro - você estava certo em perguntar aqui. Mas acho que a resposta é que não existe uma definição universalmente aceita.
RichieHindle

Como é chamado quando você gera sua UX a partir de metadados? Como é chamado quando seu fluxo de trabalho é controlado por uma configuração externa? Isso é Data Driven Architecture e Event Driven Architecture? A programação orientada a dados seria mais semelhante a WSDL e GraphQL, onde seus modelos são gerados, mas você ainda codifica contra eles da maneira que achar melhor?
Corey Alix

15

O desenvolvimento orientado a dados é algo em que se pode fazer alterações na lógica do programa editando não o código, mas a estrutura de dados.

Você pode encontrar mais informações sobre programação baseada em dados em http://www.faqs.org/docs/artu/ch09s01.html

Programação Processual

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

Programação baseada em dados

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

O aplicativo baseado em dados é:

(1) um conjunto de regras que aceitam diferentes conjuntos de dados para tomar uma decisão predeterminada para cada conjunto de dados específico e lançar o resultado como resultado

(2) alguns processos predeterminados que são acionados com base no resultado.

Um exemplo perfeito é ifttt.com

O aplicativo não tem nada além de regras. O que o torna útil são os dados que fluirão por ele.


4

Este artigo explica de forma mais clara o que entendo o termo significa:

O que é programação baseada em tabelas e baseada em dados? http://www.paragoncorporation.com/ArticleDetail.aspx?ArticleID=31

A programação orientada a dados / tabelas é a técnica de fatorar construções de programação repetitivas em dados e um padrão de transformação. Esses novos dados são frequentemente chamados pelos puristas de metadados quando usados ​​dessa maneira.


1

Não há ninguém no trabalho que possa ajudá-lo com essa questão? É muito difícil visualizar o que você está trabalhando sem um exemplo maior. Mas pelo que percebi, será um programa no qual eles inserem principalmente as informações. Isso será capaz de recuperar e editar informações que o cliente precisa gerenciar.

Boa sorte!


1

Acho que o conselho dado não é ruim, mas sempre pensei que o Data Driven Design gira em torno do uso de estruturas de dados existentes ou fornecidas como base para seus objetos de domínio.

Por exemplo, o programa clássico de gerenciamento de vendedor pode ter a seguinte estrutura de tipo de tabelas:

  • Vendedor
  • Região
  • clientes
  • Produtos

Portanto, seu aplicativo seria centrado no gerenciamento dessas estruturas de dados, em vez de tomar uma API direta que faz coisas como - "fazer a venda" etc ...

Apenas minha opinião como as outras respostas sugerem;)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.