ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 리액티브 프로그래밍(Reactive Programming) 이란 무엇인가?
    Development 2017. 1. 21. 17:48
    728x90
    1. 리액티브 프로그래밍(Reactive Programming) 이란 무엇인가?
      1. 어떤 언어나 라이브러리, 함수등이 아닌, 새로운 프로그래밍 기법에 대한 패러다임
      2. 이 패러다임에 대한 고민의 시작은 .Net에서 LINQ의 ORM개발에서 부터 시작됨
      3. 기존의 프로그래밍 패러다임은 무었이었나?
        1. y = f(x) 와 같은 방식으로 프로그래밍 함
        2. x는 입력값, y 는 출력값으로 f( variable ) 함수 안에 컨트롤 로직을 프로그래밍해서 넣는 방식
        3. 단점 : 쓰레드 관점에서 보면, y가 리턴될 때 까지, 쓰레드가 블럭됨
          1. 쓰레드는 OS에게 값비싼 자원
          2. 쓰레드의 개수는 한계가 있으므로, 확장성에도 한계가 있는 디자인
        4. 단점 : f( x ) 자체를 병렬처리 하기 어려움
          1. 요즘은 휴대폰도 8코어
      4. 기존의 단점을 보완하기 위한 새로운 패러다임이 리액티브 프로그래밍(Reactive Programming)임
    2. 리액티브 프로그래밍이 기존 프로그래밍과 차이점
      1. 기존 방식 : 데이터가 흘러가는 로직을 프로그래머가 함수로 개발
      2. 데이터는 흐르는 강처럼 흘러간다고 가정하고, 그 데이터의 흐름이 스트림(stream)
      3. 스트림에 데이터를 조작하는 루틴을 일부 작성해서 넣어주고
      4. 그 스트림에 데이터가 흐를 때, 프로그래머가 작성한 루틴이 동작하는 방식의 프로그래밍
      5. 스트림을 관찰하는 Oserverable 안에 스트림을 넣어주고, Oserverable에 데이터를 작성하는 루틴을 작성한다
    3. 리액티브 프로그래밍의 구현체
      1. Reactive Extension 을 줄여 RX라고 쓰며, 각 언어및 플랫폼 별로, RxJava, RxAndroid등이 있음
    • 참고 자료
      • https://github.com/ReactiveX/RxJava
      • https://github.com/Froussios/Intro-To-RxJava
      • http://www.slideshare.net/jongwookkim/ndc14-rx-functional-reactive-programming
      • https://www.lightbend.com/reactive-programming-versus-reactive-systems


    728x90

    'Development' 카테고리의 다른 글

    Jupyter notebook에 nbextension 설치/사용 방법  (2) 2018.11.10
    https 키 생성 명령어  (0) 2018.11.10
    Docker 명령어 모음  (0) 2018.11.10
    Android MediaSync Example  (0) 2018.02.19
    How to generate ssh keys for gitlab.com on windows  (0) 2017.02.02
Designed by Tistory.