장바구니 담기 close

장바구니에 상품을 담았습니다.

모던 C++로 배우는 함수형 프로그래밍

모던 C++로 배우는 함수형 프로그래밍

  • 위스누앤거로
  • |
  • 에이콘출판
  • |
  • 2018-03-30 출간
  • |
  • 368페이지
  • |
  • 188 X 235 mm
  • |
  • ISBN 9791161751368
판매가

30,000원

즉시할인가

27,000

카드할인

0원(즉시할인 0%)

적립금

1,500원 적립(5%적립)

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

추가혜택

네이버페이 무조건 1%적립+ 추가 1%적립

수량
+ -
총주문금액
27,000

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평

모던 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장 '함수형 방식으로 코드 작성하기'에서는 지금까지 공부한 내용을 기반으로 함수형 코드로 프로그램을 만들어 본다. 그리고 개발 도중 예상하지 못한 결과가 나타나거나 크래시가 발생했을 때 해결 방안을 찾기 위한 디버깅 방법도 알아본다.

목차


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)
__코드 디버깅
____디버깅 도구 시작
____디버깅 모드에서 사용 가능한 명령
____중단점 설정과 제거
____객체의 현재 상태 출력
__요약

저자소개

저자 : 위스누 앤거로 

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.