함수형 자바스크립트 입문 (ECMAScript 8로 함수형 프로그래밍 개념부터 라이브러리 구축까지 | 2 판)

함수형 자바스크립트 입문 (ECMAScript 8로 함수형 프로그래밍 개념부터 라이브러리 구축까지 | 2 판)

$30.55
Description
자바스크립트를 함수형 패러다임으로 소개한다. underscore.js와 유사한 함수형 라이브러리를 만들면서 함수형 프로그래밍을 이해한다. 함수형 패러다임의 기초인 1급 함수, 고차 함수, 커링, 클로저 등을 ES8의 최신 버전으로 알아본다. 합성 함수를 자세히 배우고, 함수자와 모나드도 알아본다. async와 await 등과 같이 ES8에서 제공되는 새로운 특성을 여러 함수와 함께 배워본다. 마지막으로 함수형 자바스크립트 단위 테스팅과 프레임워크를 소개한다.
저자

안토아라빈스

AntoAravinth
소프트웨어회사에서6년이상근무했다.최신기술로작성된여러시스템을개발한경력이있다.자바스크립트에대한기본지식과작동방법을알고여러사람을가르치는방법을잘알고있다.시간이남을때는오픈소스소프트웨어를다루거나탁구를한다.

목차

1장.간단하게살펴보는함수형프로그래밍
__함수형프로그래밍이란무엇이고,왜중요한가?
__참조적투명성
__명령형,선언형,추상화
__함수형프로그래밍의장점
__순수함수
____순수함수는테스트하기편한코드다
____이상적코드
____병렬코드
____캐시가능
____파이프라인과컴포저블
__순수함수는수학적인함수다
__작업해야할것
__자바스크립트는함수형프로그래밍언어인가?
__요약

2장.자바스크립트함수의기본
__ECMAScript역사
__함수생성과실행
____첫번째함수
____엄격한방식
____상태반환은옵션이다
____다양한상태함수
____함수인자
____ES5함수는ES6이후에서도동작한다
__프로젝트구성
____초기구성
____반복문제에대한첫번째함수적접근
____출력
____입력
____바벨-노드를사용한코드실행
____npm에서스크립트작성
____깃을이용한코드실행
__요약

3장.고차함수
__데이터의이해
____자바스크립트데이터형이해
____함수저장
____함수전달
____함수반환
__추상화와고차함수
____추상화정의
____고차함수를통한추상화
__현실에서의고차함수
____every함수
____some함수
____sort함수
__요약

4장.클로저와고차함수
__클로저이해
____클로저란?
____어디서부터생겨났을까?
____sortBy함수다시살펴보기
__실제세계에서의고차함수(계속)
____tap함수
____unary함수
____once함수
____memoize함수
____assign함수
__요약

5장.배열로함수형다루기
__배열로함수형다루기
____map
____filter
__연산연결
____concatAll
__함수축소
____reduce함수
__함수압축
____zip함수
__요약

6장.커링과부분적용
__용어정리
____단항함수
____이항함수
____가변인자함수
__커링
____커링을사용하는경우
____커링을사용한logger함수
____커링다시살펴보기
____다시logger함수로
__커링의실제사용
____배열요소에서숫자검색
____배열제곱
__데이터플로우
____부분적용
____부분함수구현
____커링과부분적용
__요약

7장.컴포지션과파이프라인
__일반적인용어에서의컴포지션
____유닉스철학
__함수형컴포지션
____map,filter다시살펴보기
____compose함수
__compose함수다루기
____구원자:curry와partial
____여러함수합성
__파이프라인과시퀀스
____파이프구현
____컴포지션의특이점
____파이프라인연산자
____tap함수를사용한디버깅
__요약

8장.함수자
__함수자란?
____함수자는컨테이너다
____map구현
__MayBe
____MayBe구현
____간단한사용자케이스
____실제사용자케이스
__Either함수자
____Either구현
____Reddit예제Either버전
__주의할단어:포인팅된함수자
__요약

9장.모나드
__검색쿼리용Reddit댓글가져오기
__문제
____첫번째단계구현
____Reddit호출병합
____중첩된/다양한map의문제
__join으로문제해결
____join구현
____chain구현
____모나드란?
__요약

10장.제너레이터를통한정지,재개,비동기
__비동기코드와그문제
____콜백지옥
__제너레이터101
____제너레이터생성
____제너레이터의경고
____yield키워드
____제너레이터의done속성
____제너레이터에데이터전달
__비동기호출조작에제너레이터사용
____비동기용제너레이터:간단한경우
____비동기를위한제너레이터:실세계경우
__ECMAScript2017의비동기함수
____Promise
____await
____async
____콜백연결하기
____비동기호출에서에러핸들링
____제너레이터로트랜스파일된비동기함수
__요약

11장.반응형라이브러리빌드
__불변성
__간단한Redux라이브러리빌드
__HyperApp과같은프레임워크구성
____가상DOM
____JSX
____JSFiddle
____createActions
____render
____patch
____update
____merge
____remove
____요약

12장.테스트와마무리
__소개
__테스팅의종류
__BDD와TDD
__자바스크립트테스트프레임워크
____Mocha를사용한테스팅
____Sinon을사용한모의테스트
____Jasmine을통한테스팅
__코드커버리지
__Linting
__라이브러리코드단위테스팅
__마무리
__요약

출판사 서평

★이책에서다루는내용★

■문자열패딩,비동기함수와같은함수형프로그래밍개념
■자바스크립트에서함수를다루는방법
■underscore.js와유사한함수형라이브러리작성
■스프레드연산자나제너레이터와같은ES8함수형특성
■함수형패러다임에따라React-Redux패턴처럼동작하는라이브러리작성

★이책의구성★

함수형프로그래밍개념과자바스크립트언어의함수형본질을이해할수있도록돕는다.함수형프로그래밍개념을소개하는것부터시작해서선언형과함수형프로그래밍의핵심적인차이점을알아본다.자바스크립트함수를직접파고들며ES8로작성하는방법을배운다.이후고차함수로이동해‘데이터로서의함수'가어떻게가능성의세계를여는지살펴본다.
그런다음클로저로고차함수를작성한다.배열을소개하고함께사용할수있는API를소개한다.커링과부분적용을사용해특정함수를다른함수로바꾸는방법을살펴본다.합성함수를자세히다루고함수자와모나드도알아본다.응용할수있는함수를자세히알아본후,async와await처럼ES8에서제공하는새로운특성을알아본다.이책에서배운함수형개념을사용해HTML애플리케이션을구성하는데사용할수있는작은라이브러리를작성한다.마지막으로함수형자바스크립트의단위테스팅개념과프레임워크,도구를소개한다.
이책에서는함수형툴킷을사용해웹애플리케이션개발에필요한작은라이브러리를구성하는방법과함수형코드를테스트하는방법을알아본다.

★옮긴이의말★

프로그래밍방법론과패러다임이많이발전하고있습니다.기계어,어셈블리어가나오면서가장먼저나온패러다임이명령형프로그래밍입니다.많은사람에게가장익숙한형태일것입니다.명령형프로그래밍은절차형과객체지향형으로나뉠수있습니다.코드순서대로실행되는절차형과클래스란개념을가져오는객체지향형은C,C++,자바등에서쉽게찾아볼수있습니다.
명령형프로그래밍과대조되는함수형프로그래밍은선언형프로그래밍으로,어떤것을실행할지에초점이맞춰져있습니다.문법과언어에초점이맞춰진명령형패러다임과달리함수형프로그래밍은함수의구성에초점맞춰져있습니다.
함수형프로그래밍은우리가배웠던수학의함수개념으로계산에접근합니다.여러함수를중첩사용하기때문에함수의내부를알지못하더라도쉽게사용할수있습니다.이때필요한개념에는여러가지가있습니다.먼저순수함수(purefunction)란동일한입력에항상동일한출력을보이는함수로,입력과출력을매핑시켜호출하는쪽과순수함수의통신이가능합니다.자세한사항은1장에서다룹니다.함수중첩을통해여러함수를하나의동작으로묶을수있습니다.이런것이가능한함수를고차함수(highorderfunction)라고합니다.고차함수는2장부터자세히다룹니다.이렇듯함수형프로그래밍은라이브러리만잘구축한다면코드를굉장히간결하고이해하기쉽게만들수있는장점이있습니다.메소드에진입할때사용하는.기호를사용하거나괄호의개수를줄이는등코드가독성을높이고수준높은프로그래밍을할수있습니다.
자바스크립트언어자체가웹프로그래밍영역에서는거의필수적으로사용되는언어입니다.좋은프로그래밍언어를평가하는기준에는사용성,확장성,성능,변경유용성등이있습니다.함수형프로그래밍은언어내의조합성을강조한프로그래밍으로,사용성부분은떨어질수있습니다.하지만함수형프로그래밍개념을익히면조합성과모듈성이높아져결국은코드의오류가줄어들게되고,모듈화가잘된코드는효율적으로수정과디버깅이가능합니다.
함수형프로그래밍을처음접한다면이책을처음보는순간,프로그래밍언어를새로배우는느낌이들것입니다.처음언어를배울때어렵고시간이걸리지만점점익숙해지듯이함수형프로그래밍도자바스크립트뿐만아니라파이썬등의다양한언어로개념을다진다면어떠한프로그래밍언어도쉽게넘나들수있는개발자가될거라고생각합니다.1장부터는함수형프로그래밍의실용성과효율성,모듈성에대해배우며,8,9장에서는함수자와모나드의개념을,10장에서는ECMAScript8에서새로명시된async와await를배웁니다.마지막으로함수형프로그래밍테스트까지전반적인함수형프로그래밍기초개념과필요한라이브러리구축등을배웁니다.전체코드는바벨노드(babel-node)기반으로실행돼코드확인이간편합니다.자세한실행방법은2장에서살펴볼수있습니다.직접코드수정을거친만큼이책을통해함수형프로그래밍과좀더친해지길바랍니다.