로그인

검색

OBG
조회 수 439 추천 수 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 게시판 관련

  2. HunyuanVideo-1.5 영상 생성 모델

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

  4. 클로드 코드로 프로덕트 팀 바이브코딩 표준화한 방법 (aka 맥도날드 시스템)

  5. LazyGit - 게으른 개발자를 위한 Git UI

  6. 로컬에서 오픈 LLM과 코딩 어시스턴트를 사용하시나요? 환경을 공유해주세요

  7. 오픈 노트북(Open Notebook): Google의 Notebook LM을 대체하는 오픈소스 플랫폼

  8. Claude Skills는 굉장하다, MCP보다 더 큰 혁신일지도

  9. 원격 서버 개발용 편집기로 Helix 에디터를 활용하는 방법

  10. SQLite Online - 11년간 1인이 개발, 하루 1.1만 명 사용

  11. macOS에서 로컬 LLM 실험하기

  12. 알아두면 유익한 2019 개발이야기

  13. 초보를 위한 Claude Code 안내서

  14. Spec Kit(Spec-Driven Development)

  15. Show GN: 유튜브 영상/웹페이지를 10초만에 구조화된 노트로 만드는 크롬 확장프로그램

  16. VIM Master - Vim 명령어를 배우는 가벼운 브라우저 게임

  17. 나노바나나 공식 출시! 구글 제미나이에서 직접 사용하는 방법

  18. 구글 개발자가 말하는 나노바나나의 진짜 실체

  19. llama.cpp gpt-oss-120b 5090으로 돌려본 후기

  20. Claude Code를 최고의 설계 파트너로 만들기

  21. 코딩 에이전트 만드는 법

Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 17 Next
/ 17