2009-06-30 8 views
72

Mi è stato assegnato il compito di scrivere un piano di ingegneria dettagliato per un'applicazione logistica che stiamo codificando per proporre a un cliente. Mi è stato detto che si tratta di un'applicazione basata sui dati. Che cosa significa per un'applicazione essere "data-driven"? Qual è il contrario? Non riesco a ottenere una risposta davvero chiara per questo, sebbene durante la ricerca sul Web posso vedere molte persone che pubblicano i propri esempi. Qualsiasi aiuto sarebbe molto apprezzato.Che cos'è la programmazione basata su dati?

+2

Praticamente tutto mondo reale pr l'ogramming è basato sui dati. –

+12

Il classico * The Art of Unix Programming * ha una buona discussione di questo argomento: http://homepage.cs.uri.edu/~thenry/resources/unix_art/ch09s01.html. Citazione chiave: "Nella programmazione basata sui dati, i dati non sono semplicemente lo stato di alcuni oggetti, ma in realtà ** definiscono il flusso di controllo del programma **.Laddove la preoccupazione principale in OO è l'incapsulamento, la preoccupazione principale nella programmazione basata sui dati è ** scrivere il meno possibile il codice fisso **. " – FMc

+2

La risposta di FMc è per me la spiegazione più convincente, e dovrebbe essere una risposta, ma elaborata –

risposta

74

dati driven è un modello di programmazione in cui i dati stessi controlla il flusso del programma e non il logica del programma. È un modello in cui si controlla il flusso offrendo diversi set di dati al programma in cui la logica del programma è una forma generica di flusso o di cambiamenti di stato.

Per esempio, se si dispone di programma che ha quattro stati: UP - DOWN - STOP - AVVIO

È possibile controllare questo programma offrendo ingresso (dati) che rappresenta gli stati:

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

il codice del programma rimane lo stesso, ma impostare i dati (che non è di un ingresso dinamica digitare ma staticamente dato al computer) controlla il flusso.

+1

La parte di programmazione sta scrivendo/definendo il " forma generica di flusso o di cambiamenti di stato ", ho ragione? Ma posso scrivere una" macchina "del genere in qualsiasi lingua, e non c'è niente di strano in questo, quindi non ottengo davvero niente della tua risposta Forse la programmazione basata sui dati è quando il linguaggio stesso o una libreria, incoraggia o rende molto facile scrivere tali macchine. O forse la definizione è che la lingua/libreria consente di definire le macchine in modo dichiarativo, cioè non procedurale. –

+1

In https://en.wikipedia.org/wiki/Data-driven_programming, usano AWK come esempio. In AWK vengono fornite due informazioni, un'espressione che definisce cosa fare con i dati e i dati stessi. Qual è l'espressione che definisce cosa deve accadere considerato: 1) la programmazione, o 2) i dati. Se si considerano dati, la programmazione è la macchina stessa di AWK, che ovviamente nell'esempio di AWK è statica. Ma in altri contesti, ad esempio se si scrive la macchina stessa in qualche modo procedurale tradizionale, quella sola è la parte di programmazione. –

40

"Mi è stato detto che si tratta di un'applicazione basata sui dati" - è necessario chiedere chi l'ha detto.

Non si vuole leggere una risposta plausibile qui e poi scoprire che non è affatto ciò che significava la persona responsabile del progetto. La frase è troppo vaga per avere un significato non ambiguo che si applicherà sicuramente al tuo progetto.

+7

Capisco cosa intendi Richie e questo è un buon punto, ma mi chiedevo se la "programmazione basata sui dati" fosse una sorta di termine concretamente riconosciuto dall'industria dello sviluppo del software. semplicemente al valore nominale qui senza controllare il mio capo. -Grazie :) – jtbradle

+5

Certo - avevi ragione a chiedere qui, ma penso che la risposta sia che non esiste una definizione universalmente accettata – RichieHindle

1

Non c'è nessuno al lavoro che possa aiutarti con questa domanda? È molto difficile visualizzare a cosa stai lavorando senza un maggior esempio. Ma da ciò che raccolgo sarà un programma in cui inseriscono principalmente informazioni. Sarà in grado di recuperare e modificare le informazioni che il cliente deve gestire.

Buona fortuna !!

0

Penso che il consiglio dato non sia male, ma ho sempre pensato che Data Driven Design ruotasse attorno all'uso di strutture dati esistenti o dati come fondamento per gli oggetti del dominio.

Per esempio, il classico programma di gestione venditore potrebbe avere la seguente struttura tipo di tabelle:

  • Venditore
  • Regione
  • clienti
  • Prodotti

Quindi, l'applicazione sarebbe incentrato sulla gestione di queste strutture di dati, invece di prendere una semplice API che lo fa es cose come - "rendere la vendita", ecc ...

solo la mia opinione, come le altre risposte suggeriscono; programmazione)

4

Questo articolo spiega molto chiaramente quello che ho capito il termine per significare:

Qual è guidata da tabella e Programmazione Data-Driven? http://www.paragoncorporation.com/ArticleDetail.aspx?ArticleID=31

dati/Tabella-Driven programmazione è tecnica di fattorizzazione ripetitivo programmazione costrutti in dati e un modello trasformazione. Questi nuovi dati sono spesso indicati dai puristi come meta-data quando vengono usati in questo modo.

39

Anche se ci sono più di un paio di idee su ciò che i dati di programmazione driven è, mi permetterà di fare un esempio utilizzando una struttura dati e una funzione.

non dati di esempio guidato:

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 

dati Esempio guidato:

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

Nel primo esempio la decisione di mostrare un risultato o l'altro è nella logica del codice. Nell'ultimo esempio l'output è determinato dai dati che vengono passati alla funzione e per questo motivo diciamo che l'output è 'guidato' dai dati.

6

dati applicazione driven è:

(1) un insieme di regole accettare dati diversi set per prendere una decisione predeterminato per ogni dati specifici stabiliti e gettando risultato come risultato

(2) alcuni processi predeterminati che vengono attivati ​​in base al risultato.

Esempio perfetto è ifttt.com

L'applicazione non ha nulla ma le regole. Ciò che lo rende utile sono i dati che fluiranno attraverso di esso.

5

Lo sviluppo guidato dai dati è qualcosa che è possibile apportare modifiche alla logica del programma modificando non il codice ma la struttura dei dati.

Si può trovare ulteriori informazioni sulla programmazione data-driven su http://www.faqs.org/docs/artu/ch09s01.html

programmazione procedurale

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

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