로그인

검색

OBG
조회 수 23 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

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) 및 병렬 처리 용이: 데이터 불변성 덕분에 여러 스레드에서 데이터를 안전하게 공유할 수 있어 멀티코어 환경에서 병렬 처리에 유리합니다.


 

💡 요약 정리

 

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

?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 Tool/etc Programming 게시판 관련 2 MoA 2014.11.01 25765
330 API/MFC 후킹 링크 MoA 2013.07.28 5817
329 Python 화면 캡쳐 소스 MoA 2014.01.14 5226
» Web 함수형 프로그래밍을 배워보자! new OBG 2025.11.25 23
327 API/MFC 프린터 출력하기 MoA 2013.10.16 8542
326 API/MFC 프로세스 - 생성과 종료 그리고 이것 저것 너울 2011.10.12 5741
325 API/MFC 프로그램 배포용으로 만드는 과정 너울 2012.01.20 5387
324 Site 프로그래밍 관련 사이트 MoA 2012.08.02 4539
323 C/C++ 파일 입출력 MoA 2013.07.28 4035
322 Python 파이썬에서 C모듈 사용하기 MoA 2014.02.10 5958
321 Deeplearning 파이썬 머신러닝 무료 강의 (7시간) OBG 2022.07.06 8771
320 Site 특정 자료형의 데이터를 binary(hex값, 2진수값)으로 변환 Naya 2012.11.15 5280
319 Tool/etc 텍스트 에디터 Sublime Text 2 너울 2012.03.30 5154
318 API/MFC 태스크 대화상자 (Task Dialog) MoA 2013.10.22 5276
317 LLM 클로드 코드로 프로덕트 팀 바이브코딩 표준화한 방법 (aka 맥도날드 시스템) OBG 2025.11.24 71
316 Algorithm 큰 수 구하기 알고리즘 Naya 2012.08.02 4814
315 Tool/etc 쿠버네티스 클러스터 OBG 2022.11.11 4800
314 Agent 코딩 에이전트 만드는 법 OBG 2025.08.28 2109
313 C/C++ 코드 실행 시간 계산 Naya 2012.08.02 4850
312 C/C++ 코드 실행 시간 계산 Naya 2012.09.27 4320
311 Tool/etc 컨텍스트 스위칭 (Context Switching) MoA 2013.07.28 5434
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 17 Next
/ 17