Web/React

명령형 vs 선언형 프로그래밍

또롱또 2022. 5. 27. 12:11
728x90

명령형  프로그래밍

// double이란 함수는 그냥 들어오는 배열 내부의 값을 2배 하는 함수
function double (arr) {
  let results = []
  for (let i = 0; i < arr.length; i++){
    results.push(arr[i] * 2)
  }
  return results
}

// add란 함수는 들어오는 배열의 합을 구하는 함수
function add (arr) {
  let result = 0
  for (let i = 0; i < arr.length; i++){
    result += arr[i]
  }
  return result
}

 

선언형 프로그래밍으로 변경했을때

function double (arr) {
  return arr.map((item) => item * 2)
}

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

 

예제를 보면 

명령형 프로그래밍은(HOW), 함수 안에서 이거계산해! 저거 계산해! 한다음에 결과만 나에게 돌려줘! 라고 되어있다.

코드를 읽어봐도 함수가 어떻게 내 명령을 처리할지를 보여주고 결과를 준다. (문제해결을 위한 알고리즘을 보여주지만, 이 문제해결을 뭐를 위한건지, 목표를 알아내려면 차근차근 코드를 읽어야한다.)

 

선언형 프로그래밍은(WHAT) 내가 무엇을 원한지에 대해 바로 돌려준다. (한눈에봐도 알아보기 쉬운 목표를 먼저 보여주고, 알고리즘은 최대한 명시하지 않으려한다.)

 

 

 

일상 생활에 예를 더하자면,

내가 서울에서 부산을 가려고 한다. 

명령형 프로그래밍

1. 일단 요 앞으로 90M 가서 왼쪽으로 꺾어

2. 그리고 거기서 계단 내려가서 지하철 타고 왼쪽으로 들어가

3. 들어간다음 앞에 계단 내려가서 지하철 기다렸다가 타

4. 지하철 타고 10정거장가서 내려

5. 내린후 계단 올라가서 오른쪽으로 꺾고 다시 앞으로 100M 가다가 왼쪽으로 꺾으면 버스표 파는데 있어

6. ...........



선언형 프로그래밍

1. 너가 출발할 위치는 서울시 XXX구 XXX동 이야

2. 너가 도착할 위치는 부산시 XXX구 XXX동 이야.
728x90