20년 동안 소프트웨어 개발업계에서 주니어 프로그래머에서 테크니컬 리더와 소프트웨어 아키텍트를 거쳐 테크니컬 코치와 트레이너가 됐다. 작업 방식과 테스트 접근법과 코드 개선에 경험이 풍부하다. 『Usable Software Design』(2016)과 『Coderetreat』(2016)를 썼다.
이 책은 오래된 아이디어 함수형 프로그래밍과 고전 프로그래밍 언어 C++ 둘을 결합한 것이다. 함수형 프로그래밍은 1950년 무렵부터 있었지만 수학적 기반 때문에 수년 동안 소프트웨어 개발 분야 주류의 관심을 끌기에는 한계가 있었다. 멀티코어 CPU와 빅데이터의 도래로 병렬화의 필요성과 프로그래밍 언어 설계자의 람다와 불변성에 대한 관심 덕분에 함수형 프로그래밍은 C#, 자바, PHP, 자바스크립트, 파이썬, 루비를 포함한 주요 프로그래밍 언어에 점점 더 많이 도입됐다. C++와 함수형 프로그래밍은 함수 포인터, 펑터, 특정 구조의 장점을 활용하게 해주는 STL 알고리듬 같은 기능과는 불가분의 관계다.
이 책에서는 초보자든 전문가든 함수형 프로그래밍 개념을 C++에서 활용하는 방법, 이것이 기존 코드 베이스를 관리하고 향상시키는 데 유용한 이유 역시 배울 것이다. 모든 아이디어를 간결한 코드 샘플과 유닛 테스트로 검증하는 것도 소개할 것이다. 이 샘플 코드로 직접 돌려보길 권한다.
학습 경험을 최적화하기 위해 모든 아이디어가 간결한 방식으로 이해 흐름을 따라가면서 표현되도록 각별히 노력했다. 그 과정에서 특정 구조 사용을 과장하기도 했다. 예를 들어 샘플 코드에 람다를 많이 사용한 것은 람다를 어떻게 사용하는지 보여주려는 것이다. 함수형 프로그래밍을 배우는 가장 좋은 방법은 람다 세상과 람다의 연산자에 온전히 뛰어드는 것이라고 믿는다. 이 접근법을 상용에서의 접근법과 분리해 생각하길 바란다. 사실 이 개념을 스스로 실험해본 후 상용코드에 맞는 개념을 적용해볼 것을 권한다. 이 목표를 달성하기 위해 함수에 연산자를 적용하는 다양한 방법을 적었다. 이 방법을 통해 다양한 컨텍스트에서 사용할 수 있는 충분한 도구를 갖추게 될 것이다.