데이터 기반 프로그래밍이란 무엇입니까?


94

저는 고객에게 제안하기 위해 코딩중인 물류 애플리케이션에 대한 상세한 엔지니어링 계획을 작성하는 작업을 맡았습니다. 나는 그것이 데이터 기반 응용 프로그램이라고 들었습니다. 애플리케이션이 "데이터 기반"이라는 것은 무엇을 의미합니까? 그 반대는 무엇입니까? 웹 검색 중에 많은 사람들이 자신의 예제를 게시하는 것을 볼 수 있지만 이것에 대한 명확한 대답을 얻을 수없는 것 같습니다. 어떤 도움이라도 대단히 감사하겠습니다.


2
거의 모든 실제 프로그래밍은 데이터 기반입니다.
Martin Spamer 2012

16
고전적인 The Art of Unix Programming 에는이 주제에 대한 좋은 토론이 있습니다 : homepage.cs.uri.edu/~thenry/resources/unix_art/ch09s01.html . 핵심 인용문 : "데이터 기반 프로그래밍에서 데이터는 단순히 일부 개체의 상태가 아니라 실제로 프로그램의 제어 흐름을 정의합니다 . OO의 주요 관심사가 캡슐화 인 경우 데이터 기반 프로그래밍의 주요 관심사는 쓰기입니다. 가능한 한 적은 고정 코드 . "
FMc 2013-07-13

2
FMc의 대답은 저에게 가장 설득력있는 설명이며 대답이어야하지만 정교합니다.
Mads Skjern

답변:


96

데이터 기반 프로그래밍은 데이터 자체가 프로그램 로직이 아닌 프로그램의 흐름을 제어하는 ​​프로그래밍 모델입니다. 프로그램 논리가 흐름 또는 상태 변경의 일반적인 형태 인 프로그램에 다른 데이터 세트를 제공하여 흐름을 제어하는 ​​모델입니다.

예를 들어 네 가지 상태가있는 프로그램이있는 경우 : UP-DOWN-STOP-START

상태를 나타내는 입력 (데이터)을 제공하여이 프로그램을 제어 할 수 있습니다.

  • set1 : DOWN-STOP-START-STOP-UP-STOP
  • set2 : 위-아래-위-아래

프로그램 코드는 동일하게 유지되지만 데이터 세트 (동적 입력 유형이 아니지만 컴퓨터에 정적으로 제공됨)가 흐름을 제어합니다.


3
프로그래밍 부분은 "일반적인 형태의 흐름 또는 상태 변경"을 작성 / 정의하고 있습니다. 맞습니까? 그러나 나는 그런 "기계"를 어떤 언어로도 쓸 수 있고, 그것에 대해 특이한 것이 없기 때문에 당신의 대답에서 정말로 아무것도 얻지 못합니다. 아마도 데이터 기반 프로그래밍은 언어 자체 또는 라이브러리가 그러한 기계를 작성하는 것을 매우 쉽게 장려하거나 만들 때입니다. 또는 정의는 언어 / 라이브러리가 기계를 절차 적 방식이 아닌 선언적 방식으로 정의한다는 것입니다.
Mads Skjern

2
en.wikipedia.org/wiki/Data-driven_programming , 그들은 예를 들어 AWK를 사용합니다. AWK에는 데이터로 수행 할 작업을 정의하는 표현식과 데이터 자체가 제공됩니다. 1) 프로그래밍 또는 2) 데이터로 간주되는 일을 정의하는 표현은 무엇입니까? 데이터로 간주되는 경우 프로그래밍은 AWK의 기계 자체이며 AWK의 예에서는 물론 정적입니다. 그러나 다른 맥락에서, 예를 들어 전통적인 절차 적 방식으로 기계 자체를 작성하는 경우 그 자체가 프로그래밍 부분입니다.
Mads Skjern

그래서 ...보다 강력한 데이터 드라이브 프로그래밍 예제가 완성되었다고 가정 할 때, 이것은 단순히 미리 빌드 된 가정과 도구가있는 엔진의 include 문이되지 않습니까?
ZirconCode

55

데이터 기반 프로그래밍이 무엇인지에 대해 몇 가지 아이디어가 있지만 데이터 구조와 함수를 사용하여 예를 들어 보겠습니다.

데이터 기반이 아닌 예 :

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

첫 번째 예에서 하나의 결과를 표시하기위한 결정은 코드 로직에 있습니다. 마지막 예에서 출력은 함수에 전달 된 데이터에 의해 결정되며, 따라서 출력은 데이터에 의해 '구동'된다고 말합니다.


3
이것이 간단한 예라는 것을 알고 있지만 데이터 기반이 아닌 예는 엉성한 코딩의 예처럼 보입니다. 데이터 기반은 좋은 코딩 관행을 의미합니까? 그렇다면 왜 데이터 기반이 아닌 접근 방식을 추구하겠습니까?
Jin

4
죄송합니다. 첫 번째 예제는 함수형 프로그래밍 (데이터와 동작이 분리됨)처럼 보이고 두 번째 예제는 객체 지향 (데이터와 동작이 결합 된 경우)처럼 보입니다.
Vakey

47

"데이터 기반 애플리케이션이라는 말을 들었습니다."라고 말한 사람에게 물어봐야합니다.

여기에서 그럴듯한 답변을 읽고 프로젝트 책임자가 의미하는 바가 전혀 아님을 알고 싶지 않습니다. 이 문구는 프로젝트에 확실히 적용되는 명확한 의미를 갖기에는 너무 모호합니다.


8
리치라는 뜻을 이해합니다. 좋은 점입니다. 하지만 "데이터 기반 프로그래밍"이 소프트웨어 개발 업계에서 구체적으로 인식하는 용어인지 궁금합니다. 나는 상사와 다시 확인하지 않고 여기에서 액면 그대로 여기에서 어떤 대답도 받아들이지 않을 것입니다. -감사합니다 :)
jtbradle 2009-06-30

5
물론입니다. 여기서 물어 보는 것이 옳았습니다. 하지만 그 대답은 보편적으로 받아 들여지는 정의가 없다는 것입니다.
RichieHindle 2009-06-30

메타 데이터에서 UX를 생성 할 때 무엇이라고 부릅니까? 워크 플로가 외부 구성에 의해 제어 될 때 무엇이라고합니까? 데이터 기반 아키텍처와 이벤트 기반 아키텍처입니까? 데이터 기반 프로그래밍이 모델이 생성되는 WSDL 및 GraphQL과 더 비슷할까요?
Corey Alix

15

데이터 기반 개발은 코드가 아닌 데이터 구조를 편집하여 프로그램의 논리를 변경할 수있는 것입니다.

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

8

데이터 기반 애플리케이션은 다음과 같습니다.

(1) 각 특정 데이터 세트에 대해 미리 결정된 결정을 내리고 결과로 결과를 던지기 위해 서로 다른 데이터 세트를 허용하는 일련의 규칙

(2) 결과에 따라 트리거되는 몇 가지 미리 결정된 프로세스.

완벽한 예는 ifttt.com입니다.

응용 프로그램에는 규칙 만 있습니다. 유용한 것은 그것을 통과하는 데이터입니다.


4

이 기사는 내가 이해하는 용어의 의미를 가장 명확하게 설명합니다.

테이블 기반 및 데이터 기반 프로그래밍이란 무엇입니까? http://www.paragoncorporation.com/ArticleDetail.aspx?ArticleID=31

데이터 / 테이블 기반 프로그래밍은 반복적 인 프로그래밍 구성을 데이터 및 변환 패턴으로 분해하는 기술입니다. 이 새로운 데이터는 이러한 방식으로 사용될 때 순수 주의자들에 의해 메타 데이터 라고 종종 불립니다 .


1

이 질문에 도움을 줄 수있는 사람이 직장에 없습니까? 더 큰 예없이 작업하는 것을 시각화하는 것은 매우 어렵습니다. 그러나 내가 수집 한 것은 그들이 주로 정보를 입력하는 프로그램이 될 것입니다. 그러면 고객이 관리해야하는 정보를 검색하고 편집 할 수 있습니다.

행운을 빌어 요!!


1

주어진 조언이 나쁘지 않다고 생각하지만, 저는 항상 데이터 기반 디자인이 기존 또는 주어진 데이터 구조를 도메인 개체의 기반으로 사용하는 것을 중심으로 회전한다고 생각했습니다.

예를 들어, 클래식 영업 사원 관리 프로그램은 다음 유형의 테이블 구조를 가질 수 있습니다.

  • 영업 사원
  • 부위
  • 고객
  • 제품

따라서 응용 프로그램은 "판매"등과 같은 작업을 수행하는 직접적인 API를 사용하는 대신 이러한 데이터 구조를 관리하는 데 중점을 둡니다.

다른 답변에서 알 수 있듯이 내 의견입니다.)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.