선언형과 함수형 프로그래밍
선언형 프로그래밍이란 '무엇을' 풀어내는가에 집중하는 패러다임이며, "프로그램은 함수로 이루어진 것이다." 라는 명제가 담겨있는 패러다임이기도 하다. 함수형 프로그래밍은 선언형 패러다임의 일종이다. 지금부터 함수형 프로그래밍에 대해 알아보게보겠다.
예를 들어 자연수로 이루어진 배열에서 최댓값을 찾으라고 한다면 다음과 같이 로직을 구성한다
const ret = [1, 2, 3, 4, 5, 11, 12]
.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등이 이 출력에 영향을 주면 순수 함수가 아니다.
고차 함수
고차 함수란 함수가 함수를 값처럼 매개변수로 받아 로직을 생성할 수 있는 것을 말한다.
일급 객체
이때 고차 함수를 쓰기 위해서는 해당 언어가 일급 객체라는 특징을 가져야 하며 그 특징은 다음과 같다
- 변수나 메서드에 함수를 할당할 수 있다
- 함수 안에 함수를 매개변수로 담을 수 있다
- 함수가 함수를 반환할 수 있다.
반응형
'컴퓨터 과학 > 🔆 프로그래밍' 카테고리의 다른 글
서버사이드 렌더링과 클라이언트 사이드 렌더링 (0) | 2025.01.21 |
---|---|
절차형 프로그래밍 (0) | 2024.09.16 |
객체지향 프로그래밍 (0) | 2024.09.16 |
프로그래밍 패러다임 (0) | 2024.09.16 |