CS
[프로그래밍 패러다임] 선언형과 함수형 프로그래밍
sangyunpark
2023. 8. 29. 08:24
프로그래밍 패러다임이란?
프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 하는 개발 방법론
프로그래밍 패러다임은 크게 선언형, 명령형으로 나누며, 선언형은 함수형이라는 하위 집합을 갖는다.
명령형은 다시 객체지향, 절차지향으로 나뉜다.
선언형과 함수형 프로그래밍
선언형 프로그래밍(declarative programming)이란?
'무엇을' 풀어내는가에 집중하는 패러다임이며, "프로그램은 함수로 이루어진 것이다."라는 명제가 담겨 있는 패러다임
함수형 프로그래밍의 예시
const list = [1,2,3,4,5,11,12]
const ret = list.reduce((max,num) => num > max ? num : max, 0);
console.log(ret); // 12
reduce()는 '배열'만 받아서 누적한 결과값을 반환하는 순수 함수
함수형 프로그래밍은 이와 같은 작은 '순수 함수'들을 블록처럼 쌓아 로직을 구현하고 '고차 함수'를 통해 재사용성을 높인 프로그래밍 패러다임이다.
순수 함수
출력이 입력에만 의존하는 것을 의미
const pure = (a,b) => {
return a + b
}
pure 함수는 들어오는 매개변수 a,b에만 영향을 받는다. 만약 a,b 말고 다른 전역 변수 c등이 이 출력에 영향을 주면 순수 함수가 아니다.
고차 함수
함수가 함수를 값처럼 매개변수로 받아 로직을 생성할 수 있는 것
고차 함수를 사용하기 위해서는 해당 언어가 일급 객체라는 특성을 가져야 한다.
일급 객체의 특성
(1) 변수나 메서드에 함수를 할당할 수 있다.
(2) 함수 안에 함수를 매개변수로 담을 수 있다.
(3) 함수가 함수를 반환할 수 있다.