¿Qué es la programación basada en datos?


92

En el trabajo, me encargaron escribir un plan de ingeniería detallado para una aplicación de logística que estamos codificando para proponer a un cliente. Me han dicho que es una aplicación basada en datos. ¿Qué significa que una aplicación esté "basada en datos"? ¿Cual es lo opuesto? Parece que no puedo obtener una respuesta realmente clara para esto, aunque durante la búsqueda en la web puedo ver a muchas personas publicando sus propios ejemplos. Cualquier ayuda será muy apreciada.


2
Casi toda la programación del mundo real se basa en datos.
Martin Spamer

16
El clásico El arte de la programación Unix tiene una buena discusión sobre este tema: homepage.cs.uri.edu/~thenry/resources/unix_art/ch09s01.html . Cita clave: "En la programación basada en datos, los datos no son simplemente el estado de algún objeto, sino que en realidad definen el flujo de control del programa . Cuando la principal preocupación en OO es la encapsulación, la principal preocupación en la programación basada en datos es escribir la menor cantidad de código fijo posible ".
FMc

2
La respuesta de FMc es para mí la explicación más convincente, y debería ser una respuesta, pero elaborada.
Mads Skjern

Respuestas:


94

La programación basada en datos es un modelo de programación en el que los datos mismos controlan el flujo del programa y no la lógica del programa. Es un modelo en el que se controla el flujo ofreciendo diferentes conjuntos de datos al programa, donde la lógica del programa es una forma genérica de flujo o de cambios de estado.

Por ejemplo, si tiene un programa que tiene cuatro estados: ARRIBA - ABAJO - DETENER - INICIAR

Puede controlar este programa ofreciendo entrada (datos) que representa los estados:

  • set1: ABAJO - DETENER - INICIO - DETENER - ARRIBA - DETENER
  • set2: ARRIBA - ABAJO - ARRIBA - ABAJO

El código del programa permanece igual, pero el conjunto de datos (que no es de un tipo de entrada dinámica sino que se entrega estáticamente a la computadora) controla el flujo.


3
La parte de programación es escribir / definir la "forma genérica de flujo o de cambios de estado", ¿verdad? Pero puedo escribir una "máquina" de este tipo en cualquier idioma, y ​​no hay nada inusual en eso, por lo que realmente no obtengo nada de tu respuesta. Quizás la programación basada en datos es cuando el lenguaje en sí o una biblioteca fomenta o facilita mucho la escritura de tales máquinas. O tal vez la definición sea que el lenguaje / biblioteca definamos las máquinas de forma declarativa, es decir, no procedimental.
Mads Skjern

2
En en.wikipedia.org/wiki/Data-driven_programming , usan AWK como ejemplo. En AWK se proporcionan dos cosas, una expresión que define qué hacer con los datos y los datos en sí. ¿Cuál es la expresión que define lo que sucederá? Se considera que: 1) la programación, o 2) los datos. Si se considera que son datos, entonces la programación es la propia máquina de AWK, que por supuesto en el ejemplo de AWK es estática. Pero en otros contextos, por ejemplo, si se escribe la propia máquina de alguna manera procedimental tradicional, esa es la única parte de la programación.
Mads Skjern

Entonces ... asumiendo que los ejemplos de programación de unidades de datos más poderosos se están completando, ¿no se convierte esto simplemente en una declaración de inclusión en un motor con algunas suposiciones y herramientas preconstruidas?
ZirconCode

54

Aunque hay más de unas pocas ideas sobre lo que es la programación basada en datos, permítanme dar un ejemplo utilizando una estructura de datos y una función.

Ejemplo no basado en datos:

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

Ejemplo basado en datos:

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

En el primer ejemplo, la decisión de mostrar un resultado u otro está en la lógica del código. En el último ejemplo, la salida está determinada por los datos que se pasan a la función y por esa razón decimos que la salida está "impulsada" por los datos.


3
Sé que este es un ejemplo simple, pero el ejemplo no basado en datos parece un ejemplo de codificación descuidada. ¿Basarse en datos solo significa buenas prácticas de codificación? Si es así, ¿por qué alguien querría seguir un enfoque no basado en datos?
Jin

4
Lo siento, pero el primer ejemplo parece programación funcional (donde los datos y el comportamiento están desacoplados), y el segundo ejemplo parece orientado a objetos (donde los datos y el comportamiento están acoplados).
Vakey

47

"Me han dicho que es una aplicación basada en datos", debes preguntarle a quien te lo haya dicho.

No querrás leer una respuesta plausible aquí y luego descubrir que no es en absoluto lo que quiso decir la persona a cargo de tu proyecto. La frase es demasiado vaga para tener un significado inequívoco que definitivamente se aplicará a su proyecto.


8
Entiendo lo que quieres decir Richie, y ese es un buen punto. Sin embargo, me preguntaba si la "programación basada en datos" era una especie de término reconocido concretamente por la industria del desarrollo de software. No aceptaré ninguna respuesta de aquí simplemente al pie de la letra sin volver a consultar con mi jefe. -Gracias :)
jtbradle

5
Seguro, tenías razón al preguntar aquí. Pero creo que la respuesta es que no existe una definición universalmente aceptada.
RichieHindle

¿Cómo se llama cuando genera su UX a partir de metadatos? ¿Cómo se llama cuando su flujo de trabajo está controlado por una configuración externa? ¿Es esa una arquitectura basada en datos y una arquitectura basada en eventos? ¿La programación basada en datos sería más similar a WSDL y GraphQL donde se generan sus modelos pero aún codifica contra ellos como mejor le parezca?
Corey Alix

15

El desarrollo impulsado por datos es algo en lo que se pueden realizar cambios en la lógica del programa editando no el código sino la estructura de los datos.

Puede encontrar más información sobre la programación basada en datos en http://www.faqs.org/docs/artu/ch09s01.html

Programación procedimental

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

Programación basada en datos

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

La aplicación basada en datos es:

(1) un conjunto de reglas que aceptan diferentes conjuntos de datos para tomar una decisión predeterminada para cada conjunto de datos específico y arrojar un resultado como resultado

(2) algunos procesos predeterminados que se activan en función del resultado.

El ejemplo perfecto es ifttt.com

La aplicación no tiene más que reglas. Lo que lo hace útil son los datos que fluirán a través de él.


4

Este artículo explica más claramente lo que entiendo que significa el término:

¿Qué es la programación basada en tablas y basada en datos? http://www.paragoncorporation.com/ArticleDetail.aspx?ArticleID=31

La programación basada en datos / tablas es la técnica de factorizar construcciones de programación repetitivas en datos y un patrón de transformación. Los puristas a menudo se refieren a estos nuevos datos como metadatos cuando se usan de esta manera.


1

¿No hay nadie en el trabajo que pueda ayudarte con esta pregunta? Es muy difícil visualizar en qué está trabajando sin un ejemplo mayor. Pero por lo que deduzco, será un programa en el que principalmente ingresan información. Eso podrá recuperar y editar la información que el cliente necesita administrar.

¡¡La mejor de las suertes!!


1

Creo que el consejo dado no es malo, pero siempre he pensado que el diseño basado en datos gira en torno al uso de estructuras de datos existentes o dadas como base para los objetos de su dominio.

Por ejemplo, el programa clásico de gestión de vendedores puede tener la siguiente estructura de tipo de tablas:

  • Vendedor
  • Región
  • Clientes
  • Productos

Por lo tanto, su aplicación se centraría en administrar estas estructuras de datos, en lugar de tomar una API directa que hace cosas como: "hacer una venta", etc.

Solo mi opinión, como sugieren las otras respuestas;)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.