4.4 KiB
4.4 KiB
category, tags, title, last_updated
| category | tags | title | last_updated | ||||
|---|---|---|---|---|---|---|---|
| Unified |
|
|
2026-05-02 |
Functional Programming
📌 Brief Summary
"상태 변화 없는 수학적 흐름: 데이터를 직접 수정(Mutation)하지 않고, 입력에 대해 항상 같은 결과를 내놓는 순수 함수(Pure Function)들의 조합으로 안정성 있고 예측 가능한 소프트웨어를 건축하는 프로그래밍 철학."
"데이터의 상태 변화를 피하고, 순수 함수들의 조합으로 견고한 로직을 조립하라" — 계산을 수학적 함수의 평가로 취급하고 상태 변경 및 가변 데이터를 멀리하여, 병렬 처리에 유리하고 버그가 적은 소프트웨어를 만드는 프로그래밍 패러다임.
📖 Core Content
함수형 프로그래밍(Functional Programming)은 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임입니다.
- 핵심 원칙:
- Immutability (불변성): 한번 생성된 데이터는 바꾸지 않고, 변화가 필요하면 새로운 데이터를 만듦. (멀티코어 환경의 안전성 확보)
- Pure Functions: 외부 상태에 의존하지 않고 오직 입력으로만 결과를 냄 (Side effect 제거).
- Higher-Order Functions: 함수를 값처럼 주고받아 로직의 결합과 재사용성을 극대화 (Map, Filter, Reduce).
- 왜 중요한가?:
- 코드가 간결해지고 테스트가 압도적으로 쉬워지며, 분산 컴퓨팅(Distributed-Systems) 환경에서 데이터 일관성을 지키기에 최적임.
- 추출된 패턴: "어떻게(How)" 연산할지보다 "무엇(What)"인지 정의하고, 입력을 넣으면 항상 동일한 출력이 나오는 불변성(Immutability)과 참조 투명성(Referential Transparency)을 유지하는 선언적 코딩 패턴.
- 핵심 개념:
- Pure Functions: 외부 상태를 참조하거나 변경하지 않는 함수. 테스트와 디버깅이 매우 쉬움.
- First-class Citizens: 함수를 변수에 담고, 인자로 넘기고, 결과로 반환할 수 있음.
- Higher-order Functions: 함수를 파라미터로 받거나 결과로 반환하는 함수 (map, filter, reduce 등).
- Immutability: 한 번 생성된 데이터는 수정하지 않고 항상 새로운 데이터를 생성하여 전달.
- 의의: 동시성(Concurrency) 문제가 발생하는 멀티코어 환경과 대규모 분산 시스템에서 데이터 일관성을 유지하는 가장 강력한 무기.
⚖️ Trade-offs & Caveats
- 과거 데이터와의 충돌: 과거에는 하드웨어 자원 낭비(복사 비용 등) 때문에 '명령형/객체지향 정책'이 압승했으나, 현대 정책은 병렬 연산의 중요성과 소프트웨어 복잡성 해결 정책 때문에 모든 주류 언어가 함수형 특징을 도입하는 '하이브리드 함용 정책'으로 승리함(RL Update).
- 정책 변화(RL Update): 거대 데이터 파이프라인 정책과 AI 모델의 레이어 연산 정책 자체가 거대한 함수 체인(Functional Chain) 정책으로 설계되어 있으며, 이를 선언적으로 다루는 능력이 현대 개발의 필수 정책이 됨.
- 과거 데이터와의 충돌: 객체지향(OOP)이 유일한 정답이던 시대를 지나, 데이터 스트림 처리와 비동기 프로그래밍이 중요해지면서 함수형 패러다임이 모든 주류 언어(JS, Java, Python 등)에 깊숙이 침투함.
- 정책 변화: Antigravity 프로젝트는 에이전트의 사고 흐름(Chain of Thought)을 처리하는 파이프라인 설계 시, 각 단계를 순수 함수로 정의하여 재현 가능성과 안정성을 확보함.
🔗 Knowledge Connections
- 클린 아키텍처 (Clean Architecture)-TypeScript]], Distributed-Systems, Concurrent Programming, Logic, Optimization
- Modern Tech/Tools: Haskell, Elixir, React (Functional Components), Rust, Ramda.js.
- Determinism-in-Computing, Distributed-Computing, Software-Architecture-Patterns, Parallel-Computing
- Raw Source: 10_Wiki/Topics/AI/Functional-Programming.md