Web

함수형 프로그래밍을 배워보자!

by OBG posted Nov 25, 2025
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄

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)

 

  • 정의: 함수가 일반적인 값(숫자, 문자열 등)과 동등하게 취급되는 것을 의미합니다.

  • 특징:

    1. 변수나 데이터 구조에 저장될 수 있습니다.

    2. 함수의 인수로 전달될 수 있습니다 (고차 함수의 핵심).

    3. 함수의 반환 값으로 사용될 수 있습니다.

 

D. 고차 함수 (Higher-Order Function, HOF)

 

  • 정의: 함수를 인수로 받거나 함수를 결과로 반환하는 함수입니다.

  • 활용 예시: 배열 메서드인 $\text{map}, \text{filter}, \text{reduce}$ 등이 고차 함수의 대표적인 예시입니다.


 

3. 함수형 프로그래밍의 장점

 

  • 높은 가독성 및 예측 가능성: 순수 함수와 불변성 덕분에 코드를 읽기 쉽고, 실행 결과를 쉽게 예측할 수 있습니다.

  • 쉬운 디버깅 및 테스트: 부수 효과가 없으므로 특정 함수만 독립적으로 테스트하기가 매우 용이합니다.

  • 동시성(Concurrency) 및 병렬 처리 용이: 데이터 불변성 덕분에 여러 스레드에서 데이터를 안전하게 공유할 수 있어 멀티코어 환경에서 병렬 처리에 유리합니다.


 

💡 요약 정리

 

함수형 프로그래밍은 순수 함수불변성을 핵심으로 하여 부수 효과를 최소화하고, 프로그램의 예측 가능성안정성을 높이는 프로그래밍 패러다임입니다.


Articles

1 2 3 4 5 6 7 8 9 10