함수형 스타일의 자바스크립트 프로그래밍, ‘잘’ 배우는 방법

By | 2017년 11월 22일

 

블로그_추천사02

함수형, 함수형,  여기저기서 들리는 ‘함수형’ 이야기. 그런데 어떻게 접근해야 할까요? 실무에 적용할 아이디어를 좀 더 빠르게 얻을 순 없을까요? 자바스크립트에서의 함수형 프로그래밍을 고민하는 프로그래머를 위한 실무밀착형 가이드! 《함수형 자바스크립트 프로그래밍》을 소개합니다.

요즘 자바스크립트는 정말 뜨겁습니다. 다양하게 등장하는 신기술들을 보고 있으면 ‘함수형’이 곳곳에 스며들고 있음을 알 수 있습니다. 페이스북은 리액트, 리덕스를 Elm과 같은 함수형 프로그래밍 기술의 영향을 받았다고 했으며, immutable.js와 같은 불변 객체 라이브러리를 만들기도 했습니다. RxJS는 함수형 반응형 프로그래밍으로 잘 알려져 있고, Underscore.js와 Lodash도 함수형 자바스크립트 라이브러리입니다.

자바스크립트는 여러 방향으로 발전하고 있으며 그중 한 방향은 함수형 프로그래밍으로 향해 있습니다. 그동안 어떻게 바뀌어 왔는지, 어떻게 바뀌어가고 있는지를 보면 알 수 있습니다. 자바스크립트에 직접 적용되었거나 되고 있는 map, filter, reduce, Promise, 화살표 함수 등이나 ECMAScript 다음 버전에 제안된 Pipeline Operator, Partial application, flatMap, Observable 등도 모두 함수형 프로그래밍에 대한 것들입니다. 자바스크립트의 함수는 이전부터 클로저, 일급 함수, 익명 함수, call, apply, bind, arguments 등의 강력한 기능을 갖추었고, 최근에는 async, await, 화살표 함수, 나머지 매개변수, 인자 기본 값 설정 등으로 인해 함수의 기능이 더욱 확장되고 있습니다. 모두 새로운 것 같지만, 함수형 프로그래밍 언어들에서 오래전부터 준비되어왔고 검증된 기술들입니다.

“개발자들에게 좀 더 실용적인 관점에서의 함수형 자바스크립트에 대해 알려주고 싶습니다.”

객체지향, 절차지향 등 다른 패러다임에 익숙한 프로그래머가 곧바로 함수형 프로그래밍을 이해하는 것은 쉽지 않다고 합니다. 사고방식의 전환이 필요하기 때문이 아닐까 싶습니다. 이 과정에서 시간과 노력이 들어가는 일은 어쩔 수 없지만, 다른 패러다임을 이해하기 위해 넘어야 하는 허들을 낮춰주고 좀 더 개발자스러운 방식으로 생각할 수 있는 아이디어를 준다면 어떨까요?

《함수형 자바스크립트 프로그래밍》은 ‘실용적인 관점으로 함수형 스타일의 자바스크립트 프로그래밍을 알려주고 싶다’는 생각에서 출발했습니다. 단순히 기법이나 개념을 소개하는 데 그치는 게 아니라, 흔하게 만드는 코드 스타일을 함수적으로 바꿔 나가면서 새로운 스타일과 콘셉트를 전달합니다. 뜬구름 잡는 느낌을 주거나 지나치게 어려운 접근보다는 진행 중인 프로젝트의 작은 부분부터 적용해 나갈 수 있도록 사례 중심으로 안내합니다. 자바스크립트 개발자는 코드를 통해  함수형 프로그래밍으로 더 나아지는 게 무엇인지 직관적으로 알 수 있으며, 단계적으로 예제를 개선해 가면서 함수적 방식의 프로그래밍이 무엇인지 감을 잡을 수 있습니다.
 

이 책에는 함수형 진영에서 연구된 기술들을 지금의 자바스크립트에 어떻게 적용해왔는지, 어떻게 적용해나갈지에 대한 내용이 담겨 있습니다. 기존의 함수형 자바스크립트 라이브러리를 탐구하고, 클로저, 엘릭서 등의 다른 함수형 언어들의 장점들을 자바스크립트에 옮겨보며 얻은 저자의 노하우와 생각들이 녹아 있습니다. 《함수형 자바스크립트 프로그래밍》은 크게 두 가지 틀로써 함수형 방식의 자바스크립트 프로그래밍에 접근합니다.

note-21. Underscore.js를 직접 만들어보며 배우는 함수형 자바스크립트
Underscore.js는 함수형 프로그래밍을 지원하는 자바스크립트 라이브러리입니다. 기존에 구현된 코드들을 따라가 보면 이미 진행된 탐구에 대해 많은 것들을 배울 수 있습니다.  Underscore.js의 API를 알려주기 위함이 아니라 왜 이런 함수가 만들어졌고, _.identity 같이 쓸모 없어 보이는 함수가 왜 실용(실무)적인 관점에서 필요한지 전달하며, 이를 통해 함수의 사용처와 함수형 패러다임의 뼈대를 이해할 수 있습니다.

note-22. 저자가 만든 라이브러리를 통해 살펴보는 함수형 자바스크립트 기법
책의 후반부에서는 저자와 저자의 개발팀이 만든 함수형 자바스크립트 라이브러리 Partial.js를 통해, Underscore.js와 Lodash의 기능적 아쉬움을 해결하면서 기능을 확장해 나갑니다. 이는 단순히 ‘이 라이브러리를 사용하라’는 의도가 아닙니다. 파이프 라인, 불변 객체, 템플릿 엔진, 비동기 제어 등에 있어서 더 나은 기능을 어떻게 구현할 수 있는지를 알 수 있고, 이를 통해 API 디자인을 어떻게 하는지도 알 수 있습니다.

여러분은 이 책으로 함수형 스타일의 자바스크립트 프로그래밍 기법을 배울 수 있고, 자바스크립트를 함수형으로 다루는 데 있어서 필요한 문법들에 대해 집중적으로 이해할 수 있으며, 함수형 패러다임을 이해하며 실무에 활용할 수 있는 아이디어를 얻을 수 있을 것입니다.

블로그_추천사01

또한 이 책과 함께 참고할 만한 동영상 강의를 인프런에서 무료로 볼 수 있습니다. 짧은 시간에 함수형 프로그래밍의 개요를 알 수 있고, 책과 흐름은 같지만 예제 등 세부적으로 다른 부분이 있으니 꼭~ 한번 보시길 추천합니다. (예를 들면, 예제가 다르고, 책의 주제와 맞지 않아 담지 않았던 몇 가지 내용(개발 동향, 엘릭서, 클로저, 병렬성, 동시성에 대한 이야기 등)도 간략히 다루고 있습니다.)
(아래 이미지를 클릭하면 강좌 페이지로 이동합니다.)

인프런_함수형(https://www.inflearn.com/course/함수형-프로그래밍/)

《함수형 자바스크립트 프로그래밍》에는 실무에 함수형 프로그래밍을 어떻게 반영할지 고민하고 노력했던 저자의 노하우와 그 결과가 고스란히 담겨 있습니다. 그리고 철저히 개발자스러운 접근 방식을 녹여 독자에게 보다 ‘쓸만한’ 내용을 담고자 했습니다. 저자의 의도와 책이 전하고자하는 바가 여러분에게 잘 전달되었으면 합니다. 🙂

* 이 책의 모든 예제는 https://github.com/indongyoo/functional-javascript에서 확인할 수 있습니다.

 

▶ [ Yes24 ] [ 교보문고 ] [ 알라딘 ] [ 인터파크 ]