품목정보
발행일 | 2018년 02월 01일 |
---|---|
쪽수, 무게, 크기 | 320쪽 | 592g | 183*235*30mm |
ISBN13 | 9791162240427 |
ISBN10 | 1162240423 |
발행일 | 2018년 02월 01일 |
---|---|
쪽수, 무게, 크기 | 320쪽 | 592g | 183*235*30mm |
ISBN13 | 9791162240427 |
ISBN10 | 1162240423 |
Part I 함수형으로 사고하기 CHAPTER 1 함수형 길들이기 1.1 함수형 프로그래밍은 과연 유용한가? 1.2 함수형 프로그래밍이란? 1.3 함수형 프로그래밍의 좋은 점 1.4 마치며 CHAPTER 2 고계 자바스크립트 2.1 왜 자바스크립트인가? 2.2 함수형 대 객체지향 프로그래밍 2.3 함수 2.4 클로저와 스코프 2.5 마치며 Part II 함수형으로 전환하기 CHAPTER 3 자료구조는 적게, 일은 더 많이 3.1 애플리케이션의 제어 흐름 3.2 메서드 체이닝 3.3 함수 체이닝 3.4 코드 헤아리기 3.5 재귀적 사고방식 3.6 마치며 CHAPTER 4 재사용 가능한, 모듈적인 코드로 4.1 메서드 체인 대 함수 파이프라인 4.2 함수 호환 요건 4.3 커리된 함수를 평가 4.4 부분 적용과 매개변수 바인딩 4.5 함수 파이프라인을 합성 4.6 함수 조합기로 제어 흐름을 관리 4.7 마치며 CHAPTER 5 복잡성을 줄이는 디자인 패턴 5.1 명령형 에러 처리의 문제점 5.2 더 나은 방안: 함수자 5.3 모나드를 응용한 함수형 에러 처리 5.4 모나드 체인 및 합성 5.5 마치며 Part III 함수형 스킬 갈고닦기 CHAPTER 6 빈틈없는 코드 만들기 6.1 함수형 프로그래밍과 단위 테스트 6.2 명령형 프로그램 테스트의 어려움 6.3 함수형 코드를 테스트 6.4 속성 기반 테스트로 명세 담기 6.5 코드 실행률로 효율 측정 6.6 마치며 CHAPTER 7 함수형 최적화 7.1 함수 실행의 내부 작동 원리 7.2 느긋한 평가로 실행을 늦춤 7.3 ‘필요할 때 부르리’ 전략 7.4 재귀와 꼬리 호출 최적화 7.5 마치며 CHAPTER 8 비동기 이벤트와 데이터를 관리 8.1 골칫덩이 비동기 코드 8.2 비동기 로직을 프라미스로 일급화 8.3 느긋한 데이터 생성 8.4 RxJS를 응용한 함수형 리액티브 프로그래밍 8.5 마치며 APPENDIX A 이 책에서 사용한 자바스크립트 라이브러리 A.1 함수형 자바스크립트 라이브러리 __A.1.1 로대시JS __A.1.2 람다JS __A.1.3 RxJS A.2 기타 라이브러리 __A.2.1 Log4js __A.2.2 QUnit __A.2.3 시논JS __A.2.4 블랭킷JS __A.2.5 JSCheck APPENDIX B 한국어판 부록: 예제 실습 안내 B.1 노드JS 설치 및 QUnit 테스트 B.2 브라우저 콘솔창에서 실습 |
지금까지 나의 길을 돌아보면 객체지향 언어 보다 C언어로 임베디드 시스템 구현하는 작업을 많이 한 것 같다. 학생 시절에 C++, 자바를 배우긴 하였으나 실전에서 설계를 하기보다는 기존 코드를 수정 보완하는 작업에 촛점을 맞추어왔다. 자바스크립트는 IoT 구현에 관심을 가지면서 조금씩 배우긴 했지만 기본이 튼튼하지 않으니 여전히 수박 겉핧기 처럼 느껴진다. "물들어올때 노저어라"라고 했던가~ 우연한 기회에 이책을 접하게 되고 강제로 공부하게 됨을 기쁘게 생각한다.
최근에 함수형 프로그래밍을 주제로한 서적들이 많이 보인다. 그만큼 프로그래밍 언어의 세계에서 중요한 패러다임이지 않을까 추측해본다. 위키페이지를 참조해보니1930년대에 개발된 람다대수를 근간으로 많은 프로그래밍 언어에서 람다연산을 발전시켜오고 있다고 한다. 여타 다른 함수형 언어들보다 이책에서 언급한 것 처럼 자바스크립트가 갖는 인기와 친숙함이 있기에 잘 활용하여 입문을 한다면 시간이나 노력에서 효율적일 것 같다.
웹 어플리케이션을 잘 알고 있는 자바스크립트 개발자를 대상으로 하기 때문에 최소한 자바스크립트에 어느 정도 숙달 되어 있지 않으면 자주 어려운 부분을 만나지 않을까 생각된다. 그러나 자바스크립트 입문자라 하더라도 함수형 설계와 객체지향형 설계의 차이점에 초점을 맞추어 읽어나가면 많은 도움이 되지 않을까 한다.
이책은 크게 3부분으로 구성된다. Part1에서 함수형 프로그래밍의 개념 및 함수형으로 사고를 하는 방법을 배우고 Part2에서는 함수형 프로그래밍을 실전에 응용하기 위한 개념과 기법을 설명한다. 마지막으로 Part3에서는 작성한 프로그램을 검증하기 위한 테스트 기술을 배우면서 초급부터 고급까지 다양한 지식을 단계적으로 배울 수 있도록 되어있다.
"함수형 프로그래밍은 과연 무엇인가? 자바스크립트를 활용하여 함수형 프로그래밍을 시작하면 어떨까?"
중간 중간에 어려운 부분이 나올때 마다 다이아그램을 잘 활용한 설명으로 조금이나마 이해도를 높일 수 있었다. 자바스크립트를 활용한 함수형 프로그래밍은 분명 색다른 경험이었다. 절차적 언어와는 전혀 다른 차원의 코드 간결화와 생산성을 향상을 이루어 낼 수 있다니 신기할 따름이다. 함수형 프로그래밍에 흥미와 기대를 갖게 하는 과정이었다.
한빛미디어 [Functional Programming JAVASCRIPT]
도서에 대한 리뷰를 진행하겠습니다. 한빛미디어에서 진행하는 세번째 IT 도서 리뷰! 이지만 지난 주까지 였던 리뷰가 늦어지게 되었네요 ㅠㅠ (죄송합니다 한빛미디어...) 함수형 프로그래밍 서적도 이미 한두권 정도 보았었는데, 다른 책과의 비교도 약간 넣어서 리뷰를 시작하겠습니다.
함수형 프로그래밍 (이하 FP)이란 말이 떠오르기 시작한건 벌써 몇 년 (태초에는 웹이 이..ㅆ... 불과 몇 년이 아닌 이유는 웹이 생기고, 대표적 FP인 자바스크립트가 활성화 된 시기에 비하면 몇 년 조차도 적은 기간이 아니기 떄문)이 되었습니다. 하지만 그 기간동안 제대로 정리된 FP 내용에 대한 서적은 별로 보질 못했던 것 같습니다.
오늘 이 책을 보고, 다른 곳에서 배우지 못했던 점에 대한 얘기만 해보겠습니다.
우선 책을 펼치자 마자 나오는 Chap 1의 예제 코드는 es6 람다 문법. 이미 자바스크립트 코딩에선 webpack과 babel 설명을 맞추고 es6문법을 사용하는게 기본으로 자리잡는 마당에 아직 es5에 jQuery로만 예제를 구성하는 책이 있습니다. (하아...)
RxJS에 대한 적용이 1장부터...? 다른 FP 서적의 마지막 보충설명에서 라이브러리 소개로 나온 걸 본 적은 있지만 메인으로, 사용 예제가 나온건 애초에 처음 보았습니다.
React에서 핫한 영역으로 자리잡은 HOC (High Order Component)의 베이스가 되는 High Order Function에 대한 설명은 다른 책에서 찾아보기 힘들었는데, 매우 자세히 설명되어 있습니다. Curry까지 나와있는 책은 많았지만 이런 부분까지 정리되어있다는데 놀랍네요.
Chap 3, 4에서는 코드에 대한 정리 및 OOP와 FP에 대한 비교가 주를 이루기 때문에 앞 Chap처럼 화려한 라이브러리, 최신 OOO에 대한 내용은 없습니다. 하지만 기본에 충실한 자료구조, Curry 들을 자세히 설명해 놓았습니다.
C, Java처럼 컴파일 언어가 아닌 JS에서 자료구조를 C, Java처럼 직접 유저가 다 구현해서 사용하기는 힘들지만 디자인 패턴은 어느 정도 구현할 수 있다고 생각합니다. 하지만 그 설명을 찾기란 힘들죠...
빼놓을 수 없는 테스팅 및 마무리 코드 최적화. 한가지 아쉬운건 이미 대세인 jest나 mocha를 놔두고 jQuery에서 만든 Qunit을 사용했어야 하는가.... 라는 부분입니다.
사실 제일 기대하기도 했고, 어떤 JS 책을 보던 가장 중요하게 생각하는 부분입니다. es6가 생긴 이후 가장 빠르게 변하기도 하며 다른 언어에서 또한 포커싱이 맞춰져 있는 비동기.
es5에서 es6로 올라가면서 Promise가, es6에서 es7으로 올라가면서 async/await이 사용되고 있는데 Promise로, 내용을 발전시켜 RxJS까지, 사용자가 어떻게 프로그램을 발전시켜야 하는지 알려주기 위한 정성이 느껴집니다.
항상 자바스크립트에 관련된 책만 읽고, 리뷰도 그에 관련된 내용들만 하는데 그 중 가장 앞서나가는 책이 확실하다고 생각합니다. 이전까지의 책들에서 보지 못했던 발전 (es6, 비동기 처리, HOF, RxJS 등등)들을 제대로 정리해 놓았고, 어려운 부분까지 확실하게 풀어 설명했네요. 저도 따라가지 못했던 부분들이 몇몇 보여서 반성하게 되었습니다.
단점은 아니지만 지금 당장 시작하는 초보자가 보기에는 약간의 허들이 있다곤 생각합니다. 5단계로 치면 2~3단계 정도의 초중급 책이며 그 위로 올라갈 수 있도록 확실히 뒷받침 해줄 수 있다고 확신할 수 있겠습니다.
함수형 자바스크립트를 읽고
요즘에는 절차형라는 말 보다는 함수형이라는 말이 점점 많이 들리고 있다.
예전에 절차형과 함수형 프로그램에 대한 차이를 어떤 블로그에서 본 적이 있다. 둘 다 결과는 같은 프로그램을 하는 스타일이 너무 다른 것에 충격을 받았다.
그래서 '함수형 사고 객체지향 개발자에서 함수형 개발자로 거듭나기' 라는 책을 구매해서 봤으니 내용이 난해해서 이해하기 힘들었다.
그리다가 두 번째 'You Don't Know JS: 타입과 문법, 스코프와 클로저' 책을 봤을 때는 전에 보던 책과 비슷한 애기이긴 하나 역시 아직도 개념을 이해하기에는 어려웠다.
그러던 중 '폴리글랏 프로그래밍' 책을 봤다. 프로그램에 대한 이야기를 임백준씨가 해준다는 것에 그냥 보고 있었는 데, 전에 몰랐던 프로그램에 대한 역사를 좀 알고 나니 함수형 프로그램에 대한 생각이 더욱 간절해졌다.
그러던 중 '함수형 자바스크립트'를 보니 개발자라면 대부분 사용하는 자바스크립트로 함수형 프로그램밍을 한다는 게 새로웠다.
요즘 자바스크립트는 RxJS 등등 비동기가 대세가 되어 가고 ES6 등등 새로운 표준이 도입되고 있으나 현실에서는 예전에 하는 옛날 방식으로 개발하고 있는 나의 모습을 보니 다시금 책이 새롭게 느껴졌다.
part 1에서는 함수형으로 사고하는 방식을 도와준다. 실은 몇 번 읽어야 할 듯하다. 여전히 나에게는 새로운 세계다.
part2에서는 기존 절차형을 함수형으로 전환하는 방법을 소개해 준다. 람다 사용법도 익숙해야 하고, 새로운 자바스크립트 표준에도 익숙해져야 한다. 그런데도 프로젝트에서 사용해 볼만한 것들이 많이 보인다.
part3에서는 함수형 스킬을 갈고닦기인데 좋은 내용이나 아직 여기까지는 힘들다. 위에 내용을 익히고 나서 해야 할 뜻하다.
자바스크립트로 함수형을 만든다고 생각하면 기존에 있는 프레임워크를 그냥 사용한다고 생각했는데, 역시나 기본/개념이 중요한 듯 하다.
함수형 프로그램을 알고 싶은 사람은 이 책을 봐도 좋을 듯하다.
전혀 감이 없다면 '폴리글랏 프로그래밍'을 먼저 읽고 보는 걸 추천한다.