Che cosa è il data-driven programming?

Ho ricevuto l’incarico al lavoro per scrivere un dettagliato programma di ingegneria per la logistica, l’applicazione che abbiamo codifica per proporre ad un cliente. Mi è stato detto che si tratta di un’applicazione basata sui dati. Cosa significa per un’applicazione di essere “data-driven”? Qual è il contrario? Io non riesco a ottenere qualsiasi davvero chiara risposta, anche se durante la ricerca sul web vedo molte persone che postano loro esempi. Qualsiasi aiuto sarebbe molto apprezzato.

  • Praticamente tutto mondo reale programmazione data-driven.
  • Classico L’Arte di Programmazione Unix ha una buona discussione di questo argomento: homepage.cs.uri.edu/~thenry/resources/unix_art/ch09s01.html. Chiave di citazione: “In data-driven programming, i dati non soltanto lo stato di un oggetto, ma in realtà definisce il flusso di controllo del programma. Dove la preoccupazione principale in OO è l’incapsulamento, la preoccupazione primaria in data-driven programming è scrivere poco codice fisso possibile.”
  • FMc risposta è per me la spiegazione più convincente, e deve essere una risposta, ma elaborato.
InformationsquelleAutor jtbradle | 2009-06-30

 

8 Replies
  1. 86

    Dati guidato progamming è un modello di programmazione in cui i dati stessi controlla il flusso del programma e non la logica del programma. Si tratta di un modello in cui si controlla il flusso, offrendo diversi set di dati per il programma in cui la logica del programma è qualche forma generica di flusso o di stato-modifiche.

    Per esempio, se avete in programma di quattro stati: UP – DOWN – STOP – START

    È possibile controllare questo programma, offrendo input (dati) che rappresenta gli stati membri:

    • set1: DOWN – STOP – START – STOP – STOP
    • set2: su – GIÙ – su – GIÙ

    Il codice del programma rimane lo stesso, ma il set di dati (che non è un dinamico tipo di input, ma in modo statico dati al computer) controlla il flusso.

    • La programmazione parte è iscritto/definire la “forma generica di flusso o di stato-modifiche”, dico bene? Ma posso scrivere ad una “macchina” in qualsiasi lingua, e non c’è nulla di eccezionale, quindi non ho davvero ottenere qualcosa della tua risposta. Forse data-driven programming è quando la stessa lingua o di una biblioteca, incoraggia o rende molto facile scrivere di tali macchine. O forse la definizione è che la lingua/libreria andiamo a definire le macchine in un approccio dichiarativo, cioè non procedurali.
    • Su en.wikipedia.org/wiki/Data-driven_programming, usano AWK come un esempio. In AWK due cose sono in dotazione, un espressione che definisce che cosa fare con i dati, e i dati stessi. Qual è l’espressione che definisce cosa accada considerato: 1) la programmazione, o 2) di dati. Se è considerato di dati, quindi la programmazione AWK macchina stessa, che, naturalmente, nell’esempio di AWK è statico. Ma in altri contesti, ad esempio, se la scrittura la macchina stessa in alcune tradizionale procedura, che, sola, è la parte di programmazione.
  2. 49

    Anche se ci sono più di un paio di idee per data-driven per la programmazione, mi permetta di dare un esempio di utilizzo di una struttura di dati e di una funzione.

    Non basata su dati esempio:

    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-driven per esempio:

    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 uno o l’altro è nella logica del codice.
    Nell’ultimo esempio, l’uscita è determinata dai dati che viene passato alla funzione e, per questo motivo, diciamo che l’uscita è “guidata” dai dati.

    • So che questo è un semplice esempio, ma non di dati-guidato esempio, sembra proprio come un esempio di sciatta di codifica. Non data-driven significa solo buona consigliate? Se è così, perché qualcuno dovrebbe voler perseguire un non-approccio basato sui dati?
    • Mi dispiace, ma il primo esempio si presenta come la programmazione funzionale (in cui i dati e il comportamento è disaccoppiato), e il secondo esempio sembra orientata agli oggetti (in cui i dati e il comportamento è accoppiato).
  3. 44

    “Mi hanno detto che si tratta di un’applicazione basata sui dati” – si deve chiedere a chi ha detto che.

    Non vuoi leggere qualche risposta plausibile qui e poi scoprire che non è affatto ciò che la persona in carica del tuo progetto. La frase è troppo vago per un chiaro significato che sarà sicuramente per il vostro progetto.

    • Capisco quello che vuoi dire Richie, e che è un buon punto. Tuttavia, mi chiedevo se “data-driven programming” era una sorta di termine concretamente riconosciuto dal software di sviluppo del settore. Non voglio prendere alcuna risposta da qui, semplicemente, al valore facciale, qui senza il controllo indietro con il mio capo. -Grazie 🙂
    • Certo – hai fatto bene a chiedere qui. Ma penso che la risposta è che non c’è una definizione universalmente accettata.
  4. 11

    Data-driven per lo sviluppo è qualcosa che si può apportare modifiche al
    la logica del programma non modifica il codice, ma la struttura di dati.

    Si potrebbe trovare più informazioni su data-driven programming su http://www.faqs.org/docs/artu/ch09s01.html

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

    Dati guidato domanda è:

    (1) un insieme di regole di accettare diversi set di dati per fare un predeterminato decisione per ogni specifico insieme di dati e di lancio risultato come risultato

    (2) un paio di predeterminato processi che vengono attivati in base all’esito.

    Esempio perfetto è ifttt.com

    L’applicazione non ha nulla, ma di regole.
    Ciò che lo rende utile sia i dati che il flusso attraverso di essa.

  6. 1

    Non c’è nessuno che può aiutare con questa domanda? È molto difficile visualizzare ciò che si sta lavorando senza senza più grandi, ad esempio. Ma da quanto ho capito sarà un programma che principalmente immettere informazioni. Che sarà in grado di recuperare e modificare le informazioni che il cliente deve gestire.

    In bocca al lupo!!

  7. 0

    Penso che il consiglio dato non è male, ma ho sempre pensato di Data-Driven Design ruota intorno esistenti o dato in strutture di dati come base per gli oggetti del dominio.

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

    • Venditore
    • Regione
    • Clienti
    • Prodotti

    Così, l’applicazione dovrebbe essere centrato intorno alla gestione di queste strutture di dati, invece di prendere un dritto API che fa cose come “rendere la vendita”, ecc…

    Solo la mia opinione come le altre risposte suggeriscono 😉

Lascia un commento