My Boundary As Much As I Experienced

함수형 프로그래밍이란? 본문

Computer Basics

함수형 프로그래밍이란?

Bumang 2023. 10. 31. 09:23

명령형 프로그래밍(절차지향, 객체지향)

상태와 상태를 변경시키는 관점에서 연산을 설명하는 방식. 알고리즘을 명시하고, 목표는 명시하지 않음

  • 절차지향 프로그래밍: 수행되어야 할 순차적인 처리 과정을 포함하는 방식 (C, C++)
  • 객체지향 프로그래밍: 객체들의 집합으로 프로그램의 상호작용을 표현 (C++, Java, C#)

 

선언형 프로그래밍

How보다는 What을 설명하는 방식 (어떻게보단 무엇을) 알고리즘을 명시하지 않고 목표만 명시함

  • 함수형 프로그래밍: 순수 함수를 조합하고 소프트웨어를 만드는 방식 (클로저, 하스켈, 리스프)

 

함수형 프로그래밍은 거의 모든 것을 순수 함수로 나누어 문제를 해결하는 기법으로, 작은 문제를 해결하기 위한 함수를 작성하여 가독성을 높이고 유지보수를 용이하게 해준다.

 

함수형 프로그래밍(Functional Programming)의 특징

부수 효과가 없는 순수 함수를 1급 객체로 간주하여 파라미터나 반환값으로 사용할 수 있으며, 참조 투명성을 지킬 수 있다.

함수형 프로그래밍의 특징을 한 줄로 요약하면 위와 같다. 여기서 키워드는 "부수 효과", "순수 함수", "1급 객체", "참조 투명성" 인데, 각각에 대해 자세히 살펴보도록 하자.

 

  • 순수 함수 (Pure functions)
    • 입출력이 순수해야함 : 반드시 하나 이상의 인자를 받고, 받은 인자를 처리해 반드시 결과물을 돌려줘야 함. 인자 외 다른 변수 사용 금지
  • 합성 함수 (Function composition)
  • 공유상태 피하기 (Avoid shared state)
  • 상태변화 피하기 (Avoid mutating state)
  • 부작용 피하기 (Avoid side effects)
    • 주어진 값 이외의 외부 변수 및 프로그래밍 실행에 영향을 끼치지 않아야 된다는 의미

'Computer Basics' 카테고리의 다른 글

CSR vs SSR  (0) 2023.10.31
데브옵스(DevOps)란?  (0) 2023.10.31
파일 시스템  (0) 2023.10.10
메모리  (0) 2023.10.10
페이지 교체 알고리즘  (0) 2023.10.05