로그인

검색

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


 

💡 요약 정리

 

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

?

  1. Programming 게시판 관련

    Date2014.11.01 CategoryTool/etc ByMoA Views33786
    read more
  2. 함수형 프로그래밍을 배워보자!

    Date2025.11.25 CategoryWeb ByOBG Views1310
    Read More
  3. 알아두면 유익한 2019 개발이야기

    Date2025.09.15 CategoryWeb ByOBG Views2461
    Read More
  4. JSON.stringify를 두 배 이상 빠르게 만든 방법

    Date2025.08.07 CategoryWeb ByOBG Views2951
    Read More
  5. defer, async 스크립트

    Date2023.01.10 CategoryWeb ByOBG Views4827
    Read More
  6. 카카오톡 웹버전 만들기

    Date2022.11.09 CategoryWeb ByOBG Views5234
    Read More
  7. Creating A Fixed-Length Queue In JavaScript Using Arrays

    Date2022.09.14 CategoryWeb ByOBG Views4585
    Read More
  8. How to send dynamic charts with a Slack bot

    Date2022.05.31 CategoryWeb ByOBG Views5289
    Read More
  9. [Javascript] 비동기, Promise, async, await 확실하게 이해하기

    Date2022.05.27 CategoryWeb ByOBG Views4810
    Read More
  10. Address Bar Install for Progressive Web Apps on the Desktop

    Date2021.12.15 CategoryWeb ByOBG Views5110
    Read More
Board Pagination Prev 1 Next
/ 1