티스토리 뷰

RxSwift

00. RxSwift 시작하기

밀쿄 2019. 8. 23. 18:10

안녕하세요. 밀쿄 입니다.

SwiftUI가 연재가 중단되었던 게 Combine 때문이었는데..

그 콤바인 공부하다가..Rx가 자료가 많으니 Rx를 해야지 하고

긴 시간이 지났네요.

긴 목표로는 Combine을 보고 포스팅을 시작하겠습니다.

 

먼저 RxSwift란 말부터 보겠습니다.

Swift는 iOS개발자라면 다 아는 그 스위프트 맞습니다.

Rx는 Reactivex 입니다.

Reactivex는 Reactive Extension 이구요.

즉, RxSwift는 ? Swift에서 Reactive Programming을 사용하기 위한 Extension? 정도로 넘어가겠습니다

중요한건 Reactive 즉 Reactive Programming이 무엇인지 알아야겠죠?

~~Programming 어디서 많이 들어보셨지 않나요?

모두가 코딩을 처음시작 할때 배우던 C언어

전 C언어를 "명령어 프로그래밍"이라고 배웠습니다.

이것처럼 Reactive Programming도 뭔가 패러다임이 아닐까 생각해봅니다.

 

사실 C언어와 명령어 프로그래밍 꺼낸 것도...이 긴 글에서 필요한 내용의 일부입니다.

C언어하실 때 어떤 언어였나요?

절차지향...순서지향이라고 많이들 하지 않나요

네 그렇습니다.

C언어처럼 하나하나 순서대로 시간순서대로 명령하는게 명령어 프로그래밍입니다.

 

.함수형 프로그래밍은..

https://ko.wikipedia.org/wiki/함수형_프로그래밍

 

함수형 프로그래밍 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 함수형 프로그래밍은 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임의 하나이다. 명령형 프로그래밍에서는 상태를 바꾸는 것을 강조하는 것과는 달리, 함수형 프로그래밍은 함수의 응용을 강조한다. 프로그래밍이 문이 아닌 식이나 선언으로 수행되는 선언형 프로그래밍 패러다임을 따르고 있다.[1] 함수형 프로그래밍은 1930년대에 계산가능성, 결정문제, 함수정의, 함수응용과 재귀를 연구

ko.wikipedia.org

위키백과 입니다.

"자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임의 하나"

라고 되어있네요..

쉽게 말하면 변하는 데이터를 멀리한다는 거네요.

 

이런 함수형 언어에는 여러 가지 특징이 있습니다.

먼저 순수한 함수라는 거죠.

순수한 함수란 건 Side-Effect가 없는 함수 즉, 함수의 실행이 외부에 영향을 주지 않는다는거죠.

더 쉽게 말하면 외부에 영향이 없으니까 같은 input을 넣으면 같은 output이 나와야 합니다.

왼쪽은 비순수 함수 오른쪽은 순수함수인 셈이죠.

 

두번 째 특징은 익명 함수라네요.

우리가 흔히 보는 클로저가 익명 함수 입니다.

딱히 설명하진 않겠습니다.

 

세번 쨰 특징은 고차 함수인데요.

이것도 역시 우리가 흔히 보는 map, filter, reduce 같은 녀석들이죠.

 

이런게 함수형 프로그래밍 입니다.

 

자 이제..

Reactive Programming인데요..

https://en.wikipedia.org/wiki/Reactive_programming

 

Reactive programming - Wikipedia

In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. With this paradigm it is possible to express static (e.g., arrays) or dynamic (e.g., event emitters) data streams with ease,

en.wikipedia.org

흠...어렵네요..

데이터 스트림 및 변경 전파와 관련된 선언적 프로그래밍 패러다임

(함수형 프로그래밍도 선언적 프로그래밍입니다.)

 

말이 어려운데

핵심은 데이터 스트림 과 그 스트림의 변화라는 거죠.

그 두개가지고 지지고 볶는 거죠.

조금 더 풀어쓰면

 

어떤 데이터의 흐름이 있다면 그 데이터 흐름을 먼저 만들어 놓고

그 데이터 흐름이 바뀌면 어떤 변화를 주는거죠.

 

더더 쉽게 말하면 stream을 구독해두고 그걸 관찰하는 방식인거죠.

그리고 그게 바뀌면 변화를 주는거고...

 

저 위키백과의 예로 들자면

a = b + c 라고 하면

명령형 프로그래밍에서는 a값의 변화를 주기 위해선 매번 실행하야하지만

반응형 프로그래밍에서는 b나 c의 값이 변화하면 a값이 바뀝니다.

 

더 깊게 파면 팔수록 어렵네요.

 

이제 문제는 Rx가 FRP라는 겁니다.

FRP는 함수형 프로그래밍과  Reactive Programming이 만난 거죠..

근데 이건 정말 내용이 어려워서 더 공부해오겠습니다....흑...

그리고 그 FRP를 이용하여 비동기를 쉽게 처리하자고 해서 나온게 Rx입니다.

그렇다고 FRP = Rx는 아니고....복잡합니다..

 

이 부분은 정리되는 대로 또 올리겠습니다

 

 

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함