선언형 프로그래밍은 '어떻게(How)'가 아닌 '무엇을(What)'에 집중하는 개발 방식입니다. 우리가 원하는 결과물을 선언하면, 그 과정은 컴퓨터에 맡기는 것이죠.
이러한 선언형 패러다임의 핵심에는 "프로그램은 함수로 이루어진 것이다"라는 명제를 담고 있는 함수형 프로그래밍이 있습니다.
🧩 함수형 프로그래밍 (Functional 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() 함수는 '어떻게' 최댓값을 찾는지(예: for문을 돌리고, 변수와 비교하고...)를 지시하지 않습니다. 대신, 배열을 받아 누적된 결괏값을 반환하라는 '무엇'을 할 것인지만을 정의합니다. 이처럼 함수형 프로그래밍은 간결하고 예측 가능한 코드를 작성하게 해줍니다.
특히 자바스크립트는 문법이 단순하고 유연하며, 함수를 일급 객체로 다루기 때문에 함수형 프로그래밍 방식이 자주 선호됩니다.
✨ 함수형 프로그래밍의 핵심 개념
🧼 순수 함수 (Pure Function)
정의: 오직 입력값에 의해서만 출력값이 결정되는 함수를 의미합니다. 함수 외부의 어떤 상태(State)에도 영향을 주지 않고, 받지도 않습니다.
const pure = (a, b) => {
return a + b;
};
pure 함수는 매개변수로 들어온 a와 b에만 의존합니다. 만약 함수 외부의 다른 변수 c가 결과에 영향을 준다면, 그것은 더 이상 순수 함수가 아닙니다.
👑 일급 객체 (First-Class Citizen)
정의: 함수를 일반적인 '값(value)'처럼 자유롭게 다룰 수 있다는 의미입니다. 자바스크립트의 함수는 다음 특징을 가지는 일급 객체입니다.
- 변수나 데이터 구조 안에 함수를 할당할 수 있습니다.
- 다른 함수의 매개변수(argument)로 함수를 전달할 수 있습니다.
- 다른 함수의 결과값(return value)으로 함수를 반환할 수 있습니다.
🚀 고차 함수 (Higher-Order Function)
정의: 위에서 설명한 '일급 객체'의 특징을 활용하는 함수입니다. 함수를 매개변수로 받거나, 함수를 결과로 반환하는 함수를 말합니다.
고차 함수를 사용하면 로직을 추상화하고 코드의 재사용성을 극대화할 수 있어 함수형 프로그래밍의 강력한 도구가 됩니다.
'Computer Science > Programming Paradigm' 카테고리의 다른 글
| 📜 절차지향 프로그래밍: 순서대로 차근차근 (0) | 2025.09.23 |
|---|---|
| 🧱 객체지향 프로그래밍 (OOP): 현실 세계를 코드로 옮기기 (0) | 2025.09.23 |
| 💻 프로그래밍 패러다임: 코드를 바라보는 다양한 관점 (0) | 2025.09.23 |