늘 겸손하게

CS - Software Engineering - 함수형 프로그래밍 본문

Computer Science/Software Engineering

CS - Software Engineering - 함수형 프로그래밍

besforyou999 2022. 11. 4. 17:11

[ 함수형 프로그래밍 ]

 

다른 이름 = 선언형 프로그래밍

 

함수형 프로그래밍은 순수 함수와 보조 함수의 조합을 통해 외부 상태를 변경하는 부수 효과를 최소화해서 불변성(immutability)을 지향하는 프로그래밍 패러다임이다.

 

 

함수형 프로그래밍 특징

 

1. 순수함수 (Pure Function)

 

  • 동일한 입력에는 항상 동일한 값을 반환하는 함수
  • 함수 실행이 side effect를 발생시키지 않는 함수
  • side effect 예시 
    • 프로그램 상태 변경
    • 함수 외부 변수 변경
    • 함수의 입력, 출력과 관계없는 작업

 

2. 비상태, 불변성 (Stateless, Immutability)

 

  • 함수형 프로그래밍에서 데이터는 불변성을 유지해야 한다.
  • 데이터 변경이 필요한 경우, 원본 데이터의 복사본을 만들어 복사본을 사용한다.

 

3. 선언형 함수 

 

명령형 프로그래밍은 무엇을 어떻게 할 것인가에 주목하고, 선언형 프로그래밍은 무엇을 할 것인가에 주목한다.

 

4. 1급 객체와 고차함수 (First-class, Higher-order functions)

 

함수형 프로그래밍에서는 함수가 1급 객체가 된다. 1급 객체의 특징은 다음과 같다.

 

  • 변수나 데이터 구조안에 담을 수 있다.
  • 파라미터로 전달 할 수 있다.
  • 반환값(return value)으로 사용할 수 있다.
  • 할당에 사용된 이름과 관계없이 고유한 구별이 가능하다.
  • 동적으로 프로퍼티 할당이 가능하다.

[ 함수형 프로그래밍의 장단점 ]

 

장점

  1. 높은 수준의 추상화 제공
  2. 함수 단위 코드 재사용이 수월
  3. 불변성을 지향하기 때문에 프로그램의 동작을 예측하기 쉬워진다.

단점

  1. 순수함수를 구현하기 위해서는 코드의 가독성이 좋지 않을 수 있다.
  2. 함수형 프로그래밍에서는 반복이 for문이 아닌 재귀를 통해 이루어지는데, 무한 루프에 빠질 가능성이 있다.
  3. 순수함수를 사용하는 것은 쉬울 수 있으나 조합하는 것은 쉽지 않다.

 

 

[ 출처 ]

https://github.com/gyoogle/tech-interview-for-developer/blob/master/Computer%20Science/Software%20Engineering/Fuctional%20Programming.md
https://jongminfire.dev/%ED%95%A8%EC%88%98%ED%98%95-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%B4%EB%9E%80

 

GitHub - gyoogle/tech-interview-for-developer: 👶🏻 신입 개발자 전공 지식 & 기술 면접 백과사전 📖

👶🏻 신입 개발자 전공 지식 & 기술 면접 백과사전 📖. Contribute to gyoogle/tech-interview-for-developer development by creating an account on GitHub.

github.com