1. 광고배너
  2. 광고배너
/ 이전버튼 다음버튼
2
미리보기

고성능을 위한 언어 C++
저자 : 빅터세르외 ㅣ 출판사 : 에이콘출판 ㅣ 역자 : 최준

2020.01.31 ㅣ 456p ㅣ ISBN-13 : 9791161753911

정가35,000
판매가34,650(1% 할인)
적립금 700원 (2%)
배송일정 나우드림 가능
주문 수량 변경시 안내 배송안내
쿠폰 및 결제혜택 확인하기

크기 기타 규격
제품구성 단행본
이용약관 청약철회
국내도서 > 컴퓨터 > 컴퓨터언어 > C/C++/TURB...
누구나 C++를 익히고 나면, 원하는 프로그램을 어떻게 만들지 고민하게 된다. 하지만 프로그래머라면 만들고자 하는 기능이 무엇이든지 간에 이 책에서 제시하는 더 빠르고 가벼운 프로그램 설계 방법을 항상 고려하는 것이 좋다. 성능의 여러 측면을 C++ 언어로 설명한 이론과 예제는 더 좋은 프로그램을 제작하는 데 유용한 배경지식이 될 것이다.
펼쳐보기

[목 차]

1장. C++의 간단한 소개
__C++의 사용 이유
____비용이 들지 않는 추상화
____이식성
____견고성
____C++의 현재
__이 책의 목표
____독자에게 기대하는 지식
__다른 언어와 C++의 비교
____언어의 성능 경쟁
____성능과 관련 없는 C++ 언어의 기능
____객체 소유와 C++의 가비지 컬렉션
____C++ 참조를 사용한 널 객체 예방
____C++의 단점
__클래스 인터페이스와 예외 처리
____엄격한 클래스 인터페이스
____오류 처리와 자원 관리
__이 책에서 사용한 라이브러리
__요약

2장. 최신 C++ 개념
__auto 키워드를 사용한 자동 타입 추론
____함수 서명에서 auto 사용
____변수에서 auto 사용
__람다 함수
____C++ 람다 함수의 기본 구문
____캡처 블록
____람다와 std::function
____다형성 람다
__포인터에 대한 상수 전파
__이동 의미론 설명
____복사 생성, 교환, 이동
____자원의 획득과 3의 법칙
____이동 의미론 소개
____명명된 변수와 오른쪽 값
____기본 이동 의미론과 영의 법칙
__std::optional로 옵션 값 표현
____옵션 반환값
____옵션 멤버 변수
____정렬과 std::optional의 비교
__동적인 값을 std::any로 표현
____std::any의 성능
__요약

3장. 성능 측정
__점근적 복잡도와 빅 O 표기법
____증가율
____분할 상환 시간 복잡도
__측정 대상
____성능의 속성
____성능 테스트: 모범 사례
__코드의 이해와 핵심 지점
____프로파일러
__요약

4장. 데이터 구조
__컴퓨터 메모리의 속성
__STL 컨테이너
____시퀀스 컨테이너
____연관 컨테이너
____정렬된 집합과 맵
____비정렬 집합과 맵
____컨테이너 어댑터
__평행 배열
__요약

5장. 반복자
__반복자 개념
____반복자 분류
____포인터와 유사한 문법
____생성기로서의 반복자
____반복자 특성
____실용적인 예제: 범위 내의 부동소수점 포인트 값 반복 연산
__요약

6장. STL 알고리즘
__블록 구성을 위한 STL 알고리즘
____STL 알고리즘의 개념
____STL 알고리즘과 직접 만든 for 반복문의 비교
__STL과 범위 라이브러리의 미래
____STL 반복자의 제약 사항
____범위 라이브러리 소개
____액션, 뷰, 알고리즘
__요약

7장. 메모리 관리
__컴퓨터 메모리
____가상 주소 공간
____메모리 페이지
____스레싱
__프로세스 메모리
____스택 메모리
____힙 메모리
__메모리의 객체
____객체의 생성과 해제
____메모리 배치
____패딩
__메모리 소유권
____암시적 자원 관리
____컨테이너
____스마트 포인터
__작은 크기를 사용한 최적화
__사용자 정의 메모리 관리
____아레나 만들기
____사용자 정의 메모리 할당자
__요약

8장. 메타프로그래밍과 컴파일 시 평가
__템플릿 메타프로그래밍 소개
____템플릿 파라미터로 정수 사용
____컴파일러가 템플릿 함수를 처리하는 방법
____컴파일 시에 오류를 트리거하는 static_assert 사용
__타입 특성
____타입 특성 분류
____타입 특성 사용
____decltype을 사용한 변수 타입 가져오기
____std::enable_if_t를 사용해 타입에 따른 조건적 함수 활성화
____std::is_detected로 클래스 멤버 들여다보기
__constexpr 키워드
____런타임 구문의 constexpr 함수
____std::integral_constant를 사용한 컴파일 시 처리 과정의 검증
____if constexpr 구문
__다원화 컨테이너
____정적인 크기의 다원화 컨테이너
____동적 크기의 혼합 컨테이너
__std::variant
____variant에 접근
____variant의 다원화 컨테이너
____variant 컨테이너의 값에 접근
____std::get 전역 함수
__메타프로그래밍 실전 예제
____사례 1: 리플렉션
____전역 함수의 조건적 오버로딩
____사례 2: 안전한 포괄적 형 변환 함수 작성
____사례 3: 컴파일 시의 해시 문자열
__요약

9장. 프록시 객체와 지연 평가
__지연 평가와 프록시 객체의 소개
____지연 평가와 선행 평가의 비교
__프록시 객체
____프록시를 사용한 문자열 합치기 비교
____프록시 구현
____r-value 수정자
____합쳐진 프록시 할당
__거리 비교 시 제곱 계산의 보류
____간단한 2차원 지점 클래스
____수학적 배경
____DistProxy 객체 구현
____더 유용하도록 DistProxy 확장
____DistProxy를 사용한 거리 비교
____DistProxy로 거리 계산
____성능 평가
__연산자 오버로딩과 프록시 객체 생성
____확장 메서드로서의 파이프 연산자
____중위 연산자
____더 읽을거리
__요약

10장. 동시성
__동시성의 기본
__동시 프로그래밍이 어려운 이유
__동시성과 병렬성
____시분할
____공유 메모리
____데이터 경합
____뮤텍스
____교착 상태
____동기 작업과 비동기 작업
__C++ 동시 프로그래밍
____스레드 지원 라이브러리
____C++의 아토믹 지원
____C++ 메모리 모델
__잠금 없는 프로그래밍
____잠금 없는 큐의 예
__성능 가이드
____경합 방지
____대기 동작 방지
____스레드와 CPU 코어의 개수
____스레드 우선순위
____스레드 선호
____거짓 공유
__요약


11장. 병렬 STL
__병렬 처리의 중요성
__병렬 알고리즘
____병렬 std::transform() 구현
____병렬 std::count_if 구현
____병렬 std::copy_if 구현
__병렬 STL
____실행 정책
____병렬 버전으로 알고리즘 수정
____인덱스 기반의 for 반복문 병렬화
__GPU에서 STL 알고리즘 실행
____GPU API와 병렬 작업
____STL 알고리즘과 GPU
__부스트 컴퓨트
____부스트 컴퓨트 기본 개념
____OpenCL
____부스트 컴퓨트 초기화
____부스트 컴퓨트에 간단한 transform-reduce 알고리즘 전달
____부스트 컴퓨트에서 조건자 사용
____부스터 컴퓨트에서 사용자 정의 커널 사용
__요약
펼쳐보기
★ 이 책에서 다루는 내용 ★

■ 자신이 만든 코드를 향상시킬 수 있는 흥미로운 도구 사용법
■ 코드를 최적화하기 위한 성능 병목지점을 찾아내는 방법
■ GPU 연산을 활용하는 애플리케이션 개발
■ 동시 프로그래밍의 장점 활용
■ 예외 처리를 통해 애플리케이션 오류에서 보호하는 코드 제작
■ STL 컨테이너와 알고리즘의 효율적인 활용
■ 부스트 컨테이너 확장 도구
■ 사용자 정의 메모리 할당자를 사용한 효율적인 메모리 관리

★ 이 책의 대상 독자 ★

독자가 C++와 컴퓨터 구조의 기초 지식과 자신의 기술을 향상시키는 데 타고난 흥미를 갖고 있다고 기대한다. 바라건대 이 책을 마치고 나면 성능, 구조 측면에서 자신의 C++ 애플리케이션을 향상시킬 수 있는 몇 가지 방법을 얻을 수 있을 것이다. “아, 그렇구나!”’라고 생각하는 순간을 갖기 바란다.

★ 이 책의 구성 ★

1장, ‘C++의 간단한 소개’에서는 무비용 추상화, 값 의미 체계, 상수 수정, 명시적 소유, 오류 처리 등과 같은 일부 중요한 특징을 소개한다. C++의 단점도 알아본다.
2장, ‘최신 C++ 개념’에서는 auto를 사용한 자동 타입 추정과 람다 함수, 이동 의미 체계, std::optional, std::any 등을 개괄적으로 다룬다.
3장, ‘성능 측정’에서는 점근적 복합성, 빅 O 표시법, 실용적 성능 테스트와 코드를 프로파일해 문제 지점을 찾는 방법을 설명한다.
4장, ‘데이터 구조’에서는 데이터에 빠르게 접근할 수 있도록 구성하는 작업의 중요성을 보여준다. std::vector, std::list, std::unordered_map, std::priority_queue와 같은 STL 컨테이너를 소개하고, 마지막으로 평행 배열의 반복 연산 방법을 알아본다.
5장, ‘반복자’에서는 반복 연산자의 개념을 깊이 있게 살펴보고, 반복 연산자가 단순히 컨테이너에 객체를 참조하는 것을 뛰어 넘는 방법을 보여준다.
6장, ‘STL 알고리즘’에서는 STL 알고리즘의 명백한 장점과 아주 명백하지는 않은 장점을 설명한다. 또한 STL 알고리즘의 한계와 새로운 Ranges 라이브러리로 이러한 한계를 극복하는 방법을 살펴본다.
7장, ‘메모리 관리’에서는 안전하고 효율적인 메모리 관리법을 집중적으로 다룬다. 메모리 소유권, RAII, 스마트 포인터, 스택 메모리, 동적 메모리, 사용자 메모리 할당 등을 다룬다.
8장, ‘메타프로그래밍과 컴파일 시 평가’에서는 constexpr, 다원화 컨테이너, type_traits, std::enable_if, std::is_detected와 같은 메타프로그래밍 개념을 알아본다. 또한 리플렉션과 같은 실용적인 메타프로그래밍 활용 사례도 제공한다.
9장, ‘프록시 객체와 지연 평가’에서는 프록시 객체가 깔끔한 구문을 유지하면서 아래로는 최적화를 수행하는 데 쓰이는 프록시 객체를 알아본다. 더불어 연산자 오버로딩의 창의적인 활용도 일부 알아본다.
10장, ‘동시성’에서는 병렬 실행과 공유 메모리, 데이터 경합, 교착 상태 등 동시 처리 프로그래밍의 기본을 다룬다. 또한 C++의 스레드 지원 라이브러리, 아토믹 라이브러리, C++ 메모리 모델도 소개한다.
11장, ‘병렬 STL’에서는 병렬 알고리즘 작성의 복합성을 보여준다. STL과 부스트 연산용 병렬 확장 기능을 사용하는 병렬 처리 STL 알고리즘을 활용하는 방법을 알아본다.

★ 옮긴이의 말 ★

현장의 여러 전문가 중 C++가 새로운 기술이고, 최근 경향에 맞는 주제라고 생각할 사람은 극히 일부일 것이다. 반면에 우리가 접하는 IT 세상에서 C++만큼 긴 시간 다뤄진 주제가 몇 개나 있을지 반문해볼 필요도 있다. C++는 그만큼 오랫동안 곁에 존재했고, 기술이 획기적으로 변화하고 발전하는 과정에서도 살아남았으며, 여전히 사랑받고 있다.
이미 C++에 익숙한 독자는 잠시 컴퓨터를 끄고, 편안한 의자에 앉아 이 책을 읽으면서 그동안 성능적인 측면에서 간과했던 부분이 없는지 살펴보길 권하고 싶다. 새로운 도전이라는 긴 여정을 앞둔 독자라면 책의 어느 한 부분에 얽매이지 말라고 얘기하고 싶다. 예를 들어 어떤 사람에게 객체나 오브젝트를 말하면 여러 속성을 가진 물건을 떠올릴 수 있다. 프로그램을 처음 배운 이는 클래스를 떠올리기도 하고, 숙련된 개발자 중에는 직접 만든 라이브러리를 머리에 떠올릴 수도 있다. 이렇게 용어는 각자 다른 형태로 관념이 된다. 처음부터 어떤 용어가 실제로 의미하는 모습 그대로 완벽하게 소화하기 어렵지만, 여러 번 실습하고 결과를 전체적으로 보는 과정을 지나 추상적인 단어도 결국 설명이 필요 없는 개념이 된다.
이 책은 번역서다. 원문을 옮기면서 저자가 전달하려는 의미를 그대로 전하는 것은 기본이다. 그러나 모국어로 다른 사람의 언어를 번역하면서 단어 선정에 하나의 기준이 더 필요했고, 의미를 가장 잘 전달하는 단어를 골라야 했다. 표준어라 할지라도 이해를 더 어렵게 만들거나 의미가 달라질 경우 가능하면 실제로 사용되는 단어나 의미를 전하기 쉬운 단어를 대신 선택했다.
하지만 쏟아져 들어오는 외국어에 대한 우리말 단어 선택은 내 능력의 부족에서 오는 안타까움을 넘어선다. 예를 들어 Supervisor는 이미 ‘슈퍼바이저, 수퍼바이저, 감독, 관리자, 감독자, 감리자, 감시자’ 등으로 여러 분야에서 번역돼 통용되고 있으며, 실제로 사용할 한 단어의 선택에 충분한 일관성과 원칙을 찾는 것은 더욱더 어려운 일이 됐다. 이렇게 실제 의미를 알면서도 적당한 우리말 하나를 선택하는 어려움은 장마다 반복됐다. 표준 용어라도 전문가가 쓰지 않는 단어보다는 가급적 실제로 사용되는 용어를 선택하는 것이 독자에게 도움이 될 것이라 생각했다. 결과적으로 최선이 아닌 표현이 있더라도 이런 현실을 감안한 독자의 양해를 구한다.
펼쳐보기
빅터 세르
토플로바(Toppluva)의 핵심 개발자로, 모바일 하드웨어를 대상으로 최적화된 그래픽 엔진을 담당하고 있다.
C++를 사용한 실시간 그래픽, 음향, 구조적 설계 등을 위주로 전문적인 경험을 10년간 쌓았다. 경력을 기반으로 Mentice, Raysearch Laboratories에서 의료용 시각화 소프트웨어를 개발했고, Propellerhead 소프트웨어에서 실시간 오디오 애플리케이션을 개발했다. 린셰핑대학교(Link?ping University)에서 미디어 과학 분야의 석사 학위를 받았다.
옮긴이 최준
기계 공학을 전공했던 학창 시절에 누구에게나 매력덩어리였던 컴퓨터로 기계의 데이터를 처리하고 동작을 제어하는 과정에서 더욱 흥미를 갖게 된 정보기술 분야에 뛰어들었다. 졸업하고 한동안 대기업 전산실에서 근무하다가 답답한 공간을 벗어나 더 넓은 세상에 도전할 기회가 생겼고, 영어가 익숙해질 수밖에 없는 부서에 들어가 본격적인 엔지니어 경력을 시작했다. 2001년부터 마이크로소프트 한국, 싱가폴 지사에서 근무하며 약 10년간 아시아 지역 200여 대기업의 현장에서 기술 지원을 수행했고, 다양한 기업용 IT 시스템의 문제를 이해하고 해결 방안을 찾는 소중한 경험을 쌓았다. 현재 캐나다에 IT 컨설팅 회사를 설립하고, 기업 고객에게 클라우드 서비스 컨설팅을 하고 있다.
펼쳐보기

독자서평 쓰기 로그인을 하시면 독자서평을 쓰실 수 있습니다.

독자서평 쓰기 로그인을 하시면 독자서평을 쓰실 수 있습니다.
도서평점
내용
등록하기
0/2000자
교환/반품 방법
  • 마이페이지 > 주문관리 > 주문/배송조회 > 주문조회 후  [1:1상담신청]  또는 고객센터 (1544-9020)
  • ※ 오픈마켓, 해외배송 주문상품 문의 시 [1:1상담신청] 또는 고객센터 (1544-9020)
교환/반품 가능기간
  • 변심반품의 경우 수령 후 7일 이내
  • 상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내
교환/반품 비용
  • 단순변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
  • 해외직배송 도서 구매 후 단순변심에 의한 취소 및 반품 시 도서판매가의 20% 수수료 부과
교환/반품 불가사유
  • 소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
  • 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우 예) 만화, 잡지, 수험서 및 문제집류
  • 복제가 가능한 상품 등의 포장을 훼손한 경우 예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
  • 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우
  • 디지털 컨텐츠인 eBook, 오디오북 등을 1회 이상 다운로드를 받았을 경우
  • 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
  • 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우
상품 품절
  • 공급사(출판사) 재고 사정에 의해 품절/지연될 수 있으며, 품절 시 관련 사항에 대해서는 이메일과 문자로 안내드리겠습니다.
소비자 피해보상
환불지연에 따른 배상
  • 상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은 소비자분쟁 해결 기준 (공정거래위원회 고시)에 준하여 처리됨
  • 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의 소비자 보호에 관한 법률에 따라 처리함

이 분야의 베스트

더보기 >

    이 분야의 신간

    더보기 >
      맨위로가기

      영풍문고 로고

      • 회사명 : (주)영풍문고
      • 대표이사 : 김경환
      • 소재지 : 서울특별시 종로구 청계천로 41 (우)03188
      • 사업자 등록번호 : 773-86-01800 ㅣ 통신판매업 신고번호 : 2023-서울종로-0130 [ 사업자정보확인 ]
      • 개인정보관리 책임자 : 조순제 ㅣ customer@ypbooks.co.kr ㅣ 대량주문 : webmaster@ypbooks.co.kr
      COPYRIGHT © YOUNGPOONG BOOKSTORE INC. ALL RIGHTS RESERVED.
      영풍문고 네이버블로그 영풍문고 인스타그램
      맨위로가기