메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

전문가를 위한 C++(개정4판)

C++17, 제네릭 람다, STL, 템플릿, 디자인 패턴, 객체지향의 원리를 익히는 확실한 방법

한빛미디어

번역서

판매중

초급 초중급 중급 중고급 고급
4.9점 (14명)
좋아요 : 13

전문가 수준 C++ 프로그래머와 그저 문법을 아는 C++ 프로그래머 

그 차이를 만드는 C++17 최고의 실전 가이드! 

원서 4번째 개정과 완전히 새로운 번역!

C++는 마스터하기 어렵기로 악명 높지만 풍부한 기능 덕분에 게임이나 상용 소프트웨어 애플리케이션을 개발하는 대표 언어로 자리매김했다. 숙련된 C++ 프로그래머조차 잘 모르는 고급 기능도 많이 있는데, C++17이 나온 지금이야말로 C++의 모든 기능을 살펴볼 절호의 기회다. 『전문가를 위한 C++(개정4판)』은 새로 추가된 기능과 관련 도구를 비롯해 C++에 대한 모든 내용을 코드와 솔루션 위주로 소개한다. 이 책은 실전 프로그래밍에 적용할 수 있는 현실적인 기법을 다양하게 소개하며 C++를 더 깊이 이해하려는 프로그래머에게 적합하다.

 

[이 책의 내용]

  • C++의 방대한 기능을 최대한 활용하여 효과적인 솔루션을 개발할 수 있도록 C ++ 사고방식을 제시한다.
  • 어설프게 알고 있거나 실수하기 쉬운 부분을 바로 잡고 효율과 성능을 높이는 다양한 팁과 기법, 우회전략을 소개한다.
  • 당장 프로젝트에서 마주치고 적용할 수 있는 현실적인 문제와 프로그램 예제를 소개한다.
  • 구조적 바인딩, 중첩 네임스페이스, constexpr if를 비롯한 C++17부터 새로 추가된 기능을 소개한다.
  • string_view, optional, 병렬 알고리즘, 파일시스템 API 등 C++17부터 새로워진 표준 라이브러리의 주요 기능을 심도 있게 살펴본다.

 

상세이미지_700.jpg

 

저자

마크 그레고리

벨기에 출신 소프트웨어 아키텍트로서 루벤 대학교에서 컴퓨터 과학과 인공지능 분야의 석사 과정을 우수한 성적으로 졸업했다. 소프트웨어 컨설팅 회사인 오디나 벨지움(Ordina Belgium)에서 컨설턴트로 근무하면서 지멘스와 노키아 지멘스 네트웍스에서 통신 시스템 운영자를 위한 솔라리스 기반 2G 및 3G 관련 소프트웨어 업무를 담당했다. 이 과정에서 남미, 미국, 유럽, 중동, 아프리카, 아시아를 비롯한 전 세계 출신의 개발자와 협업하는 경험을 했다. 현재 3D 형상 검사를 위한 정밀 광학 장비와 메트롤로지 솔루션을 공급하는 니콘 메트롤로지(www.nikonmetrology.com)에서 소프트웨어 아키텍트로 근무한다.

전문 분야는 C/C++이며 마이크로소프트 VC++와 MFC 프레임워크 경험이 풍부하다. 이와 관련하여 윈도우와 리눅스 플랫폼에서 하루 24시간, 7일 동안 구동하는 KNX/EIB 홈오토메이션 소프트웨어를 C++로 개발한 경험이 있다. C/C++ 외에도 C#과 PHP를 이용하여 웹 페이지를 제작하는 것을 즐긴다. VC++에 대한 전문성을 인정받아 2007년 4월부터 현재까지 매년 마이크로소프트 MVP로 선정됐다. 벨기에 C++ 사용자 그룹(www.becpp.org) 창립자, 『C++ Standard Library Quick Reference』(Apress) 공저자, 여러 출판사의 기술 편집자, 코드구루(CodeGuru) 포럼의 멤버(아이디 Marc G)이기도 하다. 개인 블로그(www.nuonsoft.com/blog)도 운영하고 있으며, 여행과 맛집 탐방을 즐긴다.

 

 

역자

남기혁

고려대학교 컴퓨터학과에서 학부와 석사 과정을 마친 후 한국전자통신연구원에서 선임 연구원으로 재직하고 있으며, ㈜프리스티에서 네트워크 제어 및 검증 소프트웨어 개발 업무를 맡고 있다. 한빛미디어에서 출간한 『Make: 센서』, 『메이커 매뉴얼』, 『이펙티브 디버깅』, 에이콘출판사에서 출간한 『GWT 구글 웹 툴킷』(2008)』 , 『해킹 초보를 위한 USB 공격과 방어』(2011) , 『자바 7의 새로운 기능』(2013) , 『iOS 해킹과 보안 가이드』(2014) , 『Neutron 오픈스택 네트워킹』(2015) , 『실전 IoT 네트워크 프로그래밍』(2015), 『애플 워치 WatchKit 프로그래밍』(2015), 『현대 네트워크 기초 이론』(2016), 『도커 컨테이너』(2017), 『스마트 IoT 프로젝트』(2017), 『파이썬으로 배우는 인공지능』(2017), 『메이커를 위한 실전 모터 가이드』(2018), 『트러블 슈팅 도커』(2018), 『Go 마스터하기』(2018), 『자율주행 자동차 만들기』(2018) 등을 번역했다.

[Part 1 전문가를 향한 C++의 첫걸음]


CHAPTER 1 C++와 표준 라이브러리 초단기 속성 코스

_1.1 C++의 기초

_1.2 C++의 고급 기능

_1.3 C++의 객체지향 언어 특성

_1.4 유니폼 초기화

_1.5 표준 라이브러리

_1.6 첫 C++ 프로그램

_1.7 정리

 

CHAPTER 2 스트링과 스트링 뷰 다루기

_2.1 동적 스트링

_2.2 정리

 

CHAPTER 3 코딩 스타일

_3.1 코딩 스타일의 중요성

_3.2 코드 문서화

_3.3 코드 분할

_3.4 명명 규칙

_3.5 언어의 기능에 스타일 적용하기

_3.6 포매팅

_3.7 스타일과 관련하여 해결할 문제

_3.8 정리

 

[Part 2 전문가답게 C++ 소프트웨어 디자인하기]


CHAPTER 4 전문가다운 C++ 프로그램 디자인

_4.1 프로그램 디자인의 정의

_4.2 프로그램 디자인의 중요성

_4.3 C++에 적합한 디자인 방법

_4.4 C++ 디자인에 관련된 두 가지 원칙

_4.5 코드 재사용

_4.6 체스 프로그램 디자인

_4.7 요약

 

CHAPTER 5 객체지향 디자인

_5.1 절차형 사고방식

_5.2 객체지향 철학

_5.3 객체의 관점에서 바라보기

_5.4 객체 관계

_5.5 추상화

_5.6 요약

 

CHAPTER 6 재사용을 고려한 디자인

_6.1 재사용 철학

_6.2 코드를 재사용할 수 있도록 디자인하는 방법

_6.3 요약

 

[Part 3 전문가답게 C++ 코딩하기]


CHAPTER 7 메모리 관리

_7.1 동적 메모리 다루기

_7.2 배열과 포인터의 두 얼굴

_7.3 로우레벨 메모리 연산

_7.4 스마트 포인터

_7.5 흔히 발생하는 메모리 문제

_7.6 요약

 

CHAPTER 8 클래스와 객체 숙달하기

_8.1 스프레드시트 예제

_8.2 클래스 작성 방법

_8.3 객체의 라이프 사이클

_8.4 요약

 

CHAPTER 9 클래스와 객체 마스터하기

_9.1 friend

_9.2 객체에 동적 메모리 할당하기

_9.3 메서드의 종류

_9.4 데이터 멤버의 종류

_9.5 중첩 클래스

_9.6 클래스에 열거 타입 정의하기

_9.7 연산자 오버로딩

_9.8 안정된 인터페이스 만들기

_9.9 요약

 

CHAPTER 10 상속 활용하기

_10.1 상속을 이용한 클래스 구현

_10.2 코드 재사용을 위한 상속

_10.3 부모를 존중하라

_10.4 다형성을 위한 상속

_10.5 다중 상속

_10.6 상속에 관련된 미묘하면서 흥미로운 문제들

_10.7 요약

 

CHAPTER 11 C++의 까다롭고 유별난 부분

_11.1 레퍼런스

_11.2 키워드 혼동

_11.3 타입과 캐스팅

_11.4 스코프

_11.5 어트리뷰트

_11.6 사용자 정의 리터럴

_11.7 헤더 파일

_11.8 C 유틸리티

_11.9 요약

 

CHAPTER 12 템플릿으로 제네릭 코드 만들기

_12.1 템플릿 소개

_12.2 클래스 템플릿

_12.3 함수 템플릿

_12.4 변수 템플릿

_12.5 요약

 

CHAPTER 13 C++ I/O 완전 분석

_13.1 스트림 사용법

_13.2 스트링 스트림

_13.3 파일 스트림

_13.4 양방향 I/O

_13.5 요약

 

CHAPTER 14 에러 처리하기

_14.1 에러와 예외

_14.2 익셉션 처리 과정

_14.3 익셉션과 다형성

_14.4 익셉션 다시 던지기

_14.5 스택 풀기와 청소

_14.6 익셉션 처리 과정에서 흔히 발생하는 문제

_14.7 모두 합치기

_14.8 요약

 

CHAPTER 15 C++ 연산자 오버로딩하기

_15.1 연산자 오버로딩 개요

_15.2 산술 연산자 오버로딩하기

_15.3 비트 연산자와 논리 연산자 오버로딩하기

_15.4 스트림 입출력 연산자 오버로딩하기

_15.5 인덱스 연산자 오버로딩하기

_15.6 함수 호출 연산자 오버로딩하기

_15.7 역참조 연산자 오버로딩하기

_15.8 변환 연산자 구현하기

_15.9 메모리 할당과 해제 연산자 오버로딩하기

_15.10 요약

 

CHAPTER 16 C++ 표준 라이브러리 둘러보기

_16.1 코드 작성법

_16.2 C++ 표준 라이브러리 둘러보기

_16.3 요약

 

CHAPTER 17 컨테이너와 반복자 살펴보기

_17.1 컨테이너 개요

_17.2 순차 컨테이너

_17.3 컨테이너 어댑터

_17.4 정렬 연관 컨테이너

_17.5 비정렬 연관 컨테이너(해시 테이블)

_17.6 기타 컨테이너

_17.7 요약

 

CHAPTER 18 표준 라이브러리 알고리즘 마스터하기

_18.1 알고리즘 개요

_18.2 std::function

_18.3 람다 표현식

_18.4 함수 객체

_18.5 표준 라이브러리 알고리즘 심층 분석

_18.6 알고리즘 예제: 선거인 명부 검사

_18.7 요약

 

CHAPTER 19 스트링 현지화와 정규 표현식

_19.1 현지화

_19.2 정규 표현식

_19.3 요약

 

CHAPTER 20 여러 가지 유틸리티 라이브러리

_20.1 ratio 라이브러리

_20.2 chrono 라이브러리

_20.3 무작위수 생성

_20.4 optional

_20.5 variant

_20.6 any

_20.7 tuple

_20.8 파일시스템 지원 라이브러리

_20.9 요약

 

[Part 4 C++ 고급 기능 마스터하기]


CHAPTER 21 표준 라이브러리 커스터마이즈 및 확장

_21.1 할당자

_21.2 스트림 반복자

_21.3 반복자 어댑터

_21.4 표준 라이브러리 확장하기

_21.5 요약

 

CHAPTER 22 고급 템플릿

_22.1 템플릿 매개변수에 대한 심화 학습

_22.2 클래스 템플릿 부분 특수화

_22.3 오버로딩으로 함수 템플릿 부분 특수화 흉내내기

_22.4 템플릿 재귀

_22.5 가변 인수 템플릿

_22.6 메타프로그래밍

_22.7 요약

 

CHAPTER 23 C++ 멀티스레드 프로그래밍

_23.1 들어가며

_23.2 스레드

_23.3 아토믹 연산 라이브러리

_23.4 상호 배제

_23.5 조건 변수

_23.6 promise와 future

_23.7 멀티스레드 Logger 클래스 예제

_23.8 스레드 풀

_23.9 바람직한 스레드 디자인과 구현을 위한 가이드라인

_23.10 요약

 

[Part 5 C++ 소프트웨어 공학]


CHAPTER 24 소프트웨어 공학 기법

_24.1 프로세스의 필요성

_24.2 소프트웨어 라이프 사이클 모델

_24.3 소프트웨어 공학 방법론

_24.4 나만의 프로세스와 방법론 만들기

_24.5 소스 코드 관리

_24.6 요약

 

CHAPTER 25 효율적인 C++ 코드 작성법

_25.1 성능과 효율성에 대하여

_25.2 언어 차원의 효율성

_25.3 디자인 차원의 효율성

_25.4 프로파일링

_25.5 요약

 

CHAPTER 26 테스트 숙달하기

_26.1 품질 관리

_26.2 단위 테스트

_26.3 하이레벨 테스트

_26.4 성공적인 테스트를 위한 팁

_26.5 요약

 

CHAPTER 27 디버깅 완전 정복

_27.1 디버깅 기본 원칙

_27.2 버그 분류

_27.3 버그 방지

_27.4 버그 대비

_27.5 정적 어서션

_27.6 디버깅 테크닉

_27.7 요약

 

CHAPTER 28 디자인 기법과 프레임워크

_28.1 흔히 사용하지만 까먹기 쉬운 문법

_28.2 고급 기법

_28.3 객체지향 프레임워크

_28.4 요약

 

CHAPTER 29 디자인 패턴

_29.1 반복자 패턴

_29.2 싱글턴 패턴

_29.3 추상 팩토리 패턴

_29.4 프록시 패턴

_29.5 어댑터 패턴

_29.6 데코레이터 패턴

_29.7 책임 사슬 패턴

_29.8 옵저버 패턴

_29.9 요약

 

CHAPTER 30 크로스 플랫폼과 크로스 언어 애플리케이션 개발 방법

_30.1 크로스 플랫폼 개발

_30.2 크로스 언어 개발

_30.3 요약

 

[부록 A] C++ 면접 예상 질문 

[부록 B] 참고 문헌 

[부록 C] 표준 라이브러리 헤더 파일 

[부록 D] UML 기초 

  • 2018년 4월에 출간된 Professional C++ 4E의 번역서를 한빛미디어에서 <전문가를 위한 C++>로 발표했습니다.  저자는 마크 그레고리(Marc Gregoire)이며, 번역은 남기혁 님께서 맡아주셨습니다. 이 책을 번역해 주신 남기혁 님께 깊은 감사의 말씀을 전하고 싶습니다.

    <전문가를 위한 C++ 4E>은 기존 C++14 기준으로 작성된 <전문가를 위한 C++ 3E>에 현재 최신 버전인 C++17을 자연스럽게 녹여낸 작품입니다. C++17은 약 100여 가지의 새로운 기능이 도입되었습니다. 주요 변경 사항은 다음 링크에서 확인하세요.

    참고로 C++17의 다음 개정판은 C++20으로 2017년 7월에 시작했습니다. 다음에 추가될 내용도 흥미로운 요소가 많습니다.

    이 책에서 다루는 내용은?

    이 책에서는 C++ 고유의 특징과 소프트웨어 개발을 위한 다양한 기법을 습득할 수 있습니다. C++ 17에 새로 추가된 기능 소개를 비롯하여 다양한 프로그래밍 방법론과 추천하는 프로그래밍 스타일을 소개하고 있습니다. 뿐만 아니라, 객체지향 디자인 방식을 이해할 수 있으며, 최신 디버깅 기술도 학습할 수 있습니다.

    <전문가를 위한 C++>는 모두 5개의 장으로 구성되어 있습니다.

    1장의 제목은 '전문가를 향한 C++ 첫걸음'으로 C++의 기본 소양을 다룹니다. 지면 관계로 말미암아 이 책에서 C++의 개론서에서 다루는 기본적인 내용을 모두 다루지는 못하므로 C++의 이해가 부족한 독자는 개론서를 본 후, 정리하는 차원에서 보는 것을 추천합니다. 이 장에서 다루는 코딩 스타일 가이드는 꼭 한 번 읽고 정리했으면 하는 바람이 있습니다.

    2장은 '전문가답게 C++ 소프트웨어 디자인하기'입니다. 제목에서 볼 수 있듯이 프로그램 디자인에 대해 소개합니다. 코드를 재사용하도록 디자인해야 하는 이유와 방법을 소개하며, 코드의 구조화에 대한 팁과 인터페이스 디자인에 대한 원칙 등을 소개합니다.

    3장은 '전문가답게 C++ 코딩하기'입니다. 동적 메모리와 관련된 주제부터 클래스와 객체에 대한 내용, 코드 재사용성과 다형성을 포함한 활용 사례 등을 다룹니다. 그리고 템플릿을 이용한 제네릭 프로그래밍의 개념을 소개합니다.

    부지런히 봤는데, 리뷰를 마쳐야 할 시점에 여기까지 밖에 보지 못했습니다.  3장에서는 이외에도 I/O, 에러 처리, 표준 라이브러리, 정규 표현식 등을 소개하고 있습니다. 4장과 5장은 C++ 고급 기능와 소프트웨어 공학에 대해 다양한 관점에서 이야기를 진행합니다. 세부 목차를 보면 재미있는 주제가 많은데, 리뷰를 마치고 더 읽어보려 합니다.

    마치면서

    <전문가를 위한 C++>은 30 챕터와 4 부록으로 약 1,500페이지 분량으로 구성되어 있습니다. 예측할 수 있듯이, 이 책에서 다루는 내용은 방대합니다. C++에 입문하는 독자가 이 책을 보진 않겠지요? 입문서를 본 후, 이 책을 보시는 것을  추천합니다. <전문가를 위한 C++>은 C++에 대해 경험있는 개발자가 최신 스펙을 경험하고 학습하는데 도움을 줄 수 있을 것입니다. 

    Java와 유사하게 어느 시점에 C++의 발전 속도가 느리다고 느꼈었는데, 최근 Java와 같이 C++의 개선속도가 놀랍도록 빨라지고 있음을 체험할 수 있었습니다. 한동안 C++에 대해 경험하지 못했는데, 이 책을 통해 C++의 개선 사항에 대해 이해할 수 있었습니다.

    안타까운 점은 리뷰 기간이 짧아 이 책을 모두 보고 리뷰를 남기지 못해 아쉽습니다. 아직 <전문가를 위한 C+>의 전체 내용을 모두 읽어보진 못했지만, 천천히 시간을 두고 꾸준히 읽어볼 것입니다. 

  • 1. 읽게된 계기

       - 웹개발자이자 안드로이드를 조금 다룰줄 아는 개발자로써 늘 managed 언어만 다루었었는데, unmanaged 언어 하나쯤은 공부해보고 싶은 욕심이 있었습니다. 비전공 개발자로써 방통대를 다니며 C++언어를 조금 접해본게 전부이지만, 완전 기초부터 책을 보면 지루할것 같고, 조금은 난이도 높은 책으로 공부함으로써 조금은 도전적으로 공부를 해보고 싶은 욕구가 있었습니다.

    - 보통 IT 서적들 중에 '전문가를 위한 ㅇㅇㅇ' 시리즈들은 사실 보면 출판사도 각기 다다르지만, 기본적으로 기초 이상의 내용을 다루고 실무적이고 중급 이상의 내용을 포함하고 있습니다.

     

    2. 읽으면서

    - 책이 무척 두껍습니다.  개발자로 전향하면서 읽어본 'Professional ASP.NET'라는 2000여페이지가 넘는 책을 읽어본 이후로 가장 두꺼운 책이었습니다. 1500여페이지에 달합니다.

    - 총 5개 파트로 구성이 되어 있는데,  첫번째 파트는 '전문가를 향한 C++첫걸음' 단계로 기초 내용을 훓고 있습니다. 기초 문법과 코딩스타일을 다루고 있습니다. 기초적인 내용이고 C++이 아니더라도 프로그래밍에 경험이 있는 사람들은 충분히 읽을 수 있고, 도움이 될만한 내용들을 포함하고 있습니다. 

    - 두번째 파트는 코드 재사용, 객체지향 디자인에 관련한 내용이 포함되어 있으며, Java와 C#, Python을 주로 다루어본 저로써도 충분히 읽기에 어려움이 없었습니다. 

    - 세번째 파트는 본격적인 unmanged언어에 관련한 메모리 관리 기법을 다룹니다. 클래스와 객체를 본격적으로 여러가지 기법을통해 메모리를 효율적으로 사용하는 방법을 배우게 됩니다. 여기서 부터는 managed 언어에 익숙해져 있는 저로써는 조금씩 어려움에 봉착했습니다. 여러번 반복해서 공부해야 저의 것으로 만들 수 있을 것 같습니다. 

    - 네번째 파트와 다섯번째 파트는 아직 읽지 못했습니다. 네번째 파트는 'C++ 고급기능 마스터하기' 로 여러 고급기법고 멀티스레딩 프로그래밍에서 다루고 있습니다.  여기도 조금은 쉽지 않은 파트가 될 것 같습니다. 

    - 다섯번째 파트는 'C++소프트웨어 공학' 입니다. 여러 '소프트웨어 공학', '효율적인 C++코드 작성법' , 테스트, 디버깅, 디자인 기법등을 다루고 있습니다. 아직 읽어보지 못한 파트이지만 이부분은 충분히 읽는데 무리가 없을것 같습니다.

    - 세번째와 네번째 파트가 가장 고비네요, 한 번 공부하는 것은 아직 unmanaged언어에 경험이 적은 저로써는 부족한 듯합니다. 여러번 다시 공부가 필요할 것 같습니다.

     

    3. 소감

    - 난이도가 조금 있는 책이며, 한 번 읽어보는 것으로는 자신의 것으로 만들기 힘들며, 예제와 연습 프로젝트를 기획하여 응용프로그램을 만들며 적용해가면서 공부하면 무척 좋은 책이 되지 않을까 합니다.




  • 일단 책을 처음 접하고 크게 두번 놀랐는데, 

    책 가격에 한번 놀라고, 책 두께에 두번 놀란다.

    그만큼 책 내용은 이런저런 군더더기 내용없이 깔끔한 내용으로 채워졌음에도 두껍다.

    물론 방대한 책내용을 모두 습득할 수 있는지는 별개이다.

     

    만약 C++의 기본적인 내용을 다시금 상기코자 한다면 Chapter 1, Chapter 2를 먼저 읽어보길 권한다.

    목차를 훝어보고 흥미로운 주제부터 읽어보는게 쉽게 질리지 않아 Part 3. - Chapter 7. 메모리 관리부터 읽었다.

    'Part 3. 전문가 답게 C++ 코딩하기' 라는 파트명 답게 구성하는 챕터 하나하나 모두 시간을 들여서 읽게 한다.

     

    개인적으로는 'Chapter 14. 에러 처리하기' 챕터로 에러 처리에 대한 내용을 별도로 빼 설명하고

    'Part 5. C++ 소프트웨어 공학'-'Chapter 26. 테스트 숙달하기', 'Chapter 27. 디버깅 완전 정복' 과 같이 프로젝트 개발 프로세스와 디자인에 대한 내용을 함께 설명하고 있어 좋다.

     

    마지막으로 이 책을 읽어보고자 하는 분들이 두께에 지레 겁먹지 않았으면 좋겠다.

    두께만큼 읽을거리가 많은 책이다.

     

     

    IMG_4559.JPEG

     

     

  • 힘들게 공부한 만큼 얻는 것도 많은 언어가 C++이 아닐까 싶네요. 컴퓨터 내부에서 프로그램이 어떻게 돌아가는지 특히 메모리 관리 측면에서 많은 것은 스스로 하고 싶다면 C++이 괜찮은 선택입니다. C++ 기초플러스라는 책으로 C++을 처음 공부했는데 정말 힘들었습니다. 그 당시 나름 괜찮은 책이였지만 모든 것을 나열하는 식의 설명은 저를 지치게 만들기 충분했습니다. 책의 분량도 너무 많아 뒤쪽으로 갈수록 앞에 내용을 까먹게 되더군요.  이번에 본 '전문가를 위한 C++'도 물론 두꺼운 책이지만 구성은 정말 다릅니다. 제목처럼 정말 C++ 전문가를 만들기 위한 내용으로 가득합니다. C++ 기초부터 모든 것을 다루는 책이 아니라 C++17 최신 경향에 맞추어 실전 프로그래밍을 할 때 꼭 필요한 내용을 자세히 설명합니다. 이 책은 총 5개의 파트로 이루어져 있습니다. 

     

    C++ 기초를 모두 설명하진 않지만 파트1에서 어느 정도 입문과정을 다룹니다. 프로그래밍 경험이 있는 사람이라면 C++이 뭔지 파악할 수 있습니다.  

     

    파트2에서는 조금 이론적인 부분을 설명합니다. 어떻게 C++ 코딩을 해야하는지 코드 재사용 측면을 염두에 두면서 책을 읽으면 좋습니다. 

     

    이 책의 하이라이트는 '파트3 전문가답게 C++ 코딩하기'인데 C++에서 중요한 부분을 정말 자세히 설명합니다. 메모리관리, 클래스, 템플릿, I/O, 예외처리, 연산자 오버로딩, 컨테이너, 알고리즘, 정규표현식 등을 이 파트에서 정말 제대로 배울 수 있습니다. 파트3만 700페이지가 넘으니 각오를 하고 읽으시기 바랍니다. 

     

    파트4에서는 C++의 고급기능을 설명합니다. 말 그대로 고급기능이기 때문에 필요할 때 찾아보면 좋을 것 같습니다.  

     

    마지막 파트5에서는 C++ 프로그래밍을 위한 많은 팁이 있습니다. 소프트웨어 공학, 효율적인 코드 작성법, 테스트, 디버깅, 디자인 패턴 등 정말 필요한 내용들로 가득합니다. C++을 좀 더 잘하기 위한 필수코스라고 생각합니다. 

     

    부록에는 C++ 면접 예상 질문, 참고문헌, 표준 라이브러리 헤더 파일, UML 기초가 있습니다. 

     

    전문가를 위한 C++ 책이 두꺼운 이유는 C++의 모든 내용을 다루고 있어서가 아닙니다. 정말로 C++ 전문가를 위한 커리큘럼이기 때문입니다. C++을 오래전부터 사용했지만 최신경향 C++을 몰랐는데 이 책을 통해서 하나하나 배우고 있습니다. 마음먹고 이 책을 자기 것으로 만든다면 프로그래밍 내공이 어머어마하게 상승하지 않을까 싶습니다. C++과 친해지고 싶은 현 개발자나, 컴퓨터 공학을 전공하는 투지 넘치는 분에게 추천하고 싶은 책입니다.

  •  오랜만에 필자의 주력 언어인 C++ 책을 리뷰할 기회가 생겼다바로 "전문가를 위한 C++" 책이 그것이다위 책의 개정 3판을 상당히 재미나게본 필자에게 있어서 이번 도서 리뷰 기회는 절대로 놓칠수 없없었다여하튼 필자의 여담은 여기까지하고위 책은 기존 제 3판에서 새로이 추가되었었던 C++14의 내용에 C++17에서 새로이 추가된 내용들이 정리된 책이다솔직히 이 책을 처음부터 끝까지 정독하기에는 큰 무리가 있다일단 책의 두깨를 보는순간 필자가 왜 이런 조언을 독자에게 하는지 이해가 될 것이다그리고 위 책은 친절한 만큼 그 내용 분량이 광대하여 C++을 처음 접하는 초심자들이 공부하기엔 썩 괜찮은 책이 아니다왜냐하면 하나 하나 너무 자세히 설명하고 다루고 있기 때문에 자칫하다간 금방 실증을 느끼고 C++의 참된 아름다움을 깨닫기 전에 영영 이 언어를 꺼리게 되는 현상이 발생할 수 있기 때문이다.


    【어떤 독자를 위한 책인가】

     

     이 책은 앞서 필자가 언급한 것처럼초보자들이 보기에는 볼 내용이 너무 많다아니 너무 많다못해 그냥 법전 한권을 가져다가 통으로 외우세요라는 느낌이 책이다그렇기에 초심자들이 위 책을 가지고 처음 시작하기엔 좋지 않다다만 중급자고급자들이 개발을 하다 막히거나 혹은 특정 부분에 대한 이해, 3년 주기로 c++ stl이 업데이트 되는데 이 때 새로이 추가된 내용들이 무엇인지 궁금한 독자들이 위 책을 가지고 학습을 하면 곱절의 학습효과를 얻을 수 있는 책이다물론 위의 내용들은 c++ stl 커뮤니티에 들어가서 훨씬 디테일하게 찾아서 공부할 수 있는 내용이지만책에는 친절하게 잘 정리되어 기술 되어 있기 때문에 이번 C++ STL 버전에는 무엇이 새로이 추가되었는지 한눈에 파악하기 정말 좋다따라서 위 책을 사용하고 학습하길 필자는 권한다.


    【책의 구성】 '전문가를 위한 C++책의 구성은 어떠한가.

     이 책은 C++에서 다루는 거의 모든 내용들을 다루고 있다코딩 컨벤션디자인 패턴객체지향 디자인 방법론메모리 사용방법함수 재사용템플릿 디자인컨테이너제너릭 타입 등등.. 이번 C++17에서 새로이 추가된 병렬처리 쓰레드와 크로스 플랫폼 개발 방법까지 (덤으로 면접에서 나올 법한 질문들에 대해서도 매우 친절히 정리되어 있으므로 취준생 여러분들이라면 이 쳅터를 필독하시길 권한다.) 말그대로 필자가 아는 선에서의 모든 것들을 다루고 있다그만큼 독자가 원하는 챕터를 선택하여 체계적으로 공부할 수 있는 기회가 넓은 책이라는 것이다또한 각 쳅터는 이론적 배경예제 코드이에 대한 설명과 하면 안되는 예와 권장하고 있는 예그리고 주의해야할 점 등등 논리적이며 체계적으로 정리되어 있다이는 공부를 함에 있어 부족함이 없는 충분한 지식을 전달하고 있음을 의미한다따라서 C++을 꼼꼼히 학습하고자 하는 분들에게 정말로 좋은 구성이라 할 수 있겠다.


    【전문가를 위한 C++를 읽으며…….

     

     필자는 막 개발 세계에 입문하신 분들에게 항상 다음과 같이 권한다주력 언어 1개 그리고 서브 언어 2개 정도를 알고 있어야 한다고이때 주력 언어는 어떠한 경우에도 막힘이 없고 최신 트랜드에 대해 정말 잘 알고 있는 수준이어야 하며 서브 언어의 경우 간단한 레퍼런스만 있으면 어느정도 구현이 가능한 수준이어야 한다는 점을 강조한다왜냐하면 대부분의 언어는 비슷한 구조를 가지고 있다진짜 무슨 어셈블 그런 언어가 아니면 진짜로 비슷한 속성들을 가지고 있다. (단 언어의 성질이 완전히 바뀌는 언어들 간에는 그 특징이 완전히 다르므로 그것들에 대해서는 제외하도록 하자.) 그렇기에 한가지 언어에 대해서 전문성을 갖춘다면 다른 언어들을 학습하는 것에 대해서 상당한 시간과 비용을 절약할 수 있다.

     크게 전문성을 갖추기에 좋은 언어들을 추천한다면 C++, Java, Javascript, Ruby, python, go 등이 있고 그중에서 C++은 진입장벽이 좀 높은 편이다따라서 이 점을 잘 파악하여 주력 언어를 선정할 것을 권한다.

     

     

     

     


  • <나는 리뷰어다> 9월 이벤트 당첨으로 작성한 리뷰 입니다.


    [한줄평]

    최신 C++를 마스터하려면 알아야 할 C++와 C++17의 모든 것 아낌 없이 알려준다


    [목차구성]

    [Part 1 전문가를 향한 C++의 첫걸음]

    CHAPTER 1 C++와 표준 라이브러리 초단기 속성 코스

    CHAPTER 2 스트링과 스트링 뷰 다루기

    CHAPTER 3 코딩 스타일


    [Part 2 전문가답게 C++ 소프트웨어 디자인하기]

    CHAPTER 4 전문가다운 C++ 프로그램 디자인

    CHAPTER 5 객체지향 디자인

    CHAPTER 6 재사용을 고려한 디자인


    [Part 3 전문가답게 C++ 코딩하기]

    CHAPTER 7 메모리 관리

    CHAPTER 8 클래스와 객체 숙달하기

    CHAPTER 9 클래스와 객체 마스터하기

    CHAPTER 10 상속 활용하기

    CHAPTER 11 C++의 까다롭고 유별난 부분

    CHAPTER 12 템플릿으로 제네릭 코드 만들기

    CHAPTER 13 C++ I/O 완전 분석

    CHAPTER 14 에러 처리하기

    CHAPTER 15 C++ 연산자 오버로딩하기

    CHAPTER 16 C++ 표준 라이브러리 둘러보기

    CHAPTER 17 컨테이너와 반복자 살펴보기

    CHAPTER 18 표준 라이브러리 알고리즘 마스터하기

    CHAPTER 19 스트링 현지화와 정규 표현식

    CHAPTER 20 여러 가지 유틸리티 라이브러리


    [Part 4 C++ 고급 기능 마스터하기]

    CHAPTER 21 표준 라이브러리 커스터마이즈 및 확장

    CHAPTER 22 고급 템플릿

    CHAPTER 23 C++ 멀티스레드 프로그래밍


    [Part 5 C++ 소프트웨어 공학]

    CHAPTER 24 소프트웨어 공학 기법

    CHAPTER 25 효율적인 C++ 코드 작성법

    CHAPTER 26 테스트 숙달하기

    CHAPTER 27 디버깅 완전 정복

    CHAPTER 28 디자인 기법과 프레임워크

    CHAPTER 29 디자인 패턴

    CHAPTER 30 크로스 플랫폼과 크로스 언어 애플리케이션 개발 방법

    [부록 A] C++ 면접 예상 질문

    [부록 B] 참고 문헌

    [부록 C] 표준 라이브러리 헤더 파일

    [부록 D] UML 기초


    [대상 독자]

    C++를 수년 동안 사용하더라도 C++ 고급 기능에 익숙하지 않거나 고급 기능을 사용한 적이 거의 없는 사람이 있다. C++ 코딩에는 자신 있지만 C++로 디자인하는 방법이나 바람직한 프로그래밍 스타일을 자세히 알고 싶은 사람도 있다. 또한 C++ 경험은 부족하지만 실전에 제대로 활용하는 방법을 배우고 싶은 사람도 있다. 이 책은 C++ 실력을 전문가 수준으로 끌어올리려는 분 모두를 대상으로 한다.


    [이 책의 주요 특징]

    - C++의 방대한 기능을 최대한 활용하여 효과적인 솔루션을 개발할 수 있도록 C ++ 사고방식을 제시한다.

    - 어설프게 알고 있거나 실수하기 쉬운 부분을 바로 잡고 효율과 성능을 높이는 다양한 팁과 기법, 우회전략을 소개한다.

    - 당장 프로젝트에서 마주치고 적용할 수 있는 현실적인 문제와 프로그램 예제를 소개한다.

    - 구조적 바인딩, 중첩 네임스페이스, constexpr if를 비롯한 C++17부터 새로 추가된 기능을 소개한다.

    - string_view, optional, 병렬 알고리즘, 파일시스템 API 등 C++17부터 새로워진 표준 라이브러리의 주요 기능을 심도 있게 살펴본다.


    [서평]

    이책은 C++ 문법만 알려 주는 책이 아니다. 정말 C++ 전문가 아니 프로 프로그래머로 가기 위해서 한번 읽어 봐야할 내용들이 많이 있다. C++ 17에 추가된 핵심기능인 람다, 파일시스템, 템플릿, 표준 라이브러리(STL), 문자열, 입출력과 같은 기본부터 제네릭 코드 작성, 타입 추론 템플릿 재귀, 메타 프로그래밍, 메모리관리, 멀티스레드 같은 고급 기능까지 다루고 있다. 소프트웨어 엔지니어링 측면에서도 알아야할 버전관리, 소프트웨어 개발 방법론, 코드 최적화, 테스팅, 디버깅, 프레임워크, 디자인 패턴까지 소개해 C++ 전문가가 되고 싶은 독자는 물론 다른 언어 개발자도 한번 눈여겨 볼만한 개발 기법들을 알려주고 있어 같이 봐도 좋을 것 입니다.


    이 책의 전체 적인 구성은 총 5파트로 되어 있습니다. 1부에서는 전문가를 향한 C++의 첫걸음으로 C++ 기초 코스로 이루어져 있습니다. 스트링과 스트링 뷰 다루는 방법과 C++코드를 읽기 쉽게 작성하는 방법을 배울수 있습니다. 2부에서는 전문가답게 C++ 소프트웨어 디자인하기로 디자인 방법론, 객체지향 방법론, 코드 재사용의 중요성 등을 설명하고 있습니다. 3부에서는 전문가답게 C++ 코딩하기로 C++를 다루는 기법을 소개 합니다.  C++에서 메모리를 관리하기 위한 바람직한 방법, 재사용 가능한 클래스 작성법, 상속과 같이 언어의 주요 기능을 최대한 활용하는 방법 등을 소개한다. 또한 C++의 까다롭고 미묘한 기능, 입력과 출력을 다루는 방법, 에러 처리 방법, 스트링 현지화 방법, 정규 표현식 사용법 등도 소개한다. 연산자 오버로딩, 템플릿 작성법도 설명한다. 컨테이너, 반복자, 제네릭 알고리즘 등을 제공하는 C++ 표준 라이브러리도 소개한다. 표준 라이브러리에서 제공하는 시간, 무작위수, 파일시스템 등과 관련된 기능도 살펴본다. 4부에서는 고급 기능 마스터하기로 C++에서 잘 알려지지 않은 기능을 소개하고 고급 수준에 해당하는 기능을 사용하는 방법을 배웁니다. C++ 표준 라이브러리를 커스터마이즈하고 확장하는 방법, 템플릿 메타 프로그래밍 같은 템플릿 프로그래밍의 고급 기법, 멀티프로세서 및 멀티코어 시스템을 최대한 활용하기 위한 멀티스레드 프로그래밍 방법도 다룹니다. 마지막 5부에서는 C++ 소프트웨어 공학파트로 엔터프라이즈 수준의 소프트웨어를 작성하는 방법을 소개합니다. 현업에서 사용하는 최신 소프트웨어 공학기법과 효율적인 C++ 코드 작성 방법, 단위 테스트나 회귀 테스트를 비롯한 다양한 테스트 방법론, C++ 프로그램 디버깅 기법을 설명합니다. 또한 디자인 기법, 프레임워크, 객체지향 패턴을 한데 엮은 방법을 설명하고 크로스 언어 및 크로스 플랫폼을 위한 코드 작성 방법을 소개합니다.

     

    『전문가를 위한 C++』(개정4판)은 C++에 대한 모든 내용을 코드와 솔루션 위주로 소개한다. 그리고 실전 프로그래밍에 적용할 수 있는 현실적인 기법을 다양하게 소개하였으며, 본 교재는 C++를 더 깊이 이해하려는 프로그래머에게 적합한 책이다.

  • KakaoTalk_20191013_000250309.jpg

     

    한줄요약 : C++ 참고서계의 수학의 정석

     

    일단 어렵다.

    내용 설명은 엄청 자세하게 해주기 때문에 속시원면도 있는가 하면

    굳이 이런 내용까지 알아야하나 싶은 점도 있다.

    허나 C++ 전문가가 되기 위해서는 집에 하나쯤은 있었으면 하는 책이다.

     

    초보자인 내 경우엔 아직까진 정독할 필요성을 느끼진 못한다.

     

    책의 순서로는 C++ 프로그래밍 언어를 사용하기 위한 전반적인 내용을 알려준다.

    그 후, 코딩 스타일에 대해 소개해주고 설계하는 방법으로 구성되어 있다.

     

    신기한 점은 어깨너머로만 들었던 디자인 패턴에 대해 적혀있다.

    디자인 패턴은 효율적으로 프로그래밍을 하기 위해 반드시 알아야 할 주제라고들 한다.

    대한민국에 존재하는 대부분의 C++에는 이런 내용은 별도의 책으로 존재한다.

     

    내가 가장 헷갈려 하는 부분 중 하나가 크로스 플랫폼이다.

    다양한 운영체제가 있지만 늘 윈도우만 사용해왔기에 리눅스 같은 운영체제는 다소 어렵게 느껴진다.

    허나 개발자로 가기 위해서는 크로스 플랫폼 뿐만 아니라

    크로스 언어 애플리케이션 개발 방법도 알아야 한다고 생각한다.

     

    초보자가 읽기에는 어려운 책이지만

    그럼에도 불구하고 C++ 책 하나만 선택하라고 한다면 이 책을 선택하겠다.

    마치 수학의 정석처럼 이 책 하나만 정복한다면 충분할 것 같은 느낌이 들기 때문이다.

     

  • 드디어 C++ 기타책을 손에 넣게 되었다. 마침 한빛미디어에서 개정 신간을 볼 수 있게 리뷰 이벤트를 해주어서 드디어 볼 수 있게 되었다! 이 책의 명성 만큼 두께가 어마무시하다;;

    내 에어팟 2개를 곂쳐야 이 책의 두께를 따라갈 수 있다;; 무려 1496페이지이다.

    무려 30챕터나 된다;; 양이 진짜 많다...

    이 책은 진짜 C++의 전반적인 내용들이 전부 들어가있다. C++의 기본적인 문법들, C++의 주요 특징들과 헷갈리는 기능들과 C++로 객체지향 프로그래밍을 할때 유용한 점들, 소프트웨어 공학적인 측면에서 C++을 다룰때 주의해야 하는 점들도 다루고 있다. 진짜 내용이 방대함...

    이 책은 마치 사전같다. 진짜 사전 두께긴 하다. 이 책을 두고두고 볼 것 같다. 나는 특히 이부분이 마음에 들었다. 유독 C++에만 골머리를 앓게 하는 부분들이 있다. 그런 특징들을 잘 설명해주기 위해 따로 파트를 할애하는 것이 멋있었다고 해야 하나 암튼 그럼. r-value나 r-value reference들이 진짜 헷갈리는 건데 나름 개념을 잡아주는 것 같아서 좋았다. C++ 17로 바뀌면서 추가된 내용들도 반영이 되어서 진짜 C++중급자로 넘어가는 교과서와 같은 책이 된 것 같다. 내용도 그렇게 어렵게 다루지 않아서 술술 읽히고 좋은 것 같다. C++을 좀더 알고 싶어 하는 분들에게 강추다. 무조건 읽어보는 것을 추천한다. 내용이 많긴 하지만 확실히 다 유용한 내용이라는 것을 실감했다. 68000원이라는 큰돈이긴 한데 값어치 하는 것 같다. 나는 평소에 저런 C++고급지식들을 어떻게 알지 라고 많이 생각했는데, 요즘은 이런 좋은 책들이 많이 나와서 나도 하나하나 알아가고 있는 것 같다.

  • 전문가를 위한 C++ 

     

    학창 시절에 C++을 잠깐 배웠습니다. 

     

    기회가 되면 다시 공부해야지 하는 생각을 불현듯 했는데요. 

     

    파이선과 C++의 딥러닝 연산속도를 비교하기 위해서  책을 알아봤습니다.

     

    찾은 책은 바로 '전문가를 위한 C++'입니다. 

     

    처음 이 책을 본 순간 벽돌이다....

     

    많은 전공 서적을 봤지만 페이지수가 2배 이상인 1400입니다.

     

    엄청나게 압도적이었습니다. 

     

    하지만 내용을 본 순간 생각은 달라졌습니다.

     

    고급 기능들이 담겨 있는 책들이 기존에 많지 않았기 때문이죠. 

     

    그럼 이 책에 대해서 짧게 정리해보도록 하겠습니다. 

     

    c++.jpg

     

    1) 표준화의 변화 

    함수형 언어들의 대거 등장으로 기존 개발 코드들이 크게 변화하고 있습니다. 

     

    이에 발맞추어 C++ 또한 표준화 작업에 들어갔는데요. 

    버전 별로 차이가 있지만 최근 버전의 소스 코드들이 기존의 방식보다 줄어든 것으로 알 수 있습니다. 

     

    크게 변화된 것은 표준 라이브러리에 변화입니다. 

    표준 라이브러리가 변화된 것은 내부의 코드들을 전반적으로 바뀐 것이라고 볼 수 있습니다.

     

    내부적(std 라이브러리)으로 문자열에 대한 포인터와 길이만 가지므로, 복사가 쉽지만 메모리에 할당이 안 됩니다.

     

    향후 C++ 20은 어떠한 변화가 있을지 궁금합니다. 

     

    전문가.jpg

     

     

    2) C++ 병렬처리

    주로 사용하는 언어가 Python입니다. 

    cpython을 이용해서 병행해서 사용했지만, 생각만큼 퍼포먼스가 나오지 않았습니다. 

     

    그중 찾은 방법이 C++을 활용한 병렬처리 방법인데요.

    병렬 알고리즘을 바탕으로 작업을 해본 결과 C++ 단에서 작업하는 것이 빠른 것으로 확인됐습니다.

     

    좀 더 소스를 다듬고 병행해서 작업하면 괜찮은 것으로 보입니다. 

     

    PS.

    30년이 넘은 오래된 언어 C++.

     

    처음 접했을 때는 이해가 안 가서 너무 어려웠는데요. 

    현업에 들어오면서 언어에 대한 이해도가 높아지면서 진입장벽을 넘어 편한 언어로 다가왔습니다. 

     

    최근 표준화 과정을 거치면서 C++ 17 이전과 이후가 크게 바뀌었습니다.

     

    개인적으론 현재 버전이 이해하기 쉽게 코드를 짤 수 있어서 눈에 잘 갑니다. 

    단, 기존에 코드들을 어느 정도 유지보수 해야 한다는 것을 고려해야 한다는 점도 있죠. 

     

    C++에 대해 좀 더 깊게 공부하고 싶은 사람들과 개발하는 분들에게 이 책을 추천해 드립니다. 

     

  • 다운로드.png

     

    전문가를 위한 C++ 책을 처음 읽었을때 드는 느낌 부터 설명하자면 굉장히 알찬 내용이며 국내에서 가장 번역이 잘된 책이라고 생각하는 책이다. 이책이 개정판이 벌써 4판까지 나왔으며 역시나 이책은 기본 서적 과 C++ 17 으로 설명이 되어있어서 표준을 준수하는 책이다. 또한 다양한 디자인 패턴, 간단한 병렬 알고리즘을 제공하기에 좋다. 메모리 관리에 대한 내용도 상세히 기술 되어있고, 디버깅에 대해서도 자세히 설명이 되어있어 이책은 업무를 진행을 하면서 다시 한번 지식을 일깨워주는 책이다. 개인적으로 설명은 핵심 위주로 작성되어 있는데, 개인적으로 이러한 부분이 좋다. 장황한 설명이 길어져 핵심을 결국 흐트려진 책이 많은데, 이책은 원하는 핵심을 간결하게 핵심만 짚어주고 이해가 되지 않을땐 직접 찾으면서 익히는 공부 스타일이 좋기 때문이다. 이책은 많은 사람들이 추천할 정도로 좋은 책임에는 분명함에 틀림이 없다. 하지만 이책의 난이도를 얘기해 달라면 당연히 기본 C++ 의 지식은 가지고 있어야 할 것이며, 이책을 통하여 그 기본을 한번 더 다지는 책이 될 것이라 강력하게 추천한다.

     

     

  • 1.책을 읽기전에
    전문가를 위한 C++을 읽기전에 C언어 입문서를 먼저 읽었다.
    이 한권의 책으로 한번에 성과를 낼거라고는 생각하지 않는다.반복적으로 보고
    어떻게 활용할지 방향을 잡아보고자 한다.
    C++로 어플리케이션을 개발하기 위한 목적보다는 어떤 언어일까 궁금했다.
    그리고 객체지향과 디자인패턴의 원리가 궁금해서 선택한 책이다.

    [책 표지] 전문가를 위한 C++ 개정4판(마크 그레고리 지음, 남기혁 옮김,한빛미디어)
    20191010_232240_001.jpg
    2.책을 보면서
    나는 주로 C#과 VB.NET을 주로 사용해서 개발을 하고 있다. 
    별도의 디자인패턴에 대한 책도 소장하고 있지만 이 책 CHAPTER 29에 있는 디자인 패턴을 반복적으로 읽었다.
    다른 언어에서는 잘 소개되지 않고 별도의 책을 봐야 하지만 이 책에는 특별히 디자인 패턴이 소개되어 있다.
    일단은 문법들이 전부 낯설다. C#과는 사뭇 다른 느낌이다.
    책 분류는 초급이라고 되어있는데 내가 보기에는 솔직히 어렵게 느껴진다.

    3.책을 읽고 난후
    JAVA,C#,VB와 같은 언어와는 많이 다른 느낌이다.
    1장은 대개 가볍게 읽을수 있을거라 생각했지만 예상과는 달리 낯설다.
    가볍게 읽고 넘어갈 수 있는 부분이 그리 많지 않았다.
    앞으로 수차례 더 정독을 해야 어떻게 공부해야 할지 어느정도 감이 올것 같다.
    C언어에 익숙하거나 C++에 어느정도 사용한 분이라면 좀 다르겠지만
    나는 이 책에서 말하고자하는 큰 줄기조차 따라가기 힘들었다.
    C언어에 대한 선수지식이 더 있어야 되겠다는 생각을 해보았다. C 입문서를 몇번 더 보고 다시 도전해 봐야겠다.
    새로운 언어를 익힌다는 것, C++을 공부한다는 것, 마음을 다잡고 다시 시작해야겠다.
    언제나 그래왔듯이 코드 입력하고 분석하는 작업을 반복에 또 반복을 해야 할 것 같다.

  • 4100.jpg

     

    4101.jpg

     

     

    책을 받고 나서 책의 두께를 보고 오랜만에 C++ 프로그래밍 언어의 위대함을 느꼈다.

    원서 제목은 Professional C++, 4th edition.

    벌써 네번째 개정판으로, John Wiley & Sons와 Wrox 출판사의 원서를 번역한 책이다.

     

    ​이 책은 C++을 사용하지만 C++의 고급 기능에 익숙하지 않거나, 고급 기능을 사용한 적이 거의 없는 사람, C++ 코딩에는 자신있지만 C++로 다자인하는 방법이나 바람직한 프로그래밍 스타일을 자세히 알고 싶은 사람, C++ 경험은 부족하지만 실전에 제대로 활용하는 방법을 배우고 싶은 사람 등 다양한 요구를 반영하여 독자의 C++ 실력을 전문가 수준으로 끌어올리고자 이 책을 집필했다고 한다.

     

    이 책의 목적은 C++의 초급부터 중급 수준의 실력을 전문 C++ 프로그래머 수준으로 끌어올리는데 있다고 한다. 독자의 수준에 관계없이 프로그래밍 기초는 갖추고 있어야 이 책을 읽을 수 있다. 그렇지 않으면 이 책을 읽는 의미가 하나도 없다. 이 책에서는 코드의 품질과 프로그래밍 효율을 동시에 향상시킬 수 있는 C++ 프로그래밍 기법도 소개하고 있다. 특히 C++ 17에 새로 추가된 기능을 이 책 전반에 걸쳐 소개하고 있다.

     

    ​이 책은 총 5부로 구성되어 있다.

    1부 전문가를 향한 C++ 첫걸음

    2부 전문가답게 C++ 소프트웨어 디자인하기

    3부 전문가답게 C++ 코딩하기

    4부 C++ 고급 기능 마스터하기

    5부 C++ 소프트웨어 공학

     

    ​1부는 C++ 초단기 속성 코스이다. 이미 알고있는 사람은 넘어가도 좋고, 다시 한번 리뷰 차원에서 읽는 것도 괜찮을 것 같다.

    C++의 가장 기초적인 문법부터 코딩스타일까지 한번쯤은 읽어보면 좋은 내용들이다. 특히 코딩스타일은 개인마다 선호하는 것이 다르겠지만, 코딩을 할 때 일반적으로 지켜야할 것들을 다시한번 생각하게 한다.

     

    2부에서는 본격적으로 C++ 전문가가 되기 위한 디자인 관련 내용들이다.

    전문가다운 C++ 프로그램 디자인, 객체지향 디자인, 재사용을 고려한 디자인 등 디자인 패턴에 대한 내용들을 담고 있다. C++ 디자인에서 가장 핵심적인 원칙은 추상화(abstraction)과 재사용(reuse)이다. 이 두가지는 꽤 중요한 내용으로 이 책에서도 여러번 다루고 있다.

     

    ​2부에서 디자인을 다뤘다면 3부에서는 전문가답게 C++를 다루는 기법을 소개한다.

    C++에서 메모리 관리를 위한 바람직한 방법, 2부에서 다뤘던 재사용 가능한 클래스 작성법, 에러 핸들링, 연산자 오버로딩 등 C++ 코딩시 자주 마주하게 되는 내용들에 대해 전문가답게 어떻게 해야하는지 소개하고 있다. 이 책의 핵심부분이고 꽤 많은 내용이 담겨 있다. 하나하나 차근차근 학습하며 권장한다.

     

    4102.jpg

     

     

    4부에서는 C++의 잘 알려지지 않은 기능을 소개하고, 고급 수준에 해당하는 기능을 사용하는 방법을 소개한다.

    반복자, 템플릿, 멀티스레딩 등을 사용하는 방법이 자세히 설명되어 있다.

     

    4103.jpg

     

    ​5부에서는 소프트웨어 공학에 대한 내용이다. 

    예전 내용부터 최신 내용까지 간단히 읽어볼 수 있고, 효율적인 코드 작성법, 테스트, 디버깅 등 하나의 프로그램을 만드는데 일련의 과정에 대한 내용을 담고 있다. 또 디자인 기법 및 디자인 패턴, 크로스 플랫폼 개발 방법 등 다양한 내용을 다루고 있다.

     

    ​부록에서는 기술면접에 나올 법한 C++ 예상 질문을 장별로 소개하고, 다양한 참고 문헌을 부연 설명과 함께 제시하고 있다.

    기술면접 관련해서 기억해야할 사항, 질문 유형 등의 내용을 파악하면 좋을 것 같다. 실제 면접을 보지 않더라도 C++ 프로그래머로서 알아야 하는 내용들이 많아서 관련 내용들을 꼭 익히면 좋을 것 같다.

     

    ​C++에 대한 레퍼런스는 책에서 소개하는 다음 2개의 사이트에서 참고하면 좋다.

    www.cppreference.com

    www.cplusplus.com/reference/

     

    그리고 이 책의 예제소스는 한빛미디어 홈페이지에서 확인할 수 있다.

    http://www.hanbit.co.kr/media/books/book_view.html?p_code=B3215427289

    ​이 책의 학습을 위해서 예제소스를 활용해도 좋지만 직접 코딩하면서 학습하는 방법을 추천한다.

     

    이 책은 내용이 상당히 방대해서 책 두께도 꽤 두껍지만, 내용 자체가 C++의 매력을 한껏 느낄 수 있는 책이다.

    이정도 내용을 알아야 C++ 전문가가 될 수 있을까라고 물어본다면 그렇다라고 조심스럽게 말해본다.

    C++ 전문가가 되기 위해서 내용이 상당히 방대하지만 하나씩 차근차근 내 것으로 만들어가야겠다.

     

    한빛출판사의 나는 리뷰어다 활동을 통해 도서를 제공받아 작성한 리뷰입니다

     

    ​#전문가를위한C++ #C++ #한빛미디어 #나는리뷰어다

  • IMG_3712.JPG

     

    처음 프로그래밍을 시작할 때 C++로 시작했었습니다.

     

     

    도스에서 윈도우즈로 넘어가고 윈도우즈 버전이 바뀌면서도 계속 C++로 작업을 했었고.

    앱을 개발할 때도 부분 부분 C++로 작업을 했습니다.

     

    C++은 처음 배우기는 어렵지만, 한번 제대로 배우면 그 유연성과 속도, 확장성으로 인해 손을 뗄 수가 없습니다. 또한, 이 언어를 익히면 다른 언어는 정말 쉽게 익힐 수 있습니다.

     

    이 책을 처음 접했을 때는 (이전 판) 제가 부스트 라이브러리를 사용하다가 이 라이브러리의 상당 부분이 C++11에 포함되었을 때, 기존에 알고 있던 내용을 다시 정리하기 위해 원서부터 읽었습니다.

     

    이 책의 번역 개정판이 나온다는 얘기를 듣고 계속 기다리고 있었습니다. 

     

    처음에는 단순히 프로그래밍 문법 책인 줄 알았는데 읽으면 읽을 수록 이 책의 진가는 더 빛을 바랬습니다. 

     

    목차를 보면

     

    overview -> 코딩스타일 -> 설계 -> 코딩  순으로 어떤 흐름에 따라 책이 전개되고 있습니다.

     

    그리고 추가적으로 효율적으로 코딩 하는 방법, 디자인 패턴, 테스트 그리고 마지막으로 크로스 프랫폼에서 사용하는 방법을 설명하고 있습니다.

     

    일반적인 C++ 책에서 다루지 않는, C++이 아니더라도 소프트웨어 개발시 반드시 알고 있어야 할 내용까지 이 한권의 책에서 다 다루고 있습니다.

    IMG_3715.JPG

    IMG_3717.JPG

    특히, 디자인 패턴은 효율적으로 프로그래밍을 하기 위해 반드시 알아야 할 주제이며 

     

    windows에서 뿐만 아니라 ios, android 그리고 osx 환경에서 개발을 하기 위해서는 마지막 단원인 크로스 플랫폼과 크로스 언어 애플리케이션 개발 방법에 대해서는 알고 있어야 합니다.

     

    저는 C++ 책은 이 책 한권만 가지고 필요할때 계속 찾아보고 있습니다. 

     

     

  • C++은 C언어를 기반으로 한 언어 입니다.

     

    컴퓨터는 전류의 흐름을 인식하여 전류가 흐를때는 1, 흐르지 않을때는 0 으로 인식하여 모든 동작이 전류의 흐름을 이용하여 어떤 논리적인 흐름을 인식하는 기기 입니다.

    이러한 기기를 움직이기 위해서는 사람은 이 기계에게 로직을 심어 주어야 하는데 그것이 프로그램입니다.

    이러한 로직을 0과 1을 이용해서 심어주는 것은 사람에게는 너무 힘든일이었습니다.

    하지만 이러한 일들을 대신 해 주는 일을 C언어라는 문법을 개발 하면서 많은 로직이 수월해 졌습니다.

    결국은 사람이 가독성 있는 프로그래밍 언어인 C언어로 프로그램 구현 후 컴파일을 하게 되면 기계가 인식 할 수 있는 0과 1로 변환을 해 주는 컴파일러를 만든 것이 획기적인 프로그램의 발전을 이룬것이 아닐까 생각합니다.

     

    그만큼 C언어의 역사는 깊고 또한 기계 깊숙히 까지 제어 할 수 있는 문법중에 하나 입니다.

    이러한 C언어의 단점은 사람사는 세계와는 약간 다르다는 것에 있었습니다.

    예를 들면 강아지와 고양이가 만나서 서로 아웅다웅 하면서 싸우고 있을때...

    C언어에서는 강아지를 한번 호출해서 멍멍 호출을 하고 그 멍멍이 끝나면 다시 고양이를 한번 호출해서 야옹야옹을 말하게 하는 이차원적인 사고를 바탕으로 한 문법이었습니다.

     

    이러한 언어는 기계의 속도가 빠르지 않을때는 최선의 방법이었을 것입니다.

    하지만 기계의 속도가 빨라지면서... 

    실제 세상에 있는 객체를 프로그래밍화 할 수 있는 언어들이 나왔는데...

    그 중에 하나가 C언어를 기반으로 한 C++ 언어 입니다.

     

    객체란 위에서 설명을 한 강아지와 고양이를 별도로 하나의 강아지/하나의 고양이로 만들어 두고...

    필요할때 생성을 해서 짖어 라고 시킨다든가 하는 3차원적인 사고 방식을 프로그래밍화 할 수 있는 것입니다.

     

    이렇게 객체지향 언어들의 특징은 실 생활에서 필요한 로직들을 프로그래밍화 할때 생각하기가 편하다는 것입니다.

     

    전문가를 위한 C++은 이러한 객체지향 언어인 C++의 모든것이라고 할 수 있습니다.

     

     

     

    처음 이책을 만났을때 다른 C++ 책과 많이 다를게 뭐가 있을까 라는 생각을 많이 했었는데요.

    처음 이책을 만나면서 그 두께에 한번 깜짝 놀랄 수 밖에 없었습니다.

     

     

    제가 보고 있는 C++STL 책의 3배 두께...

    책의 페이지는 무려 1500페이지 

    하도 궁금해서 무게를 재어 봤더니 2KG이 넘는 그 두께감...

     

    예전에 비주얼 베이직이나 델파이등과 같은 프로그래밍 언어를 배울때 가끔 이것보다 더 두꺼운 책을 구매해서 보았던것 같네요.

    그 책들은 거의 매뉴얼 + 문법으로 언어들을 소개해준 책들이었는데요.

     

    이 책도 결국은 그러한 매뉴얼 + 문법으로 이루어져 있을것이라 판단을 했는데요.

    C++ 언어의 어떤 부분에서 이렇게 두껍게 출판을 할 수 있을까 하면서 열어본 내용은 제가 생각했던 그 이상이었다는 것을 알게 되었습니다.

     

    이 책은 C++ 문법 책이라기 보다는

    C++ 문법은 기본적으로 학습한 분들이 한단계 업그레이드 시키기 위한 방법의 책이라고 생각하시면 될것 같아요.

     

     

    이 책에서는 어떤 툴에 대한 매뉴얼은 찾아 볼 수가 없었고...

    순수하게 C++을 다루는 법에 대해 설명을 하고 있었는데요.

     

    제가 프로그램을 시작하고 업무 프로그램을 구현하면서 한참 지나고 나서 깨우친 느낌을 이 책에서 전달을 해주고 있더라구요.

     

    한가지 예를 들면 네이밍에 관한 문제였는데요.

    프로젝트를 수행하다 보면 여러 사람이 한가지 프로젝트를 수행함에 있어서 각기 다른 프로그램을 만들어서 각각의 단위테스트 완료 후에 한가지 프로젝트를 위해서 합칠때 네이밍 형태가 너무 다르다면 정말 헷갈릴수가 있는데요.

     

    이러한 부분때문에 SI 프로젝트를 수행할때 PM은 먼저 함수의 네이밍 방법, 변수의 네이밍 방법등을 먼저 정의하고 그 방법에 맞춰서 프로젝트를 수행하게 되는데요.

     

    실제로 이러한 네이밍은 단순한 예에 불과하지만...

    이 책에서는 이렇게 몇년간의 프로젝트를 수행하면서 깨달았던 문제들에 대해서...

    어떤 방법으로 프로그램을 구현해야 더 좋은지를 안내해 주는 안내서라고 할 수가 있습니다.

     

    따라서 이 책은 C++을 갓 시작하는 사람이 C++을 공부하기 위한 책은 아닙니다.

    오히려 갓 시작한 사람은 이 책이 독이 될 수 있는것이...

    이 책은 문법에 대해서 그렇게 친절하지는 않다는 것입니다.

     

    기본적인 문법을 알고 실무를 경험한 사람이 이 책의 도움을 받는 다면 한단계 업그레이드 될것이라 생각하는데요.

    그 이유는 제가 몇년전에 프로젝트에서 메모리 누수 부분 때문에 엄청 고생을 한 적이 있는데.

    이 책에서는 이러한 메모리 누수에 대한 해결책까지도 나와 있다는 것이죠...

     

    미리 한번 이 책을 본다면 프로젝트를 바라보는 시각이 달라 질 것이라 생각하게 되네요.

     

    이 책의 정가가 그리 저렴한 것은 아니지만...

    정말 필요한 분에게는 이 책의 정가 보다 몇배의 효과가 있는 책은 아닐까 생각을 해 보게 되는데요.

     

    이 책은 '나는 리뷰어다'에 선정이 되어서 받은 도서인데...

    제가 이 리뷰어에 선정이 되지 않았다면 읽어 볼 일이 없었을텐데...

    이렇게 이 책을 읽어 보게 된 일에 큰 감사의 말씀을 전하고 싶은 마음이 드네요.

     

    제 입장에서도 이러한 책을 읽어 봄으로써 알고 있던 것은 다시 정리를 해 보는 계기가 되었고.

    모르고 있던 부분에 대해서 한단계 업그레이드 되는 것을 느끼게 되었습니다.

     

    이 책에서는 C++을 사용하는 방법과 기법들에 대해서 더욱더 풍성한 정보를 제공해 주는 것은 아닌가 하는 생각이 들었네요.

     

    제가 두번째 사진에서 뇌를 자극하는 C++STL 책을 사진을 찍어 보았는데요.

     

    이 책을 읽으시기 전에 뇌를 자극하는 C++STL 까지는 마스터를 하고 나서 이 책을 보시는 것을 권해 드립니다.

     

    책의 상세한 목차를 원하시는 분은

    http://www.hanbit.co.kr/store/books/look.php?p_code=B3215427289

     

     

     

    전문가를 위한 C++(개정4판)

    C++는 마스터하기 어렵기로 악명 높지만 풍부한 기능 덕분에 게임이나 상용 소프트웨어 애플리케이션을 개발하는 대표 언어로 자리매김했다. 숙련된 C++ 프로그래머조차 잘 모르는 고급 기능도 많이 있는데, C++17이 나온 지금이야말로 C++의 모든 기능을 살펴볼 절호의 기회다.

    www.hanbit.co.kr

    이 링크에서 확인을 해 보실 수가 있는데요.

     

     C++을 이용한 프로젝트 매니저 또는 현재 현업에서 C++을 이용해서 프로젝트를 수행하는데 조금 더 실력을 업그레이 하시고 싶다면 이 책을 한번 읽어 보시라고 권해 드리고 싶네요.

부록/예제소스
자료명 등록일 다운로드
Google Drive 예제소스 2019-08-22 다운로드
결재하기
• 문화비 소득공제 가능
• 배송료 : 0원배송료란?

배송료 안내

  • 책, 아이템 등 상품을 3만원 이상 구매시 무료배송
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
전문가를 위한 C++(개정4판)
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
전문가를 위한 C++(개정4판)
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
전문가를 위한 C++(개정4판)
구입처*
구입일*
부가기호*
부가기호 안내

* 회원가입후 도서인증을 하시면 마일리지 500점을 드립니다.

* 한빛 웹사이트에서 구입한 도서는 자동 인증됩니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한됩니다.

* 절판도서, eBook 등 일부 도서는 도서인증이 제한됩니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실