모던 C++로 배우는 함수형 프로그래밍 (커링, 메타프로그래밍 등 C++와 함수형 프로그래밍의 핵심)

모던 C++로 배우는 함수형 프로그래밍 (커링, 메타프로그래밍 등 C++와 함수형 프로그래밍의 핵심)

$31.00
Description
모던 C++의 새로운 기능과 함수형 프로그래밍을 다룬다. 기능이나 개념별로 예제 코드를 작성하고 실행하며 공부할 수 있도록 구성했다. 기본 문법은 자세히 설명하지 않으므로 C++ 사용 경험이 있는 독자를 대상으로 한다. C++ 11 이후의 새로운 기능을 요약해서 배우고, 함수형 프로그래밍에 적용해 보는 과정을 흥미 있게 따라갈 수 있다
저자

위스누앤거로

저자위스누앤거로(WisnuAnggoro)는C#MCP(MicrosoftCertifiedProfessional)이며경험많은C/C++개발자다.팩트출판사에서『Boost.AsioC++NetworkProgramming』(2013)과『FunctionalC#』(2017)을집필했다.약20년전고등학생때부터프로그래밍을시작했으며,MS-DOS환경에서BASIC을사용해프로그램을만들기시작했다.심(SIM)카드OS포팅,개인화,PC/SC통신등C#과C/C++을필요로하는스마트카드프로그래밍과데스크톱,웹개발에풍부한경험을갖고있다.현재스마트카드의혁신적인기술을전문으로하는인도네시아기업CIPTA에서선임스마트카드소프트웨어개발자로일하고있다

목차

1장.모던C++과친숙해지기
__모던C++의새로운기능익히기
____auto키워드로데이터타입을자동으로정의하기
____decltype키워드로표현식타입질의하기
____null포인터
____비멤버함수begin()과end()
____범위기반for루프로컬렉션내요소순회
__C++표준라이브러리구현살펴보기
____컨테이너안에객체배치하기
____알고리즘사용하기
__람다표현식
____간단한함수를람다로표현하기
____여러줄의함수를람다로표현하기
____람다표현식에서값반환
____람다표현식에서값캡처하기
____초기화캡처
____제네릭람다표현식
__스마트포인터로메모리관리자동화하기
____unique_ptr로원시포인터대체하기
____shared_ptr로객체공유하기
____weak_ptr로객체추적하기
__튜플을사용해다양한데이터타입저장하기
____튜플에서값읽기
____튜플값타입반환
__요약

2장.함수형프로그래밍에서함수다루기
__일급함수
____다른함수의매개변수로함수전달
____변수에함수대입
____컨테이너에함수저장
____런타임에새로운함수생성
__고차함수의세가지기능
____고차함수의특성,맵알아보기
____고차함수의특성,필터로데이터추출하기
____고차함수의특성,폴드알아보기
__순수함수로부작용피하기
__커링으로함수분리하기
__요약

3장.함수에불변객체사용하기
__불변객체의주요특징
____지역변수수정
____함수에전달된인수수정하기
__값수정금지하기
__불변객체에일급함수와순수함수적용하기
__불변객체구현하기
____가변객체만들기
____가변객체를불변객체로변환하기
__불변성의장점
__요약

4장.재귀함수호출
__함수를재귀적으로호출하기
____반복으로함수호출
____재귀로함수호출
__불변함수반복호출
__꼬리재귀이해하기
__함수형,절차형,백트랙킹재귀
____함수형재귀
____절차형재귀
____백트랙킹재귀
__요약

5장.지연평가로실행늦추기
__표현식평가
____즉시평가
____지연평가
__지연평가에필요한기술
____처리흐름늦추기
____메모이제이션으로값캐싱
____메모이제이션으로코드최적화
__지연평가코드만들기
____Chunk,Row클래스디자인
____여러행연결하기
____각행의요소순회하기
____무한정수행만들기
____무한소수행만들기
____즉시평가를지연평가로변환하기
__요약

6장.메타프로그래밍으로코드최적화
__메타프로그래밍소개
____매크로를사용한코드전처리
____표준라이브러리의템플릿메타프로그래밍자세히보기
__템플릿메타프로그래밍
____템플릿메타프로그래밍에서타입다루기
____템플릿메타프로그래밍에서값처리
____템플릿메타프로그래밍에서조건처리
____템플릿메타프로그래밍에서재귀처리
__컴파일타임에타입선택하기
__템플릿메타프로그래밍으로흐름제어
____조건에따라다음작업결정
____구문선택
____루프에적용하기
__컴파일타임에코드실행
____컴파일타임상수얻기
____컴파일타임에클래스생성
__메타프로그래밍의장점과단점
__요약

7장.동시성을이용한병렬실행
__C++의동시성
____싱글스레드로작업하기
____멀티스레드로작업하기
__뮤텍스를이용한스레드동기화
____동기화문제해결하기
____자동으로잠금해제하기
____recursive_mutex로데드락방지하기
__윈도우에서스레드처리이해하기
____핸들로작업하기
____자동으로핸들해제하기
____이벤트트리거
____스레드에서이벤트사용하기
__요약

8장.함수형방식으로코드작성하기
__명령형클래스준비(Step01)
__명령형클래스를함수형클래스로변환(Steop02~06)
____매개변수에함수전달(Step02)
____기본클래스만들기(Step03)
____순수함수를가지도록개선(Step04)
____람다표현식으로조건필터링(Step05)
____Customer클래스에재귀와메모이제이션적용(Step06)
__코드디버깅
____디버깅도구시작
____디버깅모드에서사용가능한명령
____중단점설정과제거
____객체의현재상태출력
__요약

출판사 서평

★이책에서다루는내용★

■명령형접근법과함수형접근법의차이
■함수형코드에서일급함수와순수함수사용예시
■부작용방지를위한불변객체제작법
■효과적으로재귀알고리즘설계하기
■지연평가로더빠른코드만들기
■프로그램응답성향상을위한동시성사용
■코드최적화를위한C++표준라이브러리와메타프로그래밍사용법익히기


★이책의대상독자★

이책은함수형패러다임을적용해서견고하고테스트가능한프로그램을개발하고싶은OOP에친숙한C++개발자를대상으로한다.


★이책의구성★

1장‘모던C++과친숙해지기’에서는auto,decltype,null포인터,범위기반(range-based)for루프,표준라이브러리,람다(Lamda)표현식,스마트포인터,튜플(tuple)처럼모던C++의여러기능을두루살펴보며모던C++과친숙해진다.
2장‘함수형프로그래밍에서함수다루기’에서는일급함수,순수함수,커링(currying)등함수형프로그래밍의핵심개념을다룬다.
3장‘함수에불변객체사용하기’에서는가변(mutable)객체를불변(immutable)객체로바꾸는방법을알아본다.불변객체를만들기위해일급함수와순수함수를적용해본다.
4장‘재귀함수호출’에서는반복(iteration)과재귀(recursion)의차이점을짚어보고,재귀가함수형프로그래밍에더좋은이유를알아본다.재귀의세가지종류인함수형,절차형(procedural),백트랙킹(backtracking)에대해서도살펴본다.
5장‘지연평가로실행늦추기’에서는코드실행을지연해더효율적인코드제작법을배운다.캐싱과메모이제이션(memoization)으로실행시간을단축하는방법도알아본다.
6장‘메타프로그래밍으로코드최적화’에서는메타프로그래밍을사용해컴파일타임에코드를실행하는방법을배운다.또템플릿메타프로그래밍으로코드흐름을제어해본다.
7장‘동시성을이용한병렬실행’에서는멀티스레드를다룬다.데드락(deadlock)을방지하기위한동기화기법을알아보고,특히윈도우OS에서스레드를생성하고실행하는방법을배운다.
8장‘함수형방식으로코드작성하기’에서는지금까지공부한내용을기반으로함수형코드로프로그램을만들어본다.그리고개발도중예상하지못한결과가나타나거나크래시가발생했을때해결방안을찾기위한디버깅방법도알아본다.