프로그래밍2015. 4. 8. 16:56

@2016-8-17 [Functional Reactive Programming]이라는 훌륭한 책의 설명을 덧붙인다. 이 책은 한빛미디어에서 번역되어 나올 예정이다.

FRP는 다양한 시각에서 바라볼 수 있다.

  • 널리 사용되는 관찰자 패턴(혹은 리스너나 콜백)의 대용품
  • 이벤트기반 로직을 코딩하는 합성 가능한 모듈식 방법
  • 다른 사고방식. 프로그램을 입력에 대한 응답 혹은 데이터의 흐름으로 표현한다.
  • 프로그램 상태(state) 관리에 질서를 가져다준다.
  • 뭔가 근본적인 것. 관찰자 패턴으로 문제를 해결하려던 사람이라면 누구나 결국에는 FRP를 창시하게 됐을 것이다.
  • 표준적인 프로그래밍 언어의 경량 라이브러리로 구현이 가능하다.
  • 상태유지(stateful) 로직에 사용하기 위한 튜링완전 임베디드 언어로 볼 수 있다.

도메인 특화 언어(DSL)가 뭔지 알고 있다면, FRP를 상태유지 로직에 사용하는 최소한의 튜링완전 DSL이라고 이해해도 좋다. 입출력 부분을 빼면, 가령 어떤 복잡한 게임이든 전적으로 FRP로 작성할 수 있다. 그만큼 강력하고 표현력이 있다.

그렇다고 FRP가 ‘모 아니면 도’라는 말은 아니다. 기존 프로젝트에 쉽게 도입할 수 있고, 도입하는 규모도 원하는 만큼 정할 수 있다. (2~3쪽)


여기부터는 옛날 글.

  1. 코널 엘리엇의 스택오버플로에 쓴 글이 제일 유명하다. 근데 난해하다. (이하 링크 모두 새창)
    http://stackoverflow.com/questions/1028250/what-is-functional-reactive-programming/1030631#1030631
  2. 그리고 이걸 오현석 님이 번역한 게 있다. 다만 이 글 역시 너무 어렵다. -_-
    http://www.enshahar.me/2014/07/frp.html
  3. 스택오버플로의 다른 답변으로 이런 재미난 글도 있다(재미는 있는데 정독할 필요는 없음).
    http://paulstovell.com/blog/reactive-programming
  4. 3과 같은 맥락에서 다른 답변 중 핵심을 짚은 설명으로 이런 게 있다.
    -의미론적: FRP is all about describing a system in terms of time-varying functions instead of mutable state.
    -구문론적: The essence of functional reactive programming is to specify the dynamic behavior of a value completely at the time of declaration.
  5. 4를 눈으로 확인할 수 있는 더 쉬운 예가 elm 예제 페이지다.
    http://elm-lang.org/learn/What-is-FRP.elm (예제 주소가 바뀌어 다음 주소로 수정@2015-12-28)
    http://elm-lang.org/examples/mouse-position (예제가 사라져 다음 주소로 수정@2016-8-17)
    http://elm-lang.org/examples/drag
  6. 참고로 elm은 [Seven More Languages in Seven Weeks]에서 다루는 언어다. [Seven Languages in Seven Weeks]가 국내 반응이 좋다면 이 책도 낼 수도 있...겠는데 그럴 일은 없겠지. → 없다. (@2016-8-17)



Posted by 필유