공통/기타

함수형 프로그래밍이란?

반응형

프로그래밍 패러다임

명령형 프로그래밍무엇을 어떻게 할 것인가에 가깝고, 선언형 프로그래밍무엇을 할 것인가와 가깝다.

 

명령형 프로그래밍

  • 절차지향 프로그래밍: 수행되어야 하는 순차적인 처리과정을 포함하는 방식.
  • 객체지향 프로그래밍: 객체들의 집합과 상호작용으로 애플리케이션을 구성.

선언형 프로그래밍

 

  • 함수형 프로그래밍: 순수 함수를 조합하고 소프트웨어를 만드는 방식

명령형 프로그래밍에서는 상태를 바꾸는 것을 강조하는 것과는 달리, 함수형 프로그래밍은 함수의 응용을 강조한다. (위키피디아)


 

함수형 프로그래밍의 개념

일급 시민인 함수 (first-class)

  • 함수를 일반 값처럼 다룰 수 있다.
  • 함수를 변수에 저장할 수 있고, 함수를 인자로 다른 함수에 전달할 수 있으며, 함수에서 새로운 함수를 만들어서 반환할 수 있다.

불변성 (immutability)

  • 내부 상태가 절대 바뀌지 않는 불변 객체를 사용.

부수 효과(side-effect) 없음

  • 입력이 같으면 항상 같은 출력을 내놓고 다른 객체의 상태를 변경하지 않는 순수 함수(pure function)를 사용한다.

함수형 프로그래밍의 장점

간결성

  • 그에 상응하는 명령형 코드에 비해 더 간결하며 우아하다.

다중 스레드를 사용해도 안전하다 (Safe multithreading)

  • 다중 스레드 프로그램은 적절한 동기화 없이 같은 데이터를 여러 스레드가 변경하는 경우 가장 많은 문제가 생긴다.
  • 불변 데이터 구조를 사용하고 순수 함수를 그 데이터 구조에 적용한다면 다중 스레드 환경에서 같은 데이터를 여러 스레드가 변경할 수 없다. 따라서 복잡한 동기화를 적용하지 않아도 된다.

테스트하기 쉬움

  • 부수 효과가 있는 함수는 그 함수를 실행할 때 필요한 전체 환경을 구성하는 준비 코드가 따로 필요하지만, 순수 함수는 그런 준비 코드 없이 독립적으로 테스트할 수 있다.

참고

https://ko.wikipedia.org/wiki/%ED%95%A8%EC%88%98%ED%98%95_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

http://www.yes24.com/Product/Goods/55148593?OzSrank=1 

반응형

'공통 > 기타' 카테고리의 다른 글

객체 지향? 객체 지향의 특성  (0) 2021.05.17
링커와 로더  (0) 2021.04.02
SOLID 원칙이란?  (0) 2021.03.18
AOP란? 횡단 관심사? 흩어진 관심사?  (0) 2021.02.16