https://velog.io/@teo/functional-programming-study
gemini 요약
📜 함수형 프로그래밍(Functional Programming, FP) 요약
제시하신 Velog 글은 **함수형 프로그래밍(FP)**의 기본 개념과 주요 특징을 소개하며, 이를 통해 얻을 수 있는 장점을 설명하고 있습니다.
1. 함수형 프로그래밍이란?
-
정의: 함수형 프로그래밍은 **함수(function)**를 가장 기본적인 구성 요소로 사용하여 프로그램을 작성하는 방식입니다.
-
핵심 원칙: 데이터의 **불변성(Immutability)**을 유지하고, 프로그램의 상태(State) 변화를 피하는 것을 목표로 합니다.
-
명령형 vs. 함수형:
-
명령형(Imperative): "어떻게(How)" 할지에 집중하며, 순차적인 명령어와 상태 변화를 통해 결과를 도출합니다. (예: $\text{Java}, \text{C}, \text{Python}$ 일부)
-
함수형(Functional): "무엇을(What)" 할지에 집중하며, 함수 호출과 조합을 통해 결과를 도출합니다. (예: $\text{Haskell}, \text{Scala}, \text{Clojure}$)
-
2. 함수형 프로그래밍의 주요 특징
A. 순수 함수 (Pure Function)
-
정의: 동일한 입력(인수)에 대해서는 **항상 동일한 출력(결과)**을 반환하며, 외부의 상태를 변경하지 않고 외부 상태의 영향을 받지도 않는 함수입니다.
-
특징: **부수 효과(Side Effect)**가 없습니다.
-
부수 효과 예시: 전역 변수 변경, 데이터베이스 쓰기, 파일 쓰기, 화면 출력 등 함수 외부의 상태를 변경하는 모든 행위.
-
B. 불변성 (Immutability)
-
정의: 한 번 생성된 데이터는 절대로 변경되지 않고 항상 새로운 데이터를 생성하는 방식입니다.
-
장점: 데이터의 상태 변화를 추적할 필요가 없어 코드를 이해하기 쉽고, **경쟁 조건(Race Condition)**을 피할 수 있어 병렬 처리(Concurrency)에 유리합니다.
C. 일급 객체 (First-Class Citizen)
-
정의: 함수가 일반적인 값(숫자, 문자열 등)과 동등하게 취급되는 것을 의미합니다.
-
특징:
-
변수나 데이터 구조에 저장될 수 있습니다.
-
함수의 인수로 전달될 수 있습니다 (고차 함수의 핵심).
-
함수의 반환 값으로 사용될 수 있습니다.
-
D. 고차 함수 (Higher-Order Function, HOF)
-
정의: 함수를 인수로 받거나 함수를 결과로 반환하는 함수입니다.
-
활용 예시: 배열 메서드인 $\text{map}, \text{filter}, \text{reduce}$ 등이 고차 함수의 대표적인 예시입니다.
3. 함수형 프로그래밍의 장점
-
높은 가독성 및 예측 가능성: 순수 함수와 불변성 덕분에 코드를 읽기 쉽고, 실행 결과를 쉽게 예측할 수 있습니다.
-
쉬운 디버깅 및 테스트: 부수 효과가 없으므로 특정 함수만 독립적으로 테스트하기가 매우 용이합니다.
-
동시성(Concurrency) 및 병렬 처리 용이: 데이터 불변성 덕분에 여러 스레드에서 데이터를 안전하게 공유할 수 있어 멀티코어 환경에서 병렬 처리에 유리합니다.
💡 요약 정리
함수형 프로그래밍은 순수 함수와 불변성을 핵심으로 하여 부수 효과를 최소화하고, 프로그램의 예측 가능성과 안정성을 높이는 프로그래밍 패러다임입니다.