🧠 선언형 프로그래밍: "무엇을" 할 것인가?

2025. 9. 23. 12:53·Computer Science/Programming Paradigm

선언형 프로그래밍은 '어떻게(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
'Computer Science/Programming Paradigm' 카테고리의 다른 글
  • 📜 절차지향 프로그래밍: 순서대로 차근차근
  • 🧱 객체지향 프로그래밍 (OOP): 현실 세계를 코드로 옮기기
  • 💻 프로그래밍 패러다임: 코드를 바라보는 다양한 관점
TECHNING
TECHNING
Hi! I'm techning
  • TECHNING
    TECHNING
    TECHNING
    • 분류 전체보기 (54)
      • Computer Science (45)
        • Design Pattern (11)
        • Programming Paradigm (4)
        • Network (15)
        • Operating System (6)
        • Database (6)
        • Data Structure (3)
      • Algorithm (5)
        • Python (3)
        • Java (1)
      • IT Insight (4)
  • hELLO· Designed By정상우.v4.10.4
TECHNING
🧠 선언형 프로그래밍: "무엇을" 할 것인가?
상단으로

티스토리툴바