함수형 반응형 프로그래밍 - FRP 입문자를 위한 종합 안내서
스티븐 블랙히스.앤서니 존스 지음, 오현석 옮김 / 한빛미디어 / 2017년 8월
평점 :
장바구니담기


추천

이 책은 자바를 사용하는 프로그래머에게 객체지향형/절차형 프로그래밍의 테두리를 벗어나 새로운 자극과 시각을 체험하게 해준다. 익숙한 테두리를 벗어났다가 다시 익숙한 곳으로 돌아가더라도 새로운 시각과 자극이 프로그래밍을 더 잘할 수 있게/더 고민하게 해 줄 것이라고 생각한다.

책 읽기 전에 알아두면 편한 것

  • git
  • 메이븐
  • java 8 : 책에서도 Java 8 in Action 을 추천하고 있다. 적어도 스트림과 람다 부분을 알고 있어야 한다.
  • javascript : 읽을 수 있는 정도면 충분하다.
  • c : c 문법에만 의지해서 읽을 수 있는 정도면 충분하다.

장점

번역이 정말 매끄럽다.

문화권이 다른 점을 고려해서 레밍턴 케이크(잘 모르는 음식)를 떡으로 바꾸어 더 잘 이해할 수 있도록 하는 세심한 배려가 넘친다. 번역은 완벽하다고 생각한다.

구성이 보기 좋게 되어있다.

챕터를 시작할 때 주제를 보여주고, 새로운/정의가 필요한 용어가 등장했을 때 곧바로 DEFINITION이 나타난다. 도움말과 보충 지식이 ‘딱 궁금해질 시점'에 NOTE로 등장하여 읽는 데 속도를 낼 수 있게 해준다. 각 챕터가 끝날 때는 요약하는 장이 있어서 읽었던 것을 이해했는 지 테스트하는 용도로도 쓸 수 있다.

알맞은 수준의 예제

저자가 예제를 고르는 데에 심혈을 기울였다는 것이 느껴진다. 충분히 실전에 등장할 법하면서도, 설명하기 위한 정도에 걸맞는 적당한 난이도를 가진 예제들이다. 그리고 이 예제를 발전시켜 나가면서 설명을 하기 때문에, 예제를 따라하면서 이해하도록 배려한 점이 돋보인다.

취향에 따라 다를 수 있는 부분

'약’ 농도가 높게 느껴질 수 있다.

책을 읽다 보면 '멀리 보고 프로그래밍 할 거면 FRP 하세요'라는 소리가 들리는 것 같기도 하고(…) 'FRP가 이렇게 좋습니다 여러분!'하는 말을 들은 것 같기도 하고(…) 암튼 저자가 발휘하는 Po설득wer 혹은 Po전도wer가 느껴진다. 물론 근거는 다 있어서 억지스러운 건 아닌데 취향을 탈 수도 있는 부분 같아서 언급해둔다.

한 번 읽었을 때 챕터별 간단 소감

한 번 읽어서 전부 이해하기는 힘들고(책이 술술 읽히는 것과 읽어서 이 내용을 소화했다는 것은 다름) 첫 번째 읽으면서도 이미 '두 번째는 이렇게 하면서 읽어야겠다'는 계획이 세워진다(…)

다음 번 읽었을 때 소감과 비교해보기 위해 챕터별 첫 인상을 남겨본다.

  • 1장 : 복잡도를 다루어 내고 싶다고요? FRP가 여기 있습니다!
    • 1.15의 '선언적으로 생각하기'를 설명하는 비유가 아주 멋지다. 내가 먹는 걸 좋아해서 그렇게 느낀 것일 수도 있지만, 라자냐 레시피에 비유했음에도 설명에 어긋남이 조금도 없다.
  • 2장 : 참조투명성, 참조투명성, 참조투명성 + Cell 타입은 두 번째 읽을 때 더 천천히 읽어 봐야겠다.
    • Unit 데이터 타입 설명이 몹시 꼼꼼하게 되어있다.
    • 2.4의 '참조 투명성'에 대한 Note도 꼼꼼함에 감탄하게 된다(…)
    • 2.6에서 “몇몇 유사 FRP 시스템에서는 동시 이벤트 개념이 없다"고 따끔하게 지적하고 있다.
  • 3장 : 예제. 짧아요.
  • 4장 : 예제. 적절한 예제. 두 번째 볼 때는 처음부터 끝까지 타이핑해봐야겠다.
  • 5장 : 폰 노이만으로 시작해서 Po전도wer
    • 5.1 "기존의 소프트웨어를 빠르게 실행하기 위해서 현대의 기계들은 폰 노이만 기계인 척 하기 위해 최선을 다한다.”
    • 5.2 합성성,합성성,합성성
    • 5.3 “객체지향 방식에서 합성성이 부족한 이유는?”
  • 6장 :Kefir.js -> Falpjax 로 같은 예제를 구현해본다.
    • 소듐이 진정한 FRP다 po전도wer
  • 7장 : 게임도 구현해봅니다. 게임은 FRP 써보기에 참 적당하죠. 두 번째 읽을 때는 역시나 타이핑 우선으로 읽어야겠다.
  • 8장 : 익숙한 연산(=조작적인 부분) + 트랜잭션, 이렇게 쓸수 있습니다.
  • 9장 : 애니메이션을 만들면서 FRP의 유용함을 느껴봅시다!
  • 10장 : 패러다임 비교하기 - 액터 모델이 더 매끄럽게 쓰이는 경우도 있다.
  • 11장 : 실전 프로그래밍이라고 쓰고 피할 수 없는 실제 문제들이라고 읽을 수 있는 부분-I/O, 병렬, 분산, 테스트 + 프라미스(라고 쓰고 퓨처도 포함시킨다)
  • 12장 : FRP 써서 GUI 라이브러리도 구현할 수 있지요!
  • 13장 : 리팩터링 -> po전도wer
  • 14장 : 가장 매력적으로 보이는 “기존 프로젝트에 FRP 추가하기”
    • 14.4 “트랜잭션 안에서 프로그램 초기화 하기” : 소듐 사용한 예시를 보여줌
  • 15장 : FRP로 하고 싶은 일은 여기 더 있습니다!
    • 15.2 사전 컴파일 사용하면 성능 개선과 임베디드 시스템에서도 쓸 수 있다는 장점이 있습니다.
    • 15.3 “FRP 코드를 GPU에서 실행하는 방식은 그리 타당하지 않을 것이다. GPU는 데이터 병렬성이라는 다른 종류의 병렬성에 더 적합한 기계이며, 한 번에 많은 데이터 집합에 같은 연산을 여러 번 적용할 때 더 좋다.”

두 번째 읽기를 한다면

  • 코드를 전부 타이핑해보는 게 좋겠다.
  • 온라인이라도 좋으니 여럿이 같이 타이핑 해보고 이야기를 나눠봤으면 좋겠다.



댓글(0) 먼댓글(0) 좋아요(1)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo