이미 소장하고 있다면 판매해 보세요.
|
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 속성 ____제너레이터에 데이터 전달 __비동기 호출 조작에 제너레이터 사용 ____비동기용 제너레이터: 간단한 경우 ____비동기를 위한 제너레이터: 실세계 경우 __ECMAScript 2017의 비동기 함수 ____Promise ____await ____async ____콜백 연결하기 ____비동기 호출에서 에러 핸들링 ____제너레이터로 트랜스파일된 비동기 함수 __요약 11장. 반응형 라이브러리 빌드 __불변성 __간단한 Redux 라이브러리 빌드 __HyperApp과 같은 프레임워크 구성 ____가상 DOM ____JSX ____JS Fiddle ____createActions ____render ____patch ____update ____merge ____remove ____요약 12장. 테스트와 마무리 __소개 __테스팅의 종류 __BDD와 TDD __자바스크립트 테스트 프레임워크 ____Mocha를 사용한 테스팅 ____Sinon을 사용한 모의 테스트 ____Jasmine을 통한 테스팅 __코드 커버리지 __Linting __라이브러리 코드 단위 테스팅 __마무리 __요약 |
Anto Aravinth
Srikanth Machiraju
이창화의 다른 상품
|
★ 이 책에서 다루는 내용 ★
■ 문자열 패딩, 비동기 함수와 같은 함수형 프로그래밍 개념 ■ 자바스크립트에서 함수를 다루는 방법 ■ underscore.js와 유사한 함수형 라이브러리 작성 ■ 스프레드 연산자나 제너레이터와 같은 ES8 함수형 특성 ■ 함수형 패러다임에 따라 React-Redux 패턴처럼 동작하는 라이브러리 작성 ★ 이 책의 구성 ★ 함수형 프로그래밍 개념과 자바스크립트 언어의 함수형 본질을 이해할 수 있도록 돕는다. 함수형 프로그래밍 개념을 소개하는 것부터 시작해서 선언형과 함수형 프로그래밍의 핵심적인 차이점을 알아본다. 자바스크립트 함수를 직접 파고들며 ES8로 작성하는 방법을 배운다. 이후 고차 함수로 이동해 ‘데이터로서의 함수'가 어떻게 가능성의 세계를 여는지 살펴본다. 그런 다음 클로저로 고차 함수를 작성한다. 배열을 소개하고 함께 사용할 수 있는 API를 소개한다. 커링과 부분 적용을 사용해 특정 함수를 다른 함수로 바꾸는 방법을 살펴본다. 합성 함수를 자세히 다루고 함수자와 모나드도 알아본다. 응용할 수 있는 함수를 자세히 알아본 후, async와 await처럼 ES8에서 제공하는 새로운 특성을 알아본다. 이 책에서 배운 함수형 개념을 사용해 HTML 애플리케이션을 구성하는 데 사용할 수 있는 작은 라이브러리를 작성한다. 마지막으로 함수형 자바스크립트의 단위 테스팅 개념과 프레임워크, 도구를 소개한다. 이 책에서는 함수형 툴킷을 사용해 웹 애플리케이션 개발에 필요한 작은 라이브러리를 구성하는 방법과 함수형 코드를 테스트하는 방법을 알아본다. ★ 지은이의 말 ★ 모든 책의 2판은 항상 특별하다. 1판을 저술했을 때 IT 관련 경험은 2년밖에 되지 않았다. 이번 2판에서는 1판의 긍정적인 반응뿐만 아니라 부정적인 견해도 받아들여 2판을 작성했다. 좀 더 도움될 내용으로 향상시키고 가치 있는 책으로 만들고자 비판적인 반응을 적극 반영했다. 그 사이 자바스크립트는 상당히 발전하고, 여러 획기적인 변화가 언어에 적용됐다. 이제 웹은 자바스크립트로 가득하다. 웹이 없는 세상을 상상할 수 있겠는가? 2판에서는 자바스크립트에서 함수형 프로그래밍의 기본을 가르치는 데 좀 더 집중했다. 함수형 개념을 사용해 웹 애플리케이션을 구성하는 라이브러리와 테스팅을 수행하는 부분과 같이 새로운 내용도 추가했다. 여러 async, await 패턴 등에도 최신 ES8 문법을 적용해 다시 작성했다. 이 책을 통해 필요한 지식을 많이 얻어가고 동시에 예제를 실행하는 것이 많은 도움 되길 바란다. 이제 시작해보자! ★ 옮긴이의 말 ★ 프로그래밍 방법론과 패러다임이 많이 발전하고 있습니다. 기계어, 어셈블리어가 나오면서 가장 먼저 나온 패러다임이 명령형 프로그래밍입니다. 많은 사람에게 가장 익숙한 형태일 것입니다. 명령형 프로그래밍은 절차형과 객체지향형으로 나뉠 수 있습니다. 코드 순서대로 실행되는 절차형과 클래스란 개념을 가져오는 객체지향형은 C, C++, 자바 등에서 쉽게 찾아볼 수 있습니다. 명령형 프로그래밍과 대조되는 함수형 프로그래밍은 선언형 프로그래밍으로, 어떤 것을 실행할지에 초점이 맞춰져 있습니다. 문법과 언어에 초점이 맞춰진 명령형 패러다임과 달리 함수형 프로그래밍은 함수의 구성에 초점 맞춰져 있습니다. 함수형 프로그래밍은 우리가 배웠던 수학의 함수 개념으로 계산에 접근합니다. 여러 함수를 중첩 사용하기 때문에 함수의 내부를 알지 못하더라도 쉽게 사용할 수 있습니다. 이때 필요한 개념에는 여러 가지가 있습니다. 먼저 순수 함수(pure function)란 동일한 입력에 항상 동일한 출력을 보이는 함수로, 입력과 출력을 매핑시켜 호출하는 쪽과 순수 함수의 통신이 가능합니다. 자세한 사항은 1장에서 다룹니다. 함수 중첩을 통해 여러 함수를 하나의 동작으로 묶을 수 있습니다. 이런 것이 가능한 함수를 고차 함수(high order function)라고 합니다. 고차 함수는 2장부터 자세히 다룹니다. 이렇듯 함수형 프로그래밍은 라이브러리만 잘 구축한다면 코드를 굉장히 간결하고 이해하기 쉽게 만들 수 있는 장점이 있습니다. 메소드에 진입할 때 사용하는 . 기호를 사용하거나 괄호의 개수를 줄이는 등 코드 가독성을 높이고 수준 높은 프로그래밍을 할 수 있습니다. 자바스크립트 언어 자체가 웹 프로그래밍 영역에서는 거의 필수적으로 사용되는 언어입니다. 좋은 프로그래밍 언어를 평가하는 기준에는 사용성, 확장성, 성능, 변경 유용성 등이 있습니다. 함수형 프로그래밍은 언어 내의 조합성을 강조한 프로그래밍으로, 사용성 부분은 떨어질 수 있습니다. 하지만 함수형 프로그래밍 개념을 익히면 조합성과 모듈성이 높아져 결국은 코드의 오류가 줄어들게 되고, 모듈화가 잘된 코드는 효율적으로 수정과 디버깅이 가능합니다. 함수형 프로그래밍을 처음 접한다면 이 책을 처음 보는 순간, 프로그래밍 언어를 새로 배우는 느낌이 들 것입니다. 처음 언어를 배울 때 어렵고 시간이 걸리지만 점점 익숙해지듯이 함수형 프로그래밍도 자바스크립트뿐만 아니라 파이썬 등의 다양한 언어로 개념을 다진다면 어떠한 프로그래밍 언어도 쉽게 넘나들 수 있는 개발자가 될 거라고 생각합니다. 1장부터는 함수형 프로그래밍의 실용성과 효율성, 모듈성에 대해 배우며, 8, 9장에서는 함수자와 모나드의 개념을, 10장에서는 ECMAScript 8에서 새로 명시된 async와 await를 배웁니다. 마지막으로 함수형 프로그래밍 테스트까지 전반적인 함수형 프로그래밍 기초 개념과 필요한 라이브러리 구축 등을 배웁니다. 전체 코드는 바벨 노드(babel-node) 기반으로 실행돼 코드 확인이 간편합니다. 자세한 실행 방법은 2장에서 살펴볼 수 있습니다. 직접 코드 수정을 거친 만큼 이 책을 통해 함수형 프로그래밍과 좀 더 친해지길 바랍니다. |