105 votes

Qu'est-ce que la programmation axée sur les données ?

J'ai été chargé au travail d'écrire un plan d'ingénierie détaillé pour une application logistique que nous codons pour la proposer à un client. On m'a dit qu'il s'agissait d'une application axée sur les données. Qu'est-ce que cela signifie pour une application d'être "pilotée par les données" ? Quel est le contraire ? Je n'arrive pas à trouver de réponse claire à cette question, bien qu'en faisant des recherches sur le Web, j'ai vu de nombreuses personnes poster leurs propres exemples. Toute aide serait grandement appréciée.

2 votes

La plupart des programmes du monde réel sont basés sur des données.

18 votes

Le classique L'art de la programmation Unix propose une bonne discussion sur ce sujet : homepage.cs.uri.edu/~thenry/resources/unix_art/ch09s01.html . Citation clé : "Dans la programmation pilotée par les données, les données ne sont pas seulement l'état d'un objet, mais en fait définit le flux de contrôle du programme . Alors que la préoccupation principale de l'OO est l'encapsulation, la préoccupation principale de la programmation orientée données est la suivante écrire aussi peu de code fixe que possible ."

3 votes

La réponse de FMc est pour moi l'explication la plus convaincante, et devrait être une réponse, mais élaborée.

104voto

nojevive Points 1030

La programmation axée sur les données est un modèle de programmation où les données elles-mêmes contrôlent le flux du programme et non la logique du programme. Il s'agit d'un modèle dans lequel vous contrôlez le flux en offrant différents ensembles de données au programme, la logique du programme étant une forme générique de flux ou de changements d'état.

Par exemple, si vous avez un programme qui comporte quatre états : MONTÉE - DESCENTE - ARRÊT - DÉMARRAGE

Vous pouvez contrôler ce programme en proposant des entrées (données) qui représentent les états :

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

Le code du programme reste le même, mais le jeu de données (qui n'est pas de type dynamique mais donné statiquement à l'ordinateur) contrôle le flux.

3 votes

La partie programmation consiste à écrire/définir la "forme générique du flux ou des changements d'état", n'est-ce pas ? Mais je peux écrire une telle "machine" dans n'importe quel langage, et il n'y a rien d'inhabituel à cela, donc je ne comprends rien à votre réponse. Peut-être que la programmation pilotée par les données est le cas lorsque le langage lui-même ou une bibliothèque encourage ou rend très facile l'écriture de telles machines. Ou peut-être que la définition est que le langage/la bibliothèque permet de définir les machines d'une manière déclarative, c'est-à-dire non procédurale.

2 votes

Sur fr.wikipedia.org/wiki/Data-driven_programming (programmation pilotée par les données) Ils utilisent AWK comme exemple. Dans AWK, deux choses sont fournies, une expression définissant ce qui doit être fait avec les données, et les données elles-mêmes. L'expression définissant ce qui doit arriver est considérée comme étant : 1) la programmation, ou 2) les données. Si elle est considérée comme une donnée, alors la programmation est la machine de AWK elle-même, qui bien sûr dans l'exemple de AWK est statique. Mais dans d'autres contextes, par exemple si l'on écrit la machine elle-même d'une manière procédurale traditionnelle, cela seul constitue la partie programmation.

0 votes

Donc... en supposant que des exemples plus puissants de programmation d'entraînement de données soient complets, cela ne devient-il pas simplement une déclaration d'inclusion dans un moteur avec des hypothèses et des outils préconstruits ?

58voto

Lloyd Moore Points 1220

Bien qu'il y ait plus d'une idée de ce qu'est la programmation orientée données, permettez-moi de donner un exemple en utilisant une structure de données et une fonction.

Exemple non fondé sur des données :

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

Exemple basé sur les données :

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

Dans le premier exemple, la décision de montrer un résultat ou l'autre se trouve dans la logique du code. Dans le dernier exemple, la sortie est déterminée par les données transmises à la fonction et c'est pourquoi nous disons que la sortie est "pilotée" par les données.

3 votes

Je sais que c'est un exemple simple, mais l'exemple sans données ressemble à un exemple de codage bâclé. L'approche guidée par les données signifie-t-elle simplement de bonnes pratiques de codage ? Si oui, pourquoi vouloir adopter une approche non guidée par les données ?

4 votes

Je suis désolé, mais le premier exemple ressemble à de la programmation fonctionnelle (où les données et le comportement sont découplés), et le deuxième exemple ressemble à de la programmation orientée objet (où les données et le comportement sont couplés).

47voto

RichieHindle Points 98544

"On m'a dit qu'il s'agissait d'une application axée sur les données" - vous devez demander à la personne qui vous a dit cela.

Vous ne voulez pas lire une réponse plausible ici et découvrir ensuite que ce n'est pas du tout ce que la personne en charge de votre projet voulait dire. La phrase est trop vague pour avoir une signification univoque qui s'appliquera à coup sûr à votre projet.

8 votes

Je comprends ce que tu veux dire Richie, et c'est un bon point. Cependant, je me demandais si la "programmation pilotée par les données" était une sorte de terme concrètement reconnu par l'industrie du développement logiciel. Je ne prendrai aucune réponse d'ici pour argent comptant sans vérifier auprès de mon patron. -Merci :)

5 votes

Bien sûr - vous avez eu raison de demander ici. Mais je pense que la réponse est qu'il n'y a pas de définition universellement acceptée.

1 votes

Comment cela s'appelle-t-il lorsque vous générez votre UX à partir de méta-données ? Comment s'appelle-t-il lorsque votre flux de travail est contrôlé par une configuration externe ? S'agit-il d'une architecture pilotée par les données et d'une architecture pilotée par les événements ? La programmation pilotée par les données s'apparenterait-elle davantage à WSDL et GraphQL, où vos modèles sont générés mais où vous continuez à coder en fonction d'eux comme bon vous semble ?

8voto

Vivek Points 41

L'application est axée sur les données :

(1) un ensemble de règles acceptant différents ensembles de données pour prendre une décision prédéterminée pour chaque ensemble de données spécifique et lançant le résultat comme résultat

(2) quelques processus prédéterminés qui sont déclenchés en fonction du résultat.

L'exemple parfait est ifttt.com

L'application n'a que des règles. Ce qui la rend utile, ce sont les données qui vont la traverser.

5voto

Robert Harvey Points 103562

Cet article explique très clairement ce que j'entends par ce terme :

Qu'est-ce que la programmation pilotée par les tableaux et la programmation pilotée par les données ? http://www.paragoncorporation.com/ArticleDetail.aspx?ArticleID=31

La programmation pilotée par les données/tableaux est la technique consistant à factoriser les constructions répétitives répétitives en données et en un modèle de modèle de transformation. Ces nouvelles données sont souvent appelées par les puristes méta-données lorsqu'il est utilisé de cette manière.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X