함수형 프로그래밍 ( Functional Programming )
수학적 함수를 중심으로 개발하여 "Side-Effect" 를 최소한으로 하는 프로그래밍 패러다임
명령형 프로그래밍을 할 때 사용하는 Function 은 실제로 수학의 함수의 다른점이많습니다. 이유는 외부 요인에 의하여 Return 값이 변경 될 수 있기 때문입니다. 이를 Side-Effect 라고 합니다.
Side-Effect 가 커질수록 소프트웨어의 불확실성이 높아지고, 심각한 버그를 발생시킬 가능성이 높아집니다.
이에 따라 Pure Function 이라는 개념이 등장하게 됩니다.
직역하면 "순수 함수" 로서 수학의 함수와 동일하게 동일 인자에 대해서 같은 출력값을 가지게 됩니다.
또한 아래와 같은 Immutable 데이터를 참조하여도 Pure Function 을 만족시킬 수 있습니다.
고차 함수 ( High Order Function ) 와 조합 ( Composition )
Swift 는 일급 객체 (First-class citizen)를 지원하는 멀티 패러다임 언어입니다. ( 함수형, OOP 지원 )
First-class citizen 이란 객체를 변수에 대입할 수 있고, 매개 변수로 받을 수 있음을 의미합니다.
따라서 함수 자체를 인자로 넘겨주거나, 함수를 리턴하는 형식의 프로그래밍이 가능합니다.
이런 함수들의 조합 ( Composition ) 으로 이루어진 형태를 고차 함수라 정의합니다.
1. 인자 값으로 함수를 받는 경우
2. 함수를 리턴하는 경우
명령형 프로그래밍 vs 선언형 프로그래밍
명령형은 "어떻게" 할 것인가를 정의하고, 선언형은 "무엇을" 할 것인가를 정의한다.
코드 예시는 다음과 같습니다. ( 배열 모든 인자 값을 2씩 곱하는 코드 )
명령형 방식
선언형 방식
명령형 방식은 인덱스를 순회하며 직접 배열의 상태를 변경시키지만,
선언형 방식은 어떻게 데이터가 구성될 것인지 나타냅니다.
위에서 다룬 함수들의 조합으로 "Side-effect" 를 최소한으로 개발하는 방식을
"함수형 프로그래밍" 이라 말하고, 이는 대표적인 선언형 프로그래밍 방식 중 하나입니다.
이어지는 포스팅
'iOS Dev > Reactive' 카테고리의 다른 글
반응형 (Reactive) 프로그래밍을 위한 기초 지식 - 2 (Asynchronous) (0) | 2020.10.15 |
---|