FE 기술/JavaScript

JavaScript) 명령형, 선언형의 차이

Rulu_ 2023. 4. 24. 14:07

명령형, 선언형의 차이

명령형 프로그래밍

  • 프로그래밍의 상태와 상태를 변경시키는 구문의 관점에서 연산을 설명
  • 컴퓨터가 수행할 명령들을 순서대로 써 놓은 것
  • ‘어떻게’ 계산 할지 보다는 ‘무엇’이 계산될 것인지
    • 알고리즘을 명시하고 목표는 명시하지 않음
  • 명령형 프로그래밍은 개념적으로 친밀하고 직접적으로 구체화되어 있어, 대부분의 프로그래밍 언어들은 명령형임.
  • ex) c, java, kotlin ..
function addOne (arr) {
    let results = [];
    for(let i=0; i<arr.length; i+=1){
        results.push(arr[i]+1);
    }
    return results;
}

 

선언형 프로그래밍

  • 정의
    • 프로그램이 어떤 방법으로 해야하는지 보다는 무엇과 같은지 설명하는 경우
      • ex) 웹페이지 (무엇이 나타나는지 묘사하는 것, 어떤 방법으로 페이지를 나타내야 하는지가 아님)
      • 목표를 명시하고 알고리즘을 명시하지 않음
    • 프로그램이 함수형 프로그래밍 언어, 논리형 프로그래밍 언어, 혹은 제한형 프로그래밍 언어로 쓰인 경우
  • 두 정의는 서로 겹치는 부분도, 다른 부분도 있다
    • 명령형 프로그래밍 언어로 선언형 프로그램을 작성할 수도 있음
      • 프레임워크 내부의 비선언형 부분을 캡슐화 하여.
  • 선언형 프로그램에서는 그 언어의 표준 알고리즘으로 처리되는 자료 구조를 작성하거나 선언함
  • 어떤 것이 선언형 프로그램일까? 정답은 추상화
    • JS에서는 내장형 함수를 사용하여 ‘어떻게’가 아닌 ‘무엇을’에 도달
      • 상태 변경에 대한 직접적인 간섭이 없음