서브메뉴

본문

함수형 자바스크립트 (새롭고 올바른 자바스크립트 프로그래밍 기법)
함수형 자바스크립트 (새롭고 올바른 자바스크립트 프로그래밍 기법)
저자 : 마이클 포거스
출판사 : 한빛미디어
출판년 : 2014
ISBN : 9788968480799

책소개

새롭고 올바른 자바스크립트 프로그래밍 기법『함수형 자바스크립트』. 이 책은 Underscore.js 라이브러리를 이용해 아름답고 안전하고 직관적이고 테스트하기 쉬운 함수형 자바스크립트 코드를 구현하는 방법을 설명한다. 함수형 프로그램 기법을 배우려는 자바스크립트 프로그래머와 자바스크립트를 배우려는 함수형 프로그래머에게 유용하도록 구성하였다.
[교보문고에서 제공한 정보입니다.]

출판사 서평

이 책이 제시하는 핵심 내용

이 책은 자바스크립트를 올바로 사용할 수 있는 방법으로 함수형 프로그래밍 기법을 제시한다. 이 과정에서 Underscore.js를 사용하여 자바스크립트의 가장 큰 걸림돌인 ‘이상한 점’, ‘안전하지 않은 특성’, ‘수많은 경쟁 라이브러리가 있다는 사실’을 극복한다.

* 언더스코어(Underscore.js)란 무엇인가?
함수형 프로그래밍을 지원하는 자바스크립트 라이브러리로써 Prototype.js (또는 루비)에서 제공하는 것과 비슷한 기능을 함수형 프로그래밍용으로 제공한다. 하지만 언더스코어는 자바스크립트 내장 객체를 확장하지 않는다.

어떤 독자를 위한 책인가?

이 책의 독자가 자바스크립트의 기본 지식은 있다고 가정했다. 자바스크립트 언어와 관련한 훌
륭한 책이 있고, 온라인에도 방대한 자료가 있으므로 이 책에서는 자바스크립트 언어 자체에
대한 설명은 하지 않는다. 또한 독자가 자바, 루비, 파이썬, 자바스크립트 등에서 일반적으로
사용하는 객체 지향 프로그래밍을 실무에 적용할 수 있을 정도의 지식이 있다고 가정했다. 객
체 지향 프로그래밍 지식이 있다면 필자가 제공하는 정보를 좀 더 매끄럽게 받아들일 수 있겠
지만 꼭 전문적인 객체 지향 프로그래밍 지식이 필요하진 않다.

이 책은 오랫동안 자바스크립트를 해왔지만 함수형 프로그래밍에 대해 알고 싶어 하는 프로그
래머 또는 오랫동안 함수형 프로그램을 해왔으면서 자바스크립트를 배우고자 하는 프로그래머
에게 가장 이상적이다. 후자의 경우에는 이 책을 메인으로 삼아 공부하기보다는 자바스크립트
의 특이한 사항에 초점을 맞춘 부가적인 책으로 활용하길 권한다.

도서특징

* 혁신적이고 놀라운 자바스크립트 코딩 기법을 만나자!
이 책은 Underscore.js 라이브러리를 이용해 아름답고 안전하고 직관적이고 테스트하기 쉬운 함수형 자바스크립트 코드를 구현하는 방법을 설명한다. 함수형 프로그램 기법을 배우려는 자바스크립트 프로그래머와 자바스크립트를 배우려는 함수형 프로그래머에게 유용하다.

ㆍ일급 함수를 이용한 응용 프로그래밍 기법
ㆍ변수 스코프와 클로저 이해하기, 사용하기
ㆍ함수로 함수 만들기, 인자로 삼기
ㆍ재귀 함수 관련 자바스크립트 한계 극복
ㆍ프로그램에서 상태 변화의 흔적을 줄이기, 숨기기, 제거하기
ㆍ체인과 함수형 파이프라인을 이용한 흐름 기반 프로그래밍
ㆍ클래스를 사용하지 않고 코딩하는 방법

추천사

“이 책은 퍼즐 조각을 하나씩 끼워 맞추듯 함수형 프로그래밍을 설명한다. 자바스크립트를 함수형 프로그래밍 방법으로 사용해야 하는 당위성 및 장점과 단점을 명쾌한 예제로 설명한다. 처음 읽으면 고개를 갸우뚱거리게 되지만, 두 번 읽으면 ‘아!’라는 감탄사를 연발할 수 밖에 없다.”
정경석,
『이것이 레디스다』 저자

“당신은 함수형이라는 흥미로운 영역을 탐험하는 멋진 책을 읽고 있다. 우리의 친절한 여행 가이드이자 미친 레지던트 과학자인 마이클 포거스는 아홉 개의 장과 두 개의 부록을 통해서 함수형 프로그래밍을 잘게 부수기도 하며, 그들을 다시 조립해서 어떻게 저런 일이 가능할까 싶을 정도의 멋진 작품으로 함수형 프로그래밍의 활용 방법을 보여 주고 있다. 독자를 놀래는 프로그래밍 책은 드물다. 그러나 이 책은 분명 당신을 놀랠 것이다!”

제레미 애쉬케나스 Jeremy Ashkenas,
CoffeeScript 언어, Backbone.js 프레임워크, Underscore.js 라이브러리 창시자

“더글라스 크락포드의 멋진 책 『자바스크립트 핵심 가이드』를 읽었을 때가 기억난다. 그 책을 읽고 유용한 정보를 얻었을 뿐 아니라 자바스크립트의 단점을 피하는 방법을 고작 172쪽으로 설명했다는 점에 감명을 받았다. 사실, 정보를 제공할 때 간결함은 교육적인 면에서는 그리 좋지 않다. 그런데 크락포드처럼 간결함으로 어떤 정보를 성공적으로 제공할 수 있다면 독자는 저자의 권고를 더 완벽하게 소화하여 결과적으로 더 많은 이익을 얻게 된다. 이 책을 읽어 보면 마이클 포거스도 크락포드만큼 혹은 그 이상으로 훌륭한 책을 집필했음을 알 수 있다. 마이클 포거스는 크락포드를 포함한 기존의 전문가들의 훌륭한 조언을 받아들이면서 함수형 자바스크립트 프로그래밍 세계로 독자를 깊숙이 인도한다.”

스티브 비노스키Steve Vinoski,
『Advanced CORBA? Programming with C++』 저자, IEEE 시니어 멤버

“마이클 포거스는 함수형 자바스크립트 프로그래밍을 자세하고 실용적으로 설명한다. 또한 소개하는 개념을 Underscore.js 툴킷과 결합해 실용적인 예제로 설명한다. 설명과 예제를 통해 간결하고, 멋지고, 탄탄한 자바스크립트를 개발하는 방법을 제시한다.”
? 딘 왐플러 Dean Wampler,
『Programming Scala』 저자

“이 책에 다른 제목을 붙인다면 ‘자바스크립트 핵심 공략’이라고 할 수 있다. 이 책에서 설명하는 함수형 개념을 자바스크립트에 적용한다면 자바스크립트를 이용해 문제에 접근하는 방법이 달라질 것이다.”
? 롭 프리셀 Rob Friesel,
Dealer.com UI 개발자

역자의 말

일반적으로 책에 실린 ‘추천의 글’은 책이 좋다는 것을 독자에게 알리고 구매를 독려하는 것이 목적이므로 맹목적으로 칭찬하는 글이 대부분이다. 그런데 이 책의 추천의 글을 읽었을 때는 뭔가 다른 종류의 ‘추천’ 표현이 있다. 가령 ‘독자를 놀래는 프로그래밍 책은 드물다’라던가 ‘한 장 한 장 읽어 나갈 때마다 포거스의 접근 방식이 얼마나 혁신적인지 깨닫고 놀라게 될 거라 장담한다’라는 표현이 있었다. 정말로 이 책의 내용이 그렇게 혁신적이고 놀라운 것일까라는 의아심을 자아냈다.

결론부터 얘기하자면 이 책을 끝까지 읽은 독자라면 ‘추천의 글’에 완전 동감할 것이라 생각한다. 함수형 프로그래밍이 제공하는 장점을 매우 간결하고 정확하고 적절하게 함축한 예제를 사용했다. 역자로서는 개인적으로 최근 몇 년간 이렇게 훌륭하게 집필된 책을 본 적이 없을 정도다. 하지만 책의 난이도가 높아 역자가 그랬듯 여러분도 여러 번 반복해 읽어야 하는 수고를 하게 될 것이다.
- 우정은
[교보문고에서 제공한 정보입니다.]

목차정보

1장. 함수형 자바스크립트 소개
함수형 프로그래밍과 Underscore.js를 포함한 몇 가지 중요한 주제를 소개한다.

_1.1 자바스크립트 활용사례
_1.2 함수형 프로그래밍 시작하기
_1.3 언더스코어와 관련한 잡담
_1.4 요약

2장. 일급 함수와 응용형 프로그래밍
일급 함수를 정의하고 사용하는 방법을 보여 주며 몇 가지 일반적인 적용 사례를 보여 준다. 일급 함수를 사용하는 기법 중 하나로 응용형 프로그래밍을 설명한다. 또한 함수형 프로그래밍을 이용한 소프트웨어 개발의 핵심인 ‘데이터 고찰’을 살펴본다.

_2.1 일급 함수의 특징
_2.2 응용형 프로그래밍
_2.3 데이터 고찰
_2.4 요약

3장. 변수 스코프와 클로저
자바스크립트 함수형 프로그래밍의 두 가지 핵심을 설명하는 과도기 장이다. 자바스크립트에서 흔히 사용하는 어휘적 스코핑, 동적 스코핑, 함수 스코핑 등을 포함한 다양한 변수 스코핑을 살펴보며, 클로저가 어떻게 동작하며 어떤 방식으로 그리고 왜 클로저를 사용하는지 살펴본다.

_3.1 전역 스코프
_3.2 어휘 스코프
_3.3 동적 스코프
_3.4 함수 스코프
_3.5 클로저
_3.6 요약

4장. 고차원 함수
2장과 3장에서 배운 내용을 기초로 하여 일급 함수의 중요 유형인 고차원 함수를 설명한다. ‘고차원 함수’라는 말이 조금 복잡해 보일 수도 있지만, 고차원 함수가 간단함을 보여준다.

_4.1 다른 함수를 인자로 취하는 함수
_4.2 다른 함수를 반환하는 함수
_4.3 지금까지 배운 내용을 모두 활용: 객체 검증자
_4.4 요약

5장. 함수로 함수 만들기
다른 함수를 이용해서 함수를 ‘만드는’ 방법을 살펴본다. 함수를 만드는 것은 함수형 프로그래밍에서 중요한 기법이므로 함수를 만드는 방법을 적절히 설명한다.

_5.1 함수 조립의 핵심
_5.2 커링
_5.3 부분 적용
_5.4 함수의 끝을 서로 연결하는 함수 조립 방법
_5.5 요약

6장. 재귀
직접 또는 간접적으로 자신을 호출하는 재귀 함수를 설명하는 과도기 장이다. 자바스크립트에서는 재귀에 한계가 있어서 자주 사용되진 않는다. 그러나 재귀의 한계를 극복할 수 있는 방법이 있는데 이를 일부 설명한다.

_6.1 자신을 호출하는 함수
_6.2 상호 재귀 함수(서로를 호출하는 함수)
_6.3 너무 깊은 재귀!
_6.4 재귀는 저수준 동작이다
_6.5 요약

7장. 순수성, 불변성, 변경 정책
어떤 것도 바꾸지 않는 함수형 코드를 구현하는 다양한 방법을 살펴본다. 간단히 말하면, 변수가 바뀌지 않을 때 함수형 프로그래밍을 쉽게 적용할 수 있다. 변수가 바뀌지 않는 상황이 어떤 의미인지 자세히 설명한다.

_7.1 순수성
_7.2 불변성
_7.3 변화 제어 정책
_7.4 요약

8장. 흐름 기반 프로그래밍
관찰 작업을 살펴본다. 전체 시스템을 데이터를 가공하고 이동시키는 가상의 함수 ‘조립 라인’으로 간주한다.

_8.1 체이닝
_8.2 파이프라이닝
_8.3 데이터 흐름과 제어 흐름
_8.4 요약

9장. 클래스를 이용하지 않는 프로그래밍
클래스 기반의 객체 지향 프로그래밍을 전혀 적용하지 않는 흥미로운 방식으로 응용 프로그램을 만드는 함수형 프로그래밍 방식을 설명한다.

_9.1 데이터 지향
_9.2 믹스인
_9.3 }).call("Finis" );

부록 A. 실생활의 함수형 자바스크립트
부록 B. 참고문헌
[교보문고에서 제공한 정보입니다.]

QuickMenu