FP   Functional Programming   함수형 프로그래밍

(2021-05-19)

함수형 언어, 함수형 프로그래밍 언어, Side Effect , 부수 효과 , 부가 효과 , 순수 함수


1. 함수프로그래밍 (Functional Programming)                    ☞ 프로그래밍 패러다임 참조함수들의 집합/조합으로써 프로그램을 구성
     - 프로그램 제어함수로써 추상화시킴

  ㅇ 큰 틀에서, 선언적/적응적 프로그래밍(Declarative/Applicative Programming) 기법에 속함
     - 외부에서의 부수 효과를 제거하고, 
     - 불변성을 지향하는 프로그램을 작성하고, 
     - 순수 함수선언적으로 사용하는 프로그래밍 방법론

  ㅇ 例) LISP, Scheme, Haskell 등


2. 함수프로그래밍의 특징반복문 보다는 재귀호출 선호
     - 임시 변수에 의한 반복문 처리 보다는 재귀호출에 의한 구현 선호
     - 재귀 호출이 기본이고, 괄호로 프로그램 내포구조를 나타냄
  ㅇ 실행시, 함수의 생성 및 동작이 가능함
  ㅇ 함수인수 또는 반환값으로 함수를 전달할 수 있음 (일급 함수)
  ㅇ 상태 변화를 줄이고, 적정 관리할 수 있도록 추구함
     - 변수의 사용을 억제하여, 가급적 상태 변경을 피하려고 함

  ㅇ 통상, 가독성, 신뢰성, 정확성 면에서, 
     - 함수프로그래밍은, 명령형 프로그래밍 보다 더 좋다고 여겨짐
     - 例로써, 
        . 명령형 프로그래밍은, 프로그램 실행 중 변수가 변하는 상태를 갖으므로, 이를 신경써야 하나,
        . 함수프로그래밍은, 변수상태를 갖지 않음

  ㅇ 무 상태성(stateless), 불변성(immutability)를 지향 함


3. 부수 효과 / 부가 효과 / 부작용 (Side Effect)표현식,함수 등이 결과값 만을 반환하는(돌려주는) 고유의 동작이 아니고,
     - 외부의 상태를 변경하거나,
        . 입력받거나, 출력하는 등 
     - 그 이후 구문에 영향을 주는 등 상태 변경이 일어나는 동작을 하는 것을 말함
        . 변수의 변경, 배열 항목의 변경, DB의 변경, 상태의 변화,
        . 함수로 들어온 인수의 원래 값을 직접 변경하는 등

  ㅇ 함수의 경우에,
     - 함수의 실행으로 인해, 함수 외부 상태가 영향을 받는 경우
     - 例) print() 함수는, 반환값 없이도 외부에 서식문자열에 따라 화면에 출력이 됨


4. 순수 함수 (Pure Function)

  ㅇ 주어진 입력에 만 의존할 뿐, 어떤 외부 상태에도 의존하지 않고, 
     - 함수 스코프 밖에 어떠한 변경도 하지 않으며, 
     - 미리 헤아릴 수 있는 일정한 결과값 만을 내놓는,
     - 즉, 부수 효과가 없고, 상태 변화를 일으키지 않는 함수

  ㅇ 순수성 (Purity) 또는 참조 투명성 (Referential Transparency)
     - 함수인수와 리턴값 사이에 순수한 매핑 관계 
     - 즉, 어떤 함수가 항상 동일 입력에 동일 출력 결과 만을 내는 관계
        . 함수 반환값이 외부 변수에 영향을 받으면 안됨

프로그래밍 방법론
   1. 프로그래밍 기법   2. 구조적 프로그래밍   3. 명령형 프로그래밍   4. 객체지향 프로그래밍   5. 함수형 프로그래밍   6. 프로그램 제어  


"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"