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

Maliethy·2021년 5월 8일
0

etc

목록 보기
4/9

명령형 프로그래밍이란 '어떻게'를 정의하는 프로그래밍이다.
반면 선언형 프로그래밍이란 '무엇을'을 정의하는 프로그래밍이다.

이러한 설명을 읽으면 둘의 개념적인 차이는 알겠는데 막상 프로그래밍에서 이 둘을 어떤 식으로 구분해야될지 막연했다.

두 개념의 차이를 알기 쉽게 설명한 예시를 선언적 VS 명령적에서 발견했다.

당신은 당신의 가족과 함께 외식을 하러 왔다. 당신은 안내 데스크에 가서 말한다.
1. 명령형 방식(HOW) : "저희 가족은 11번 테이블로 걸어가서 앉을 것입니다."
2. 선언형 방식(WHAT) : "4명 앉을 테이블 부탁해요."

한편 둘의 차이를 코드의 비교를 통해 알기 쉽게 설명한 예시는 선언적 프로그래밍과 명령적 프로그래밍의 차이점에서 찾을 수 있었다.

배열(numbers)의 숫자에 상수 5를 곱하고 새 배열(newnumbers)에 저장하는 예를 선언형 프로그래밍과 명령형 프로그래밍 순서로 표현하면 다음과 같다.

선언형 프로그래밍

var numbers = [1,2,3];

var newnumbers = numbers.map (function (number) {

반환 번호 * 5;

});

Console.log (newnumbers);

위의 예에서 '맵'은 배열의 각 항목을 반복하고 각 항목에 대한 콜백 함수를 호출하고 반환 값을 새 배열에 저장하라는 지침을 제공합니다. 이것은 출력 5,10,15를 제공합니다.
이 프로그램에서 숫자에 5를 곱하는 주요 목적은 map 기능을 사용하여 수행됩니다. 각 요소를 살펴보고 콜백 함수를 사용하여 값을 계산하고 새 배열에 저장합니다.
모든 단계를 제공할 필요는 없습니다. 주요 초점은 무엇을 달성해야 하는가에 있습니다.

map이라는 메소드가 알아서 필요한 일을 처리하는 데 그 처리 과정은 감춰져 있다. 해당 코드가 numbers 배열의 각 요소에 5를 곱하고 이를 새 배열 newnumbers에 저장한다는 목적, 즉 무엇(what)에 초점이 맞춰져 있다.

명령형 프로그래밍

var numbers = [1,2,3];

var newnumbers = [];

for (int i = 0; i <numbers.length; i ++) {

newnumbers.push (숫자 [i] * 5);

}

Console.log (newnumbers);

위의 예에서 숫자는 배열입니다. 루프를 통과 할 때 각 숫자에 5를 곱하고 newnumbers 배열에 추가합니다. 루프가 끝나면 새 번호의 내용이 5,10,15로 인쇄됩니다.
명령형 스타일이 작업을 달성하기위한 모든 단계를 제공함을 알 수 있습니다. 'i'카운터 변수를 사용하여 배열을 반복하는 방법, 루프를 벗어나기 전에 반복해야하는 횟수, 계산된 값을 새 배열에 삽입하는 방법 등을 표현합니다.

명령형 스타일은 위의 선언형 스타일과 비교했을 때 해당 코드에는 일을 처리하는 데 필요한 과정이 드러나있다. 해당 코드가 numbers 배열의 각 요소에 5를 곱하고 이를 새 배열 newnumbers에 저장하는 방법, 즉 어떻게(how)에 초점이 맞춰져 있다.

profile
바꿀 수 있는 것에 주목하자

0개의 댓글