June

[Review] 함수형 자바스크립트

한빛미디어 [Functional Programming JAVASCRIPT] 도서에 대한 리뷰를 진행하겠습니다. 한빛미디어에서 진행하는 세번째 IT 도서 리뷰! 이지만 지난 주까지 였던 리뷰가 늦어지게 되었네요 ㅠㅠ (죄송합니다 한빛미디어...) 함수형 프로그래밍 서적도 이미 한두권 정도 보았었는데, 다른 책과의 비교도 약간 넣어서 리뷰를 시작하겠습니다.


함수형 프로그래밍 (이하 FP)이란 말이 떠오르기 시작한건 벌써 몇 년 (태초에는 웹이 이..ㅆ... 불과 몇 년이 아닌 이유는 웹이 생기고, 대표적 FP인 자바스크립트가 활성화 된 시기에 비하면 몇 년 조차도 적은 기간이 아니기 때문)이 되었습니다. 하지만 그 기간동안 제대로 정리된 FP 내용에 대한 서적은 별로 보질 못했던 것 같습니다.

오늘 이 책을 보고, 다른 곳에서 배우지 못했던 점에 대한 얘기만 해보겠습니다.

Chap. 1 함수형 길들이기

우선 책을 펼치자 마자 나오는 Chap 1의 예제 코드는 es6 람다 문법. 이미 자바스크립트 코딩에선 webpack과 babel 설명을 맞추고 es6문법을 사용하는게 기본으로 자리잡는 마당에 아직 es5에 jQuery로만 예제를 구성하는 책이 있습니다. (하아...)

RxJS에 대한 적용이 1장부터...? 다른 FP 서적의 마지막 보충설명에서 라이브러리 소개로 나온 걸 본 적은 있지만 메인으로, 사용 예제가 나온건 애초에 처음 보았습니다.

Chap. 2 고계 자바스크립트

React에서 핫한 영역으로 자리잡은 HOC (High Order Component)의 베이스가 되는 High Order Function에 대한 설명은 다른 책에서 찾아보기 힘들었는데, 매우 자세히 설명되어 있습니다. Curry까지 나와있는 책은 많았지만 이런 부분까지 정리되어있다는데 놀랍네요.

Chap. 3 자료구조는 적게, 일은 더 많이, Chap. 4 재사용 가능한, 모듈적인 코드로

Chap 3, 4에서는 코드에 대한 정리 및 OOP와 FP에 대한 비교가 주를 이루기 때문에 앞 Chap처럼 화려한 라이브러리, 최신 OOO에 대한 내용은 없습니다. 하지만 기본에 충실한 자료구조, Curry 들을 자세히 설명해 놓았습니다.

Chap. 5 복잡성을 줄이는 디자인 패턴

C, Java처럼 컴파일 언어가 아닌 JS에서 자료구조를 C, Java처럼 직접 유저가 다 구현해서 사용하기는 힘들지만 디자인 패턴은 어느 정도 구현할 수 있다고 생각합니다. 하지만 그 설명을 찾기란 힘들죠...

Chap. 6 빈틈없는 코드 만들기, Chap. 7 함수형 최적화

빼놓을 수 없는 테스팅 및 마무리 코드 최적화. 한가지 아쉬운건 이미 대세인 jest나 mocha를 놔두고 jQuery에서 만든 Qunit을 사용했어야 하는가.... 라는 부분입니다.

Chap. 8 비동기 이벤트와 데이터를 관리

사실 제일 기대하기도 했고, 어떤 JS 책을 보던 가장 중요하게 생각하는 부분입니다. es6가 생긴 이후 가장 빠르게 변하기도 하며 다른 언어에서 또한 포커싱이 맞춰져 있는 비동기.

es5에서 es6로 올라가면서 Promise가, es6에서 es7으로 올라가면서 async/await이 사용되고 있는데 Promise로, 내용을 발전시켜 RxJS까지, 사용자가 어떻게 프로그램을 발전시켜야 하는지 알려주기 위한 정성이 느껴집니다.


항상 자바스크립트에 관련된 책만 읽고, 리뷰도 그에 관련된 내용들만 하는데 그 중 가장 앞서나가는 책이 확실하다고 생각합니다. 이전까지의 책들에서 보지 못했던 발전 (es6, 비동기 처리, HOF, RxJS 등등)들을 제대로 정리해 놓았고, 어려운 부분까지 확실하게 풀어 설명했네요. 저도 따라가지 못했던 부분들이 몇몇 보여서 반성하게 되었습니다.

단점은 아니지만 지금 당장 시작하는 초보자가 보기에는 약간의 허들이 있다곤 생각합니다. 5단계로 치면 2~3단계 정도의 초중급 책이며 그 위로 올라갈 수 있도록 확실히 뒷받침 해줄 수 있다고 확신할 수 있겠습니다.