스티븐 블랙히스/앤서니 존슨의 <함수형 반응형 프로그래밍>을 소개합니다. 최근 커뮤니티에서 Functional Reactive Programming(FRP)에 대한 관심이 증가하고 있으며, 또한 FRP에 대한 토론이 많이 이루어지고 있습니다.
FRP의 정의에 대해 논란이 많습니다만, 이 논란에 대한 내용은 Conal Elliott와 Paul Hudak가 발표한 Functional Reactive Animation에 정확하게 정의되어 있습니다. 이에 대한 FRP 이슈를 소개한 글을 다음 링크에서 확인하실 수 있습니다.
Functional Reactive Programming에 대한 또 다른 매력적인 글로 Conal Elliott이 스택오버플로우에서 `What is functional reactive programming`의 답변이 매우 유명합니다[링크]. 그리고 이 답변을 번역해 놓은 오현석(이 책의 역자)님의 블로그의 글도 링크를 남깁니다.
필자가 윗글에 대한 내용을 모두 이해하긴 아직 내공이 부족한 것 같습니다. 앞으로 꾸준히 학습하다 보면 이해하는 깊이가 더 늘어나겠지요.
The Book INSIDE
[제목] 함수형 반응형 프로그래밍: FRP 입문자를 위한 종합 안내서
[평점] ★★★★
[저자] 스트빈 블랙히스, 앤서니 존슨 저 | 오현석 역
한빛미디어 | 2017-08-01
492쪽 | ISBN(13) : 9788968488665
스티븐 블랙히스
뉴질랜드의 파머스턴 노스 근처에 산다. 다수의 이벤트 기반 상업 프로그램을 만들었으며 2007년경 함수형 프로그래밍에 입문해서 오픈소스 소듐(Sodium) FRP 시스템을 만들었다. 바둑을 좋아한다.
앤서니 존슨
뉴질랜드 오클랜드에 산다. 자바 기반의 설정 GUI를 FRP 기반의 프레임워크로 리팩터링하면서 5년여를 보내왔으며 소듐 FRP 시스템을 만드는 데 기여했다. 자전거 타기를 즐긴다.
함수형 반응형 프로그래밍이란?
<함수형 반응형 프로그래밍>의 저자들이 생각하는 FRP의 정의를 요약하면 다음과 같습니다.
- FRP는 자주 사용하는 옵저버 패턴을 대치한다. 옵저버 패턴을 리스너나 콜백이라고도 한다.
- FRP는 이벤트 위주의 로직을 조합하므로 조합 가능한 모듈로 코딩하는 방법이다.
- FRP는 다른 방식으로 사고한다. 프로그램을 입력에 대한 반응 또는 데이터의 흐름으로 표현한다.
- FRP는 프로그램 상태를 관리하는 데 질서를 부여한다.
- FRP는 근본적인 방식으로 옵저버 패턴으로 문제를 해결하려고 노력하는 사람이라면 결국에는 FRP를 발명하게 될 것이라 생각한다.
- FRP는 일반적인 프로그래밍 언어의 경량 소프트웨어 라이브러리로 구현된다.
- FRP는 상태가 있는 로직을 위한 완전한 내장 언어(embedded language)라고 볼 수도 있다.
<함수형 반응형 프로그래밍> 1장의 내용 중 일부분
이 책에서 다루는 내용은?
<함수형 반응형 프로그래밍>은 BSD 라이선스의 Sodium(https://github.com/SodiumFRP) 라이브러리를 제작한 분들이 작성한 책입니다. 책 내용 중 많은 부분에서 Sodium을 활용하여 FRP의 이해를 돕고 있으며, 예제에서 Sodium을 활용하고 있습니다. Java를 기본으로 설명하고 있기 때문에 FP를 학습할 때마다 느껴지는 언어에 대한 부담은 다소 적을 것으로 생각됩니다. 1
이 책에서 소개하는 내용을 하나의 글로 소개하는 것은 무리가 있어 걱정이 많았습니다. 하지만 한빛미디어에서 이 책의 내용을 적절하게 구성해서 두 개의 글로 정리해 놓았습니다. 아쉽긴 하지만, 이 글을 소개하며 이 단락의 내용을 마치려 합니다. 대신 앞으로 FRP에 대해 깊이 있는 학습을 통해 FRP와 관련된 글을 작성해 보겠습니다.
- FRP로 이벤트 처리의 여섯 재앙 퇴치하기(1/2)
- FRP로 이벤트 처리의 여섯 재앙 퇴치하기(2/2)
개인적으로 함수형 반응형 프로그래밍에 관해 관심이 있다거나 혹은 학습하고 싶은 분이라면 꼭 한 번 읽어보는 것을 추천합니다. FRP에 대한 개념 정리부터 다양한 예제를 통해 FRP를 직접 맛볼 좋은 기회를 제공할 것으로 생각합니다.
마치면서...
<함수형 반응형 프로그래밍>을 읽고난 후, 처음 든 생각은 "이 책 다시 봐야겠다." 였습니다. 아주 잘 작성된 원고와 멋진 역자님께서 FRP에 대해 소개했지만, 필자의 역량이 부족한 것 같습니다. FRP 입문서라고 소개하고 있지만, 필자는 다소 어려웠습니다. 정확하게 이해한 개념이 30% 정도도 안되는 것 같습니다.
이 책의 저자가 참여하고 <함수형 반응형 프로그래밍>에서 다루고 있는 Sodium FRP 라이브러리의 코드를 보며 FRP의 개념에 대해 차분히 이해해야 할 것 같습니다. Sodium 라이브러리는 다양한 언어로 작성되어 있으니 한동안 손을 놓고 있었던 스칼라도 함께 학습하겠다고 다짐해봅니다.
- 이 책을 보기 전에는 Sodium 라이브러리에 대해 전혀 모르고 있었는데, 이 책을 통해 좋은 라이브러리를 하나 얻은 것 같습니다. [본문으로]