header

Day 10 - 2022/10/28

💡 새롭게 알게된 점

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

명령형 프로그래밍

명령형 프로그래밍은 컴퓨터가 수행할 명령들을 차례대로 써 놓은 것으로 ‘어떻게 구현하는가’를 디테일하게 기술하는 관점에 중점을 두는 프로그래밍 기법이다.

선언형 프로그래밍

선언형 프로그래밍은 ‘무엇을 나타내야하는가’를 디테일하게 기술하는 관점에 중점을 두는 프로그래밍 기법이다. 컴포넌트 형태로 추상화하여 작성하는 것으로, 함수형 프로그래밍이라고도 불린다.

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

그렇다면 명령형과 선언형 중 어떤 프로그래밍 기법을 사용하는 것이 좋을까?

배열을 입력받아 배열의 모든 원소의 값의 두 배가 되도록 하는 함수를 구현해보자.

// 명령형 프로그래밍 - 어떻게 처리하는지에 대한 묘사
function double(arr) {
    let results = [];
    for (let i = 0; i < arr.length; i++) {
        if (typeof arr[i] === 'number') results.push(arr[i] * 2);
	}
	return results;
}

// 선언형 프로그래밍 - 무엇을 원하는지에 대한 묘사
function double(arr) {
	return arr.filter(e => typeof e === 'number').map(number => number * 2);
}

선언형 프로그래밍 방식을 사용하면 더 간단하고 명료하게 코드를 작성할 수 있다. 요구사항이 계속해서 추가될 때에도 훨씬 편하다.

선언형 프로그래밍의 또 다른 장점은 무엇이 있을까?

선언형 프로그래밍의 또 다른 장점은 프로그램이 컨텍스트에 독립적일 수 있다는 것이다.

코드는 단계보다 궁극적인 목표에 관심이 있기 때문에 동일 코드가 다른 프로그램에서도 제대로 작동할 수 있게 된다.

명령형 프로그래밍으로 작성한 코드는 현재 상태의 컨텍스트에 의존하는 경우가 많기 때문에 프로그램이 컨텍스트에 독립적이기 어렵다.

선언형 메소드의 종류를 알아보자

forEach

map

filter

reduce

some

every



❗️ 느낀점

명령형 프로그래밍 기법보다 선언형 프로그래밍 기법을 사용해서 코드를 작성하는게 더 좋다고는 알고 있었는데 정확히 어떤 장점이 존재하는지 몰랐다.

선언형 메소드를 사용해 코드를 작성하면서도 장점에 대해서는 자세히 생각해보지 않았는데, 어떤 목적으로 사용하는지에 대해 알수 있었다.

단순히 더 좋아서가 아니라 어떤 장점을 갖고 왜 써야 하는지에 대한 의문을 항상 가져야겠다.

오늘도 고생했다👊