Imperative vs Declarative Programming

Suyeon·2021년 7월 11일
2
post-thumbnail

“Imperative programming is like how you do something, and declarative programming is more like what you do.”
출처: Imperative vs Declarative Programming -- Tyler McGinnis

명령형/선언형 프로그래밍에 대해서 알아보다보면, 명령형은 how에 선언형은 what에 초점을 맞춘 프로그래밍 기법이라는 설명이 나온다. 이게 무슨말인지 구체적인 예시를 통해서 알아보자.
(원문: Imperative vs Declarative Programming)

예시

식당에 가서 앉을 자리를 선택할 때,

명령형: 출입구 옆 두번째 창가쪽에 위치한 자리가 비어있네요. 저는 저 자리로 가서 앉을게요.
선언형: 2인입니다. (종업원에게)


명령형/선언형 프로그래밍을 자바스크립트 예시로 확인해보자

명령형 프로그래밍(Imperative)

  • Java, C++...
    명령형 프로그래밍에서는, 아래와 같이 세부 디테일을 직접 드러내어 코드를 작성한다.
// (1)
function double (arr) {
  let results = []
  for (let i = 0; i < arr.length; i++){
    results.push(arr[i] * 2)
  }
  return results
}

// (2)
function add (arr) {
  let result = 0
  for (let i = 0; i < arr.length; i++){
    result += arr[i]
  }
  return result
}

선언형 프로그래밍(Declarative)

  • functional programming, SQL, html...
    선언형 프로그래밍의 경우, map, reduce등 함수등을 통해 세부 구현을 추상화한다.
// (1)
function double (arr) {
  return arr.map((item) => item * 2)
}

// (2)
function add (arr) {
  return arr.reduce((prev, current) => prev + current, 0)
}

선언형 프로그래밍에 대표적인 예시는 SQL이 있다. 예를 들어, SELECT * FROM Users WHERE Country='Mexico';와 같이 SQL에서는 무엇(what)을 할것인지 먼저 초점을 맞추고 그 무엇을 하기 위한 세부 구현은 추상화(abstraction)로 구현한다.


결론

선언형/명령형 둘중 어느 것이 더 좋고 나쁜 것은 없다.

profile
Hello World.

0개의 댓글