web-dev-qa-db-ja.com

データ駆動型プログラミングとは何ですか?

私は、顧客に提案するためにコーディングしているロジスティクスアプリケーションの詳細なエンジニアリング計画を作成する仕事を任されました。私はそれがデータ駆動型のアプリケーションであると言われました。アプリケーションが「データ駆動型」であるとはどういう意味ですか?反対は何ですか?ウェブ検索では多くの人が自分の例を投稿しているのを見ることができますが、これについて本当に明確な答えを得ることができないようです。どんな助けも大歓迎です。

82
jtbradle

データ駆動型プログラミングは、データ自体がプログラムのロジックではなくプログラムのフローを制御するプログラミングモデルです。これは、プログラムロジックがフローまたは状態変更の一般的な形式であるプログラムに異なるデータセットを提供することにより、フローを制御するモデルです。

たとえば、次の4つの状態を持つプログラムがある場合:UP-DOWN-STOP-START

状態を表す入力(データ)を提供することにより、このプログラムを制御できます。

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

プログラムコードは同じままですが、データセット(動的入力タイプではなく、コンピューターに静的に与えられる)がフローを制御します。

86
nojevive

データ駆動型プログラミングとは何かに関するアイデアはいくつかありますが、データ構造と関数を使用した例を挙げてください。

非データ駆動の例:

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_lloyd = {'name': 'Lloyd', 'lives': function(){ print("Alcoy, Spain") }
data_jason = {'name': 'Jason', 'lives': function(){ print("London, UK") }
go = function(x)
    x.lives()
end

最初の例では、どちらかの結果を表示するかどうかの決定はコードロジックにあります。最後の例では、出力は関数に渡されるデータによって決定されます。そのため、出力はデータによって「駆動」されます。

50
Lloyd Moore

「これはデータ駆動型のアプリケーションだと言われました」-誰に言ったか尋ねる必要があります。

ここでもっともらしい答えを読んで、それがあなたのプロジェクトの責任者が意味するものではないことを知りたくありません。このフレーズはあいまいすぎて、プロジェクトに確実に適用される明確な意味を持つことができません。

45
RichieHindle

データ駆動型開発は、コードではなくデータ構造を編集することにより、プログラムのロジックを変更できるものです。

http://www.faqs.org/docs/artu/ch09s01.html でデータ駆動型プログラミングの詳細を見つけることができます。

手続き型プログラミング

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

データ駆動型プログラミング

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

データ駆動型アプリケーションは次のとおりです。

(1)異なるデータセットを受け入れて、特定のデータセットごとに所定の決定を行い、結果を結果としてスローする一連のルール

(2)結果に基づいてトリガーされるいくつかの所定のプロセス。

完璧な例はifttt.comです

アプリケーションにはルールしかありません。役立つのは、そこを流れるデータです。

7
Vivek

この記事では、私がこの用語の意味を理解していることを最も明確に説明しています。

テーブル駆動プログラミングとデータ駆動プログラミングとは何ですか? http://www.paragoncorporation.com/ArticleDetail.aspx?ArticleID=31

データ/テーブル駆動プログラミングは、反復プログラミング構成要素をデータと変換パターンに分解する手法です。この方法で使用される場合、この新しいデータは多くの場合、純粋主義者によって meta-data と呼ばれます。

4
Robert Harvey

この質問に役立つ人は誰もいませんか?優れた例を使用せずに、作業しているものを視覚化することは非常に困難です。しかし、私が収集したものは、主に情報を入力するプログラムになります。これにより、顧客が管理する必要がある情報を取得および編集できます。

幸運を祈ります!!

1
Chris Bier

与えられたアドバイスは悪くないと思いますが、データドリブンデザインは、既存または指定されたデータ構造をドメインオブジェクトの基盤として使用することを中心に考えていました。

たとえば、従来の営業担当者管理プログラムには、次のタイプのテーブル構造があります。

  • 販売員
  • 領域
  • お客さま
  • 製品

そのため、アプリケーションは、「売上を上げる」などのような単純なAPIを使用する代わりに、これらのデータ構造の管理に集中します。

他の答えが示唆するように私の意見だけ;)

0
cgp