간편결제, 신용카드 청구할인
카카오페이 5% (25,650원)
(카카오페이 결제 시 최대할인 2천원 / 1만원 이상 결제, 기간 중 1회)
네이버페이 1%
(네이버페이 결제 시 적립)
NH(올원페이)카드 6% (25,380원)
(5만원 이상 결제/최대 1만원 할인)
삼성카드 3% (26,190원)
(3만원 이상 결제/최대 1만원 할인)
북피니언 롯데카드 30% (18,900원)
(최대할인 3만원 / 3만원 이상 결제)
하나SK 북&카드 30% (18,900원)
(최대할인 3만원 / 3만원 이상 결제)
EBS 롯데카드 20% (21,600원)
(최대할인 3만원 / 3만원 이상 결제)
인터파크 NEW 우리V카드 10% (24,300원)
(최대할인 3만원 / 3만원 이상 결제)
인터파크 현대카드 7% (25,110원)
(최대할인 3만원 / 3만원 이상 결제)
Close

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

원제 : Learning C++ Functional Programming: Explore functional C++ with concepts like currying, metaprogramming and more

2013년 9월 9일 이후 누적수치입니다.

판매지수 486
?
판매지수란?
사이트의 판매량에 기반하여 판매량 추이를 반영한 인터파크 도서에서의 독립적인 판매 지수입니다. 현재 가장 잘 팔리는 상품에 가중치를 두었기 때문에 실제 누적 판매량과는 다소 차이가 있을 수 있습니다. 판매량 외에도 다양한 가중치로 구성되어 최근의 이슈도서 확인시 유용할 수 있습니다. 해당 지수는 매일 갱신됩니다.
Close
공유하기
정가

30,000원

  • 27,000 (10%할인)

    1,500P (5%적립)

배송정보
주문수량
감소 증가
  • 이벤트/기획전

  • 연관도서(325)

  • 사은품(1)

책소개

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

본문중에서

함수형 프로그래밍(Functional Programming)은 프로그램 구조 스타일 중 하나로, 공유 상태(shared state), 가변 데이터(mutable data), 부작용(side-effects)을 배제하는 순수 함수(pure function)로 구성된다. 수학에서 다루는 함수와 유사한데, 출력 값은 인수에만 의존하므로 동일한 입력에는 항상 같은 결과를 반환한다. 함수형 프로그래밍의 근본 개념은 문제 해결 방법으로 기존 패러다임과 다르게 함수의 활용을 강조하는 것이다.
함수형 프로그래밍은 명령형(imperative)에 대비되는 선언형(declarative)이다. 이 말은 프로그래밍이 명령(statement) 대신, 표현식(expression)과 선언(declaration)으로 이루어진다는 뜻이다. 함수형 프로그래밍에서는 순수 함수를 사용하므로 프로그램의 상태가 예상과 다르게 변하는 현상, 이른바 부작용을 방지한다. 반면 명령형 프로그래밍에서 프로그램 상태는 보통 객체의 함수 간에 공유되며 빈번하게 변경된다.
한편 표현식이 평가되면 명령형 프로그래밍에서는 결과 값이 변수에 대입된다. 예를 들어 함수 내에 여러 개의 표현식이 있다면, 최종 결과 값은 마지막 변수 상태에 영향을 받는다. 상태는 끊임없이 변할 수 있으므로 실행 순서가 매우 중요하다.
반면 함수형 프로그래밍에서는 기존 변수의 값을 바꾸는 대입은 금지되며, 만약 대입이 필요하다면 기존 변수를 사용하지 말고 새로운 변수를 만들어야 한다. 무엇보다 함수형 코드는 명령형이나 OOP 코드에 비해 더 간결하고 예상 가능하며 테스트가 쉽다.
하스켈(Haskell)이나 스칼라(Scala)처럼 함수형 프로그래밍을 염두에 두고 설계된 언어도 있지만, C++ 역시 언어의 여러 기능을 활용해 함수형 코드 작성이 가능하다는 점을 이 책을 통해 배우게 될 것이다.
('지은이의 말' 중에서)

C++은 대표적인 객체 지향 언어이므로 함수형 프로그래밍과의 조합이 다소 어색해 보이는 게 사실이다. 그렇지만 C++이 어떤 언어인가? C++은 못하는 게 없는 전지전능한(!) 언어이다. C++의 풍부한 기능을 활용하면 함수형 프로그래밍의 특징인 일급함수, 불변객체, 맵/필터/폴드 등도 큰 어려움 없이 구현할 수 있다.
이 책은 모던 C++을 비롯한 C++의 여러 기능을 사용해 함수형 프로그램을 개발하는 방법을 설명한다. 그리 길지 않은 예제 코드를 곁들여 설명하므로 따라가기 수월하며, 함수형 프로그래밍을 궁금해하는 C++ 개발자들이 흥미를 가질 내용이 가득하다.
C++과 함수형 프로그래밍을 본격적으로 다룬 책은 이 책이 처음이 아닐까 생각한다. 몇 가지 약점이 있지만 가벼운 마음으로 따라가며 알고 있던 내용은 확실히 다지고, 몰랐던 개념이나 함수 사용법 등을 새로 익히다 보면 함수형 프로그래밍의 기본 개념을 잡는데 충분할 것이다.
파이썬, GO, 러스트까지 점점 설 자리가 줄어들어 외롭고, 비주얼 스튜디오 만큼 잦은 버전업으로 부담은 커져가는 C++ 개발자들이 이 책을 통해 잠시나마 괴로운 현실을 잊고 새로운 흥미를 느끼길 기대한다.
('옮긴이의 말' 중에서)

저자소개

위스누 앤거로(Wisnu Anggoro) [저] 신작알림 SMS신청 작가DB보기
생년월일 -
출생지 -
출간도서 1종
판매수 14권

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

펼쳐보기
생년월일 -
출생지 -
출간도서 0종
판매수 0권

스마일게이트, 엔씨소프트 등에서 게임 플랫폼을 개발했다. C++, 얼랭(Erlang), 파이썬, Go를 좋아하며, 오픈소스 기여와 스택 오버플로 활동을 틈틈이 하고 있다. [크로스 플랫폼 개발을 위한 C# 7과 닷넷 코어 2.0](에이콘, 2018)을 번역했다.

이 상품의 시리즈

acorn+PACKT 시리즈(총 350권 / 현재구매 가능도서 326권)

펼쳐보기

리뷰

0.0 (총 0건)

기대평

작성시 유의사항

평점
0/200자
등록하기

기대평

0.0

교환/환불

교환/환불 방법

‘마이페이지 > 취소/반품/교환/환불’ 에서 신청함, 1:1 문의 게시판 또는 고객센터(1577-2555) 이용 가능

교환/환불 가능 기간

고객변심은 출고완료 다음날부터 14일 까지만 교환/환불이 가능함

교환/환불 비용

고객변심 또는 구매착오의 경우에만 2,500원 택배비를 고객님이 부담함

교환/환불 불가사유

반품접수 없이 반송하거나, 우편으로 보낼 경우 상품 확인이 어려워 환불이 불가할 수 있음
배송된 상품의 분실, 상품포장이 훼손된 경우, 비닐랩핑된 상품의 비닐 개봉시 교환/반품이 불가능함

소비자 피해보상

소비자 피해보상의 분쟁처리 등에 관한 사항은 소비자분쟁해결기준(공정거래위원회 고시)에 따라 비해 보상 받을 수 있음
교환/반품/보증조건 및 품질보증 기준은 소비자기본법에 따른 소비자 분쟁 해결 기준에 따라 피해를 보상 받을 수 있음

기타

도매상 및 제작사 사정에 따라 품절/절판 등의 사유로 주문이 취소될 수 있음(이 경우 인터파크도서에서 고객님께 별도로 연락하여 고지함)

배송안내

  • 인터파크 도서 상품은 택배로 배송되며, 출고완료 1~2일내 상품을 받아 보실 수 있습니다

  • 출고가능 시간이 서로 다른 상품을 함께 주문할 경우 출고가능 시간이 가장 긴 상품을 기준으로 배송됩니다.

  • 군부대, 교도소 등 특정기관은 우체국 택배만 배송가능하여, 인터파크 외 타업체 배송상품인 경우 발송되지 않을 수 있습니다.

  • 배송비

도서(중고도서 포함) 구매

2,000원 (1만원이상 구매 시 무료배송)

음반/DVD/잡지/만화 구매

2,000원 (2만원이상 구매 시 무료배송)

도서와 음반/DVD/잡지/만화/
중고직배송상품을 함께 구매

2,000원 (1만원이상 구매 시 무료배송)

업체직접배송상품 구매

업체별 상이한 배송비 적용