튜토리얼에도 고난과 역경이 있다.

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

나의 공부/기타

함수형 프로그래밍이란

내가 Nega 2022. 1. 3. 15:07
728x90

함수형 프로그래밍이란?

  • 함수형 프로그래밍의 특징은 문제를 함수로 분해한다는 것이다.
    • 각각의 함수는 입력을 받아 출력을 만들어 내기만 한다.
    • 즉, 주어진 입력값이 함수를 통과 하여 연산을 한 후, 생성된 결과 값은 해당 함수외의 다른 변수나 함수에 의해 변하지 않는다. == 다른 변수나 함수의 영향을 받지 않는다.
  • 효율성, 버그 없는 코드, 병렬 프로그래밍과 같은 장점을 갖는다.

함수형 프로그래밍의 특징

순수성

함수형 프로그램에서 함수는 입력으로 부터 출력을 만들어 내며, 내부의 상태를 수정하거나 함수 내부의 보이지 않는 특정 값을 이용하여 출력을 만들어 내지 않는다.

다른 변경사항들이 만드는 부작용 있는 함수를 사용하지 않으며, 이러한 부작용이 없도록 만든 함수를 순수함수라고 한다.

  • 코드를 통한 예시

    • 순수성이 없는 코드

      y = 30
      
      def impure_add(x):
          return x+y
      
      print(impure_add(100))

      문제점 1. y=30 이라는 입력을 받지 않고도 결정된 값이 있음

      문제점 2. 함수 안에 있는 값 뿐만 아니라 함수 밖에있는 y값을 사용함.

  • 순수성이 지켜진 코드

    def pure_add(x,y):
        return x+y
    
    print(pure_add(100,30))

모듈성

모든 입력으로만 출력을 내는 형식으로 프로그래밍을 하면, 문제를 작은 조각으로 분해하도록 강제하기 때문에 코딩하기는 더 쉬워진다.

작은 함수 하나 하나는, 가독성도 좋고 오류 확인하기도 쉬워지며 프로그램의 모듈성이 높아진다.

디버깅과 테스트 용이성

함수형 프로그래밍의 모듈성 덕분에, 이 방법으로 개발된 프로그램은 각각의 함수가 작고 명확하여 디버깅이 쉽다.

프로그램이 에러나 오류를 뱉는 경우, 각 함수는 데이터가 올바르게 출력되고 있는지 확인하는 breakpoint들이 된다. 그렇기 때문에 각 함수에 입출력을 확인하며 값이 올바르게 나오고 있는지 확인할 수 있어 디버깅이 쉽다.

각 함수는 단위 테스트 unit test 대상이므로 테스팅도 쉽다.


출처
  • AIFFEL LMS
반응형