THIS IS ELLIE

Combine provides a declarative Swift API . . . 본문

개발/Combine

Combine provides a declarative Swift API . . .

Ellie Kim 2020. 3. 3. 16:01

Combine 프레임워크는 A declarative Swift API for processing values over time을 제공한다고 설명한다.

 

많이들 (declarative) 선언형 프로그래밍과 (imperative) 명령형 프로그래밍을 말한다.

Imperative Programming vs Declarative Programming 둘은 상반되는 프로그래밍 개념이다. 

 

HOW 명령형 프로그래밍

프로그래밍의 상태와 상태를 변경시키는 구문의 관점에서 연산을 설명하는 프로그래밍 패러다임의 일종이다.

자연 언어에서의 명령법이 어떤 동작을 할 것인지를 명령으로 표현하듯이,

명령형 프로그램은 컴퓨터가 수행할 명령들을 순서대로 써 놓은 것이다.

예를 들어 C#, C++ 및 Java와 같은 언어는 명령형 프로그래밍을 지원하기 위해 디자인되었다.

 

WHAT 선언형 프로그래밍

프로그래밍은 어떤 방법으로 해야 하는지를 나타내기보다 무엇과 같은지를 설명하는 프로그래밍이다.

예를 들어 함수형 프로그래밍 언어 논리형 프로그램이 언어 혹은 제한형 프로그래밍 언어로 쓰인 경우에 선언형이라 한다.


선언형과 명령형의 차이를 보여주는 코드를 보자.

array에 속한 원소들에 대해서 짝수를 뽑아내는 작업을한다.

 

먼저 명령형은

let array = [1,2,3,4,5]

var evenNumber = [Int]()

for i in array {
    if i % 2 == 0 {
        evenNumber.append(i)
    }
}

print(evenNumber)

for문을 돌고

돌면서 원소가 2로 나눈 나머지가 0이면

그 원소를 evenNumber이라는 배열에 붙혀라.

짝수를 뽑아내는 과정에 대해서 나타낸다.

 

선언형은

let array = [1,2,3,4,5]

let evenNumber = array.filter { $0 % 2 == 0 }

print(evenNumber)

원소에 대해 2로 나눈 나머지가 0인 것을 걸러줘.

과정에 대해서는 언급하지 않는다.

 

또 다른 예로 매쉬 포테이토 만들기를 예로 들어보자. 

HOW 즉 명령형 프로그래밍은

감자 껍질을 까고,

요리하고,

으깨고,

버터를 넣고... 등등

수행할 명령들을 순서대로 나타낸다.

 

WHAT 즉 선언형은 메시 포테이토를 만들어줘

수행할 무엇에 대해 나타낸다.


https://developer.apple.com/documentation/combine

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

https://ko.wikipedia.org/wiki/%EB%AA%85%EB%A0%B9%ED%98%95_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

반응형

'개발 > Combine' 카테고리의 다른 글

Publisher, Subscriber, Operator  (0) 2020.03.03
Combine 시작하기  (0) 2020.03.03