모던 C++의 새로운 기능과 함수형 프로그래밍을 다룬다. 기능이나 개념별로 예제 코드를 작성하고 실행하며 공부할 수 있도록 구성했다. 기본 문법은 자세히 설명하지 않으므로 C++ 사용 경험이 있는 독자를 대상으로 한다. C++ 11 이후의 새로운 기능을 요약해서 배우고, 함수형 프로그래밍에 적용해 보는 과정을 흥미 있게 따라갈 수 있다.
★ 이 책에서 다루는 내용 ★
- 명령형 접근법과 함수형 접근법의 차이
- 함수형 코드에서 일급 함수와 순수 함수 사용 예시
- 부작용 방지를 위한 불변 객체 제작법
- 효과적으로 재귀 알고리즘 설계하기
- 지연 평가로 더 빠른 코드 만들기
- 프로그램 응답성 향상을 위한 동시성 사용
- 코드 최적화를 위한 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장 '함수형 방식으로 코드 작성하기'에서는 지금까지 공부한 내용을 기반으로 함수형 코드로 프로그램을 만들어 본다. 그리고 개발 도중 예상하지 못한 결과가 나타나거나 크래시가 발생했을 때 해결 방안을 찾기 위한 디버깅 방법도 알아본다.