함수형 프로그래밍에 대해 알아보다 선언형 프로그래밍이라는 단어가 나와서 찾아보게 되었다.

먼저 알아보기전에 생각이 난건데, 선언형 프로그래밍과 명령형 프로그래밍은 프로그래밍이라는 단어를 달고 있지만 아키텍쳐 같은 그런 개념이 아니라 생각하는 방식의 차이 인거 같다.

명령형 프로그래밍

명령형 프로그래밍은 한마디로 how(어떻게)의 관점에서 문제를 해결하는 것이다. 현실의 상황을 예로 들어보겠다.

Q (친구) 나 좀있다가 니집 갈려고 하는데 어떻게 감?

A (명령형 프로그래밍 관점에서의 대답) 집에서 나와서 오른쪽으로 돈다음 큰 길가로 빠져나온 다음 오르막길 위에 있는 중학교까지 쭉 직진하면 우리집이 보여.

다음의 예와 같이 명령형은 안쪽 과정이 세세하고 문제를 어떻게 해결하는지가 중점이 된다는 특징이 있다.

명령형 프로그래밍의 관점은 how였다. 그러면 선언형 프로그래밍은 어떨까?

선언형 프로그래밍

선언형 프로그래밍은 한마디로 what(무엇을)의 관점에서 문제로 해결하는 것이다. 이것도 위의 상황을 예로 들어보겠다.

Q (친구) 나 좀있다가 니집갈려고 하는데 어떻게 감?

A (선언형 프로그래밍 관점에서의 대답) 우리집 주소는 대구 가동 나번지야

다음의 예와 같이 선언형은 안쪽 과정이 추상적이지만, 간단명료하다. 문제 해결이 중점이 된다는 특징이 있다.

위와 같이 현실의 상황을 예로 드니 이해가 잘 안될 수 있다 코드로 표현하면 다음과 같다.

코드예시

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

다음과 같이 명령형 프로그래밍의 관점으로 코드를 짜면 저렇게 짤 수 있다. 어떻게 값을 변화시키는지에 집중이 되있어서 언뜻 보기에는 무슨 코드인지는 모른다. 하지만 내부 동작을 세세하게 제어할 수 가 있다.

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