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. 프로그램 제어  


Copyrightⓒ written by 차재복 (Cha Jae Bok)       기술용어해설소액후원
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"