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

한빛출판네트워크

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

C++20, 병렬 알고리즘, 파일시스템, 제네릭 람다, 디자인 패턴, 객체지향의 원리를 익히는 확실한 방법

한빛미디어

번역서

판매중

초급 초중급 중급 중고급 고급
4.9점 (19명)
좋아요 : 1

더 쉽게, 더 빠르게, 더 깔끔하게!

프로그래머가 알아야 할 C++와 C++20의 모든 것

 

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

『전문가를 위한 C++(개정5판)』은 C++20에 새로 추가된 기능과 관련 도구를 비롯해 C++에 대한 모든 내용을 코드와 솔루션 위주로 소개한다. 실전 프로그래밍에 적용할 수 있는 현실적인 기법을 다양하게 소개하므로 C++를 더 깊이 이해하려는 프로그래머에게 적합하다.

 

상세이미지_전문가를 위한 C++(개정5판)_700px.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: 센서』(2015), 『메이커 매뉴얼』(2016), 『이펙티브 디버깅』(2017), 『리팩터링 2판』(2020), 『전문가를 위한 C++(4판)』(2019)을, 길벗에서 『핵심 C++ 표준 라이브러리(2판)』(2021), 『모던 C』(2022)를, 에이콘출판사에서 『Go 마스터하기』(2018), 『자율주행 자동차 만들기』(2019, 2022), 『스콧 애론슨의 양자 컴퓨팅 강의』(2021) 등을 번역했다.

[PART I 전문가를 위한 C++ 첫걸음]

 

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

_1.1 C++의 기초

_1.2 어느 정도 규모 있는 첫 C++ 프로그램

_1.3 정리

_1.4 연습 문제

 

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

_2.1 동적 스트링

_2.2 스트링 포맷 지정

_2.3 정리

_2.4 연습 문제

 

CHAPTER 3 코딩 스타일

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

_3.2 코드 문서화

_3.3 코드 분해

_3.4 명명 규칙

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

_3.6 코드 서식

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

_3.8 정리

_3.9 연습 문제

 

[PART II 전문가다운 C++ 소프트웨어 설계 방법]

 

CHAPTER 4 전문가답게 C++ 프로그램 설계하기

_4.1 프로그램 설계의 정의

_4.2 프로그램 설계의 중요성

_4.3 C++에 적합한 설계 방법

_4.4 C++ 설계에 관련된 두 가지 원칙

_4.5 코드 재사용

_4.6 체스 프로그램 설계

_4.7 정리

_4.8 연습 문제

 

CHAPTER 5 객체지향 설계

_5.1 절차형 사고방식

_5.2 객체지향 철학

_5.3 클래스 세상에 살기

_5.4 클래스 관계

_5.5 정리

_5.6 연습 문제

 

CHAPTER 6 재사용을 고려한 설계

_6.1 재사용 철학

_6.2 코드를 재사용할 수 있도록 설계하는 방법

_6.3 정리

_6.4 연습 문제

 

[PART III 전문가답게 C++ 코딩하기]

 

CHAPTER 7 메모리 관리

_7.1 동적 메모리 다루기

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

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

_7.4 흔히 발생하는 메모리 관련 문제

_7.5 스마트 포인터

_7.6 정리

_7.7 연습 문제

 

CHAPTER 8 클래스와 객체 이해

_8.1 스프레드시트 예제

_8.2 클래스 작성 방법

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

_8.4 정리

_8.5 연습 문제

 

CHAPTER 9 클래스와 객체 완전 정복

_9.1 프렌드

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

_9.3 메서드의 종류

_9.4 데이터 멤버의 종류

_9.5 중첩 클래스

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

_9.7 연산자 오버로딩

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

_9.9 정리

_9.10 연습 문제

 

CHAPTER 10 상속 활용하기

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

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

_10.3 부모를 공경하라

_10.4 다형성을 위한 상속

_10.5 다중 상속

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

_10.7 캐스트

_10.8 정리

_10.9 연습 문제

 

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

_11.1 모듈

_11.2 헤더 파일

_11.3 언어 핵심 기능에 대한 테스트 매크로

_11.4 static 키워드

_11.5 C 유틸리티

_11.6 정리

_11.7 연습 문제

 

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

_12.1 템플릿 소개

_12.2 클래스 템플릿

_12.3 함수 템플릿

_12.4 변수 템플릿

_12.5 콘셉트

_12.6 정리

_12.7 연습 문제

 

CHAPTER 13 C++ I/O 심층 분석

_13.1 스트림 사용법

_13.2 스트링 스트림

_13.3 파일 스트림

_13.4 양방향 I/O

_13.5 파일시스템 지원 라이브러리

_13.6 정리

_13.7 연습 문제

 

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 사용자 정의 리터럴 연산자 오버로딩

_15.11 정리

_15.12 연습 문제

 

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

_16.1 코드 작성 원칙

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

_16.3 정리

_16.4 연습 문제

 

CHAPTER 17 반복자와 범위 라이브러리

_17.1 반복자

_17.2 스트림 반복자

_17.3 반복자 어댑터

_17.4 범위

_17.5 정리

_17.6 연습 문제

 

CHAPTER 18 표준 라이브러리 컨테이너

_18.1 컨테이너 개요

_18.2 순차 컨테이너

_18.3 컨테이너 어댑터

_18.4 정렬 연관 컨테이너

_18.5 비정렬 연관 컨테이너 - 해시 테이블

_18.6 기타 컨테이너

_18.7 정리

_18.8 연습 문제

 

CHAPTER 19 함수 포인터, 함수 객체, 람다 표현식

_19.1 함수 포인터

_19.2 메서드 및 데이터 멤버를 가리키는 포인터

_19.3 std::function

_19.4 함수 객체

_19.5 람다 표현식

_19.6 std::invoke( )

_19.7 정리

_19.8 연습 문제

 

CHAPTER 20 표준 라이브러리 알고리즘 완전 정복

_20.1 알고리즘 개요

_20.2 표준 라이브러리 알고리즘 심층 분석

_20.3 정리

_20.4 연습 문제

 

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

_21.1 현지화

_21.2 정규 표현식

_21.3 정리

_21.4 연습 문제

 

CHAPTER 22 날짜와 시간 유틸리티

_22.1 컴파일 시간 유리수

_22.2 duration

_22.3 clock

_22.4 time_point

_22.5 날짜

_22.6 타임존

_22.7 정리

_22.8 연습 문제

 

CHAPTER 23 무작위수 기능

_23.1 C 스타일 무작위수 생성

_23.2 무작위수 엔진

_23.3 무작위수 엔진 어댑터

_23.4 기본 제공 엔진과 엔진 어댑터

_23.5 무작위수 생성하기

_23.6 무작위수 분포

_23.7 정리

_23.8 연습 문제

 

CHAPTER 24 기타 라이브러리 유틸리티

_24.1 어휘 타입

_24.2 tuple

_24.3 정리

_24.4 연습 문제

 

[PART IV C++ 고급 기능 마스터하기]

 

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

_25.1 할당자

_25.2 표준 라이브러리 확장하기

_25.3 정리

_25.4 연습 문제

 

CHAPTER 26 고급 템플릿

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

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

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

_26.4 템플릿 재귀

_26.5 가변 인수 템플릿

_26.6 메타프로그래밍

_26.7 정리

_26.8 연습 문제

 

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

_27.1 들어가며

_27.2 스레드

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

_27.4 뮤텍스

_27.5 상태 변수

_27.6 래치

_27.7 배리어

_27.8 세마포어

_27.9 퓨처

_27.10 멀티스레드 Logger 클래스 예제

_27.11 스레드 풀

_27.12 코루틴

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

_27.14 정리

_27.15 연습 문제

 

[PART V C++ 소프트웨어 공학]

 

CHAPTER 28 소프트웨어 공학 기법

_28.1 프로세스의 필요성

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

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

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

_28.5 소스 코드 관리

_28.6 정리

_28.7 연습 문제

 

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

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

_29.2 언어 수준의 효율

_29.3 설계 수준 효율

_29.4 프로파일링 

_29.5 정리 

_29.6 연습 문제

 

CHAPTER 30 테스트 숙달하기

_30.1 품질 관리

_30.2 단위 테스트

_30.3 퍼징

_30.4 하이레벨 테스트

_30.5 성공적인 테스트를 위한 팁

_30.6 정리

_30.7 연습 문제

 

CHAPTER 31 디버깅 완전 정복

_31.1 디버깅 기본 원칙

_31.2 버그 분류

_31.3 버그 방지

_31.4 버그 대비

_31.5 디버깅 테크닉

_31.6 정리

_31.7 연습 문제

 

CHAPTER 32 설계 기법과 프레임워크

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

_32.2 고급 기법

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

_32.4 정리

_32.5 연습 문제

 

CHAPTER 33 디자인 패턴

_33.1 의존성 주입

_33.2 추상 팩토리 패턴

_33.3 팩토리 메서드 패턴

_33.4 어댑터 패턴

_33.5 프록시 패턴

_33.6 반복자 패턴

_33.7 옵저버 패턴

_33.8 데코레이터 패턴

_33.9 책임 사슬 패턴

_33.10 싱글턴 패턴

_33.11 정리

_33.12 연습 문제

 

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

_34.1 크로스 플랫폼 개발

_34.2 크로스 언어 개발

_34.3 정리

_34.4 연습 문제

 

[PART VI 부록]

 

APPENDIX A C++ 면접 예상 질문

APPENDIX B 참고 문헌

APPENDIX C 표준 라이브러리 헤더 파일

APPENDIX D UML 기초

 

7. 관련 서적(제목 + ISBN)

C++ 최적화 / 9791162241981

이것이 C++이다 / 9788968482465

뇌를 자극하는 C++ STL / 9788979149135

 

C++ 전문가를 꿈꾸는 프로그래머에게 전하는 희소식!

최신 C++를 마스터하려면 알아야 할 C++와 C++20의 모든 것

 

C++ 전문가가 되는 데 필요한 내용을 조목조목 옮긴 책이다. 코드 품질과 프로그래밍 효율을 동시에 높이는 C++ 프로그래밍 기법을 소개한다. 특히 C++20부터 새로 추가된 기능을 이 책 전반에 걸쳐 소개한다. 이러한 기능은 별도 장이나 절로 따로 빼서 한꺼번에 설명하는 대신, 각 장에 관련된 부분이 있을 때마다 하나씩 소개하며 각 장의 예제도 새로운 기능을 활용하도록 업데이트했다.

 

이 책은 단순히 언어의 문법과 기능만 소개하는 데 머물지 않는다. 프로그래밍 방법론, 재사용 가능한 디자인 패턴, 바람직한 프로그래밍 스타일도 함께 다룬다. 특히 코드를 설계하고 작성하는 단계부터 디버깅하고 협업하는 단계에 이르는 전반적인 소프트웨어 개발 프로세스에 따라 설명한다. 그 과정에서 C++ 언어 자체의 기능과 특이한 점을 마스터할 수 있고, 대규모 소프트웨어 개발을 위한 강력한 기법을 익힐 수 있다. 

 

이 책을 제대로 읽는다면 제대로 알려지지 않았거나 잘못 이해하기 쉬운 기능을 제대로 파악함으로써 C++에 대한 지식의 폭을 넓힐 수 있다. 또한 객체지향 설계 방식을 이해하고 최신 디버깅 기술도 익힐 수 있다. 나아가 일상 개발 업무에 당장 적용할 수 있는 재사용성 관련 기법을 풍부하게 갖출 수 있다. C++20 기반의 더 나은 C++ 프로그래머가 될 수 있는 절호의 기회를 놓치지 않길 바란다.

 

대상 독자

 

- C++를 수년 동안 사용한 경험이 있는 개발자

- C++의 고급 기능에 익숙하지 않거나 사용한 적이 없는 개발자

- C++ 실력을 전문가 수준으로 끌어올리고 싶은 중급 개발자

- C++로 설계하는 방법이나 바람직한 프로그래밍 스타일이 궁금한 사람

- C++ 경험은 부족하지만 처음부터 올바르게 배우고 싶은 사람

 

주요 내용

 

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

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

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

- 모듈, 콘셉트, 3방향 비교, 즉시 실행 함수를 비롯한 C++20부터 새로 추가된 기능을 소개한다.

- 텍스트 포매팅, 범위, 아토믹 스마트 포인터, 동기화 요소, 날짜, 시간대 등 C++20부터 새로워진 표준 라이브러리의 주요 기능을 심도 있게 살펴본다.

2023년 3월 말에 출간된 <전문가를 위한 C++ 5판>을 소개합니다. 이 책의 부제는 입니다. <전문가를 위한 C++>은 번역서로 원서는 2021년 2월에 출간되었으며, 아마존 평점은 4.7점으로 높은 점수를 유지하고 있습니다. 개인적으로 이 책이 번역서로 출간되었다는 것은 국내 C++ 개발자에게 큰 도움을 준다고 생각합니다.  

이 책의 저자는 Marc Gregoire 님이며, 번역은 지난 번과 동일하게 남기혁 님께서 맡아 주셨습니다. 이 어려운 책을 번역해 주신 남기혁 님께 깊은 감사의 말씀을 전하고 싶습니다. 

<전문가를 위한 C++ 5판>은 약 1,690 페이지로 구성되어 있어 휴대하면서 읽기는 어렵습니다. 분철하거나 전자책으로도 출간되어 있으므로 전자책 뷰어가 있으면 전자책으로 만나보는 것도 좋을 것 같습니다. 참고로 필자도 전자책으로 봤습니다. 

 

한빛미디어 평가단에 참가하여 작성한 글이며, 한빛미디어에서 제공해준 책을 읽고 작성했음을 밝힙니다. 

 

이 책의 매력은?

<전문가를 위한 C++ 5판>은 기존 C++17 기준으로 작성된 <전문가를 위한 C++ 4판>에 현재 최신 버전은 C++20을 자연스럽게 녹여낸 작품입니다. C++20은 많은 변화가 포함되었고, 새로운 기능도 다수 추가되었습니다. 주요 변경 사항은 다음 링크에서 확인할 수 있습니다.

<전문가를 위한 C++ 5판>은 6부 34장, 부록 4장으로 구성되어 있습니다.

1부의 제목은 '전문가를 향한 C++ 첫걸음'으로 C++의 기본 소양을 다룹니다. 이 책에서 C++의 개론서에서 모든 내용을 다루지는 않습니다. 그러므로 다른 기본서를 읽은 후, 이 장을 정리하는 차원에서 보는 것을 추천합니다. 이 장에서 다루는 코딩 스타일 가이드는 꼭 한 번 읽고 정리했으면 하는 바람이 있습니다. 

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

3부는 '전문가답게 C++ 코딩하기'입니다. 동적 메모리와 관련된 주제부터 클래스와 객체에 대한 내용, 코드 재사용성과 다형성을 포함한 활용 사례 등을 다룹니다. 그리고 템플릿을 이용한 제네릭 프로그래밍의 개념을 소개합니다. 이외에도 I/O, 에러 처리, 표준 라이브러리, 람다 표현식 등 C++을 사용하며 숙지해야 할 많은 내용을 듬뿍 담고 있습니다. 이 부분은 제대로 보시면 많은 지식을 정리하고, C++ 코드를 작성하며 실수할 수 있는 부분을 줄일 수 있을 것입니다.

4부는 'C++ 고급 기능 마스터하기'입니다. 이 부분에서는 고릅 템플릿 기능과 C++ 멀티스레드 프로그래밍, 그리고 표준 라이브러리 커스터마이스 및 확장 방법에 대해 다루고 있습니다. 개인적으로 C++ 멀티스레드 프로그래밍 부분은 꼭 읽어보시는 것을 추천합니다. 이론으로 배운 지식들을 정리할 수 있고, C++에서 사용방법을 학습할 수 있어 좋았습니다. 

5부는 'C++ 소프트웨어 공학'입니다. 개인적으로 제목이 적합한 것인지 모르겠습니다만 효율적인 C++ 코드 작성법, 테스트, 그리고 디버깅 부분 등은 읽고 정리하시면 도움이 될것 같습니다.  

6부는 '부록'이며, 4개의 장으로 구성되어 있습니다. 부록 A장이 신선한데, 'C++ 면접 예상 질문' 부분입니다. 최근 이 부분이 독자들에게 요구 사항이 많은 것 같습니다. 이 책에도 지면을 할애해서 내용을 수록하고 있으니까요. 개인적으로 재미있는 부분이었습니다.

이 책은 너무나도 양이 방대합니다. 리뷰 시점에 모든 내용을 정독하는 것은 불가능했고, 띄엄띄엄 관심 있는 부분들만 살펴보고 이 글을 작성하고 있습니다. 그러므로 제가 살펴보지 못한 곳에도 매력적인 부분이 있을 것으로 생각합니다. 틈틈히 살펴보며 이 글에 내용을 보강하겠습니다. 

 

마치면서

<전문가를 위한 C++>는 제목에서 보듯이 입문서는 아닙니다. C++을 활용하는 사람들에게 최근에 도입된 문법들을 활용할 수 있도록 가르쳐 주는 책입니다. 이 책은 C++에 대해 경험있는 개발자가 최신 스펙을 이해하고 학습하는 데 도움을 주는 책으로 정리할 수 있습니다.

자바와 유사하게 어느 시점에서 C++ 발전 속도가 느리다고 생각했었습니다 하지만 몇 년전부터 자바와 C++의 개선 속도가 빨라지고 있음을 체감할 수 있습니다. 한동안 C++에 대해 경험하지 못했는데, 이 책을 통해 C++의 개선사항을 알 수 있었습니다.

프로그래밍 언어도 꾸준히 발전하고 있습니다. 원래 계획대로라면 올해 C++23이 도입이 되어야 하는데, 코로나 판데믹으로 인해 지연되고 있다는 것을 알게 되었습니다. 아마도 새로운 문법이 추가되는 것보다는 안정화에 초점을 맞추고 진행하는 것 같습니다. 곧 새로운 스펙이 나올 것으로 예상되는데, C++에 관심 있는 분들이라면 이 책을 통해 C++의 새로 도입된 기능을 한 번 경험해 보시는 것도 좋을 것 같습니다. 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

[한빛미디어 리뷰어][2023년 4월] 전문가를 위한 C++ (개정 5판)

1. 시작

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

2023년 4월달에 소개할 책은 「전문가를 위한 C++(개정5판)」입니다

 


<표지>

 

가장 인기 있는 언어가 C/C++ 입니다.

C++은 굉장히 오래된 언어이며, C언어에서 객체지향 기능이 포함된 언어입니다.

대규모 시스템 프로그래밍에서 많이 사용되며,

안드로이드 커널 또한 C++ 언어를 사용합니다.

C++은 기능이 많고, 성능이 뛰어난 강력한 언어이지만 굉장히 복잡합니다.

복잡한 만큼 배우는 시간이 많이 소요되며, 배우기도 어렵습니다.

대부분의 C++ 책은 굉장히 두껍습니다.

수많은 기능과 레퍼런스가 존재하기 때문입니다.

이번에 소개 할 책은 1691 페이지 입니다.

두께가 엄청납니다.

 

이 책은의 목적은 C++ 초급부터 중급 수준의 실력을 전문 C++ 프로그래머 수준으로 끌어올리는데 있습니다.



2.책의 내용

 

이책에서 다루는 내용입니다.

1장 C++ 기초

2장 C++ 설계

3장 C++ 코딩

4장 C++ 고급기능

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

6장 부록

으로 구성되어 있습니다.

전문가를 위한 책이기 때문에 설계 방법론을 소개하며,

메모리 관리, 재사용 가능한 클래스 작성법

상속, 입출력, 에러 처리, 스트링 현지화, 정규식, 연산자 오버로딩, 템플릿, 컨테이너, 반복자, 범위, 알고리즘, 표준 라이브러리를 소개합니다.

고급 기능으로 표준 라이브러리를 커스터마이징

템플릿 메타프로그래밍, 템플릿 프로그래밍 기법, 멀티스레드 프로그래밍 방법도 다루고 있습니다.

 

전문가가 되기 위해서 중요한 부분이 있으니 바로 ‘소프트웨어 공학' 입니다.

전문가 답게 이책은 소프트웨어 공학을 다루고 있습니다.

효율적인 코드 작성, 다양한 테스팅 방법론, 디버깅 기법, 디자인 패턴, 크로스 플랫폼 코드 작성을 배울수가 있습니다.

 

 

3.핵심 내용

 

책이 두꺼운 만큼 엄청난 내용이 포함되어 있습니다.

책 내용의 50% 이상을 차지하고 있는 가장 많은 지면을 차지하고 있는 부분은 3장입니다.

3장은 ‘전문가답게 C++ 코딩하기’ 주제입니다.

C++에서 코딩하면서 전문가라면 꼭 알아야 하는 메모리 관리, 클래스, 객체, 상속, 템플릿, 입출력, 에러처리, 연산자 오버로딩, 표준라이브러리, 함수 포인터, 함수 객체, 람다 표현식, 스트링 현지화, 정규 표현식 등을 배울수 있습니다.

C++ 에서 메모리 관련 버그가 가장 많습니다.

메모리 관리, 메모리 누수 탐지, 수정 및 해결 방법에 대해서 상세하게 배울수 있습니다.

객체지향 언어인 C++은 객체를 정의하거나 사용할 수 있도록 클래스(Class) 는 가장 핵심적인 기능입니다. 또한 복잡하고, 개념을 이해하는것이 쉽지는 않을것입니다.

C++을 사용한다면 객체지향 개념은 꼭 알아야합니다.

가장 중요한 부분이라고 생각이 됩니다.




4. 책을 읽은 후

 

이 책은 C++을 처음 시작하는 분들이라면 추천드리기가 쉽지는 않습니다.

C++언어는 배워야 할 양이 워낙 방대하고, 기능이 엄청 많기 때문입니다.

내용또한 전문가를 위해서 쓰여진 책입니다.

처음 시작하는 분이 굳이 이책으로 시작을 하고 싶다면 1장 C++ 기초를 통해서 충분히 학습을 하셔야 할 것 같습니다.

 

C++ 언어는 배우기 힘든 언어이지만, 그만큼 강력한 언어입니다.

C/C++언어는 아직도 수많은 시스템에서 사용되고 있으며,

C/C++ 언어를 다루는 프로그래머도 많습니다.

 

시스템, 임베디드, 고성능, 분산, 서버 프로그램을 개발하시고 있다면

C/C++ 은 필수 이며,

전문가로 업그레이드를 준비하시고 있다면 이 책을 추천드립니다.

 

모든 산업 분야에서 인공지능이 파고들고 있는 시기를 프로그래머들은 겪고 있습니다.

분명 격변의 시기이며, 경기가 좋지 않은 때입니다.

국내에는 대부분이 웹프로그래머 거나, Java를 사용하는 분들이 많습니다.

C++ 언어를 다루는 프로그래머는 상대적으로 부족합니다.

아마 C++을 자유자재로 다룰수 있다면, 좀더 귀한 대접을 받을수 있지 않을까 생각을 합니다.

 

C++ 언어라는 타이탄 도구를 하나 더 장착을 하시고,

앞서나가는 주인공이 되길 희망합니다.

 

정말 힘든시기를 보내고 있는 모든 개발자들에게 힘내라고 응원을 보내드립니다.

 

여기서 책의 서평을 마무리 짓겠습니다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

감사합니다

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

 

 

 

요즘의 C++은 참 여러모로 할말도 많고 또 나말고도 한마디씩 거드는 사람들도 많은 언어가 아니던가.

 

놓쳐버리면 어느새앤가 어떤 오픈소스 코드에 슬며시 스며든 새로운 버전의 스펙에 화들짝 놀라게 되곤 한다.

 

 

 

내가 그렇다.

 

내 개인에 한정해서는 주기적으로 리프레시 해줘야 하는 언어이다.

 

4판도 보기는 했지만 ++20이 적용된 코드를 보게될 예정이라 5판이 훨씬 반가웠다.

 

 

 

개정 5판이 나올 정도면 이 책이 다루고 있는 내용과 그것을 풀어내는 방법에 있어 어느 정도는 검증이 이루어졌다고 본다.

 

그럼에도 불구하고 학습이라는게 지극히 개인의 취향과도 관련이 있다보니 스스로에게 맞지 않을 수 있다는 점은 항상 염두해두기를 바란다.

 

요즘 같이 인공지능에 대한 관심과 사용감(?)이 더 좋은 언어들이 많은 시대에 꾸준히 C++를 팔로우 해주기에 저자와 그리고 번역가, 출판사에게 한편으론 감사한 마음이다.

 

 

IMG_1132.JPEG

 

 

C++98 문법만 알고 회사에 들어간 나에게 모던 C++ 너무 어려운 세계였다.

모던 C++ 문법에 대해 공부해야겠다고 생각하고 전문 서적 여러 권을 찾아봤다.

 

전문 서적이고 문법이 자세히 적혀있고, 한 책으로 모던 c++를 다 공부할 수 있는 책을 찾다가 "전문가를 위한 C++"를 보게 되었다.

전문 서적인만큼 정말 자세하고 기본 문법을 모르면 보기 힘들 수 있다.

그리고 책 이름만큼 정말 전문가를 위한 C++ 문법책이다.

 

개정 5판은 C++20 문법에 대해 설명한다.

C++로 개발을 진행하면서 바로 적용할 수 있도록 실질적으로 사용할 수 있는 문법을 알려주고, 적용 방식에 대해서도 예제를 통해 자세히 설명한다.

 

나는 C++를 정말 깊게 파고 싶어서 책을 구매한거라 너무 마음에 들어서 정말 세세한 문법부터 사용 예시를 자세히 설명해 준 점이 좋았다.

하지만 C++를 처음 배우거나 업으로 삼는게 아니라면 이 책으로 공부하다가 흥미를 잃을 수도 있을 거 같다.

가볍게 C++를 접하고 싶은 분들께는 다른 책을 구매하길 권한다.

C++ 프로그래밍 관련하여 다양한 도서들을 접해 보았는데, 이번에 리뷰를 작성하는 “전문가를 위한 C++” 도서는 C++의 모든 면을 보여 주는 느낌을 받았다. 이 도서는 크게 5부분으로 나뉘어 져 있다. 먼저 1,2,3장 까지는 프로그래머의 객관적 실력을 나뉘는 등급을 무시해도 좋을 만큼, C++의 기본을 다질 수 있는 내용으로 구성되어 있는 느낌을 받았다.

기초 문법에서부터 현대 프로그래밍에 사용되는 객체지향 프로그래밍, 클래스, 템플릿, 에러처리에 대한 핵심 내용을 잘 표현하고 있다. 그래서 프로그래머라면 한번 쯤 다시 보고 싶은 내용이라고 해도 좋을 도서의 내용은 알차다고 생각한다.

 특히 3장 후반부에 설명하는 함수와 람다표현식, 표준 라이브러리 외 기타 라이브러리 및 유틸리티는 개발에 따른 소홀함으로 간과 될 수 있는 부분을 보충해 주는 듯 한다. 4장과 5장은 프로그래머 경력이 많은 고급 개발자들에게 읽어 보기를 권고하는 부분으로 추천하고 싶다. 컴파일러 버전이 나날이 높아지고 있고, 이에 따라 컴퓨터 하드웨어 성능을 최고로 이용할 수 있는 다양한 방법론에 대해 심도 있는 내용을 설명하고 있다. 이를 통해 기존 컴파일러에서 잘 알려진 기능이 새롭게 버전업 되는 컴파일러에서는 어떻게 적용되고 프로그래밍 해야 할 지 알려 준다.

#include에 익숙해 진 프로그래머들이 이제는 #import에 적응되어야 할 시기가 다가왔음을 느끼게 한다. C++ 프로그래머 외에 다양한 프로그래밍 언어로 개발하는 프로그래머들도 한번 쯤, 한권 쯤 옆에 두고 참고하기를 권하고 싶다. 하드웨어 사양이 발전에 따라 컴파일러가 변하고 있고, 다양한 프로그래밍 언어를 개발하는 C++  언어가 어떻게 변하고 어떤 기능을 추가해 가는지에 대한 관심은 반드시 필요하다고 본다. 이를 통해 버전업 되는 다양한 프로그래밍 언어의 변화에 빠른 대처가 가능하다고 생각한다.

운도우 환경 개발자외 리눅스, Mac  기반 개발자, 강사, 교수 등 프로그래밍 생태계에 남아 있는 모든 분들게 열심히 추천하고 싶다.

 

 

   "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."  

    전문가를 위한 C++

 

        마크 그레고리 (Marc Gregoire) 지음

        남기혁 옮김

      

 

책표지 포함 1688 페이지에 달하는 두꺼운 공간에 정말 많은 부분을 다루고 있는 책 입니다.

이 책은 C++ 초급, 중급 프로그래머를 주요 대상으로 하고 있지만 C++ 고급 프로그래머 분들도 읽어 본다면

컴파일러 최신 스펙에서의 변화된 모습 및 이미 알고 있던 내용이라도 다시 상기 시킬 수 있기에 좋을 것 같습니다.


대상 독자

C++ 초급/중급 프로그래머를 주요 대상으로 하고 있으며,

C++ 경험은 없더라도 그 외의 언어 경험이 있다면 "1장"을 통해서 충분히 기초를 다질 수 있다고 소개하고 있습니다.

학습 준비

이 책은 Visual Studio c++ 2019 및 gcc 를 주요 컴파일러로 채택하고 있습니다.

2023년 현재는 Visual Studio c++ 2022 , gcc 12.2 (Ubuntu 22.04 사용시 gcc 11.3 설치됨) 가 최신 버전 입니다.

책에서 명시된 컴파일러 버전이 아닌 최신버전을 사용하여도 학습하는데 특별히 문제는 없었습니다.

   [ 컴파일러 준비 ]

    * Visual Studio Community 버전 다운

      https://visualstudio.microsoft.com/ko/vs/community/


    * Gcc 컴파일러

      - Windows

         window 의 경우, Mingw, cygwin, msys 등이 있습니다.

         과거에는 cygwin 을 많이 사용하긴 하였지만, 최근에는 mingw 를 많이 사용하는 것 같습니다.

         아래 경로에서 다운받아서 설치 후 환경 설정을 하면 gcc 컴파일러를 window에서 사용할 수 있습니다.

         mingw 설치 및 사용에 대해서는 추후 정리 해보겠습니다.

        https://www.mingw-w64.org/downloads/


     - Ubuntu

       리눅스의 경우 여러 OS 가 있지만, 주로 많이 사용하는 Ubuntu 기준으로 gcc 컴파일러는 아래의 명령으로

       설치 할 수 있습니다.

       또한 디버깅 환경 설치를 위하 gdb 도 포함하여 설치 합니다.


        apt -y install build-essential gdb


책 구성

이 책은 처음에 얘기한 것 처럼 C++ 프로그래밍에 대한 많은 양의 주제를 다루고 있습니다.

다른 C++ 책에서와는 다르게 초급 프로그래머 부터 중-고급 프로그래머 까지 학습 할 수 있는 주제를 다루고 있다는 것이 특징 입니다.

이 책은 총 6개의 부에 부록 2개 포함하여 36개의 장으로 구성되어 있습니다.

1부에서는 C++를 처음 접하는 프로그래머를 위해 필요한 기초 문법들을 약 170 페이지에 달하는 페이지를 할애하여 C++문법 기초 부터 코드 작성 방법까지 다루고 있습니다.

C++ 문법에 대해 언어나 표준 라이브러리를 깊이 있게 학습하고자 한다면 C++ 관련 다른 문법책을 우선 학습하는 것이 좋습니다.

2부에서는 C++ 을 위한 소프트웨어 설계에 대해서 다루고 있습니다.

반듯이 책에서 설명하는 방식을 따라야 하는 것은 아니지만, 처음 C++을 이용하여 소프트웨어 개발을 시작 한다면 충분히 도움이 될 내용들 입니다.

C++에 적합한 설계 방식, 설계 재사용, 코드 재사용 관련은 읽어볼만 합니다.

그리고,  "4.6 체스 프로그램 설계"르는 예제를 통해 설계에 대한 이해를 돕고 있습니다.

3부에서는 C++ 코딩에 대해 약 820 페이지의 양을 할애하여 심도있게 다루고 있습니다.

흔히 프로그래밍 중에 어려움을 느낄수 있고 필히 고려해야할 부분들을 다루고 있습니다.

메모리 사용 및 관리, 에러처리, 포인터 관련 등은 필히 잘 학습하고 있어야 할 부분인 것 같습니다.

4부에서는 "C++ 고급기능 마스터하기" 라는 주제로 "표준 라이브러리 커스터마이즈, 고급 템플릿, 멀티스레드 프로그래밍"에 대해 다루고 있습니다.

5부에서는 "C++ 소프트웨어 공학" 이라는 주제를 다루고 있습니다.

개론적인 소프트웨어 공학과 실무를 위한 "효율적인 C++ 코드 작성법", "테스트", "디버깅", "설계 기법과 프레임워크", "디자인 패턴", "크로스 플랫폼과 크로스 언어 애플리케이션 개발 방법론" 에 대해서 다루고 있습니다.

규모가 큰 프로젝트에서 C++을 이용하여 개발한다면 꼭 필요한 내용들로 구성되어 있습니다.

6부는 부록으로, "면접 예상 질문", "참고 문헌", "표준 라이브러리와 헤더파일", "UML 기초" 에 대해서 다루고 있습니다.

면접 예상 질문 장은 면접 예상 질문 이라기 보다 학습 했던 내용에 대해서 다시 한번 생각 해보는데 이용하면 좋을 것 같습니다.

UML 기초는 UML 다이어그램 소개 정도로 보는 것이 맞을 것 같습니다.


결론

책 전반 적으로 많은 내용들을 담고 있습니다.

그러다 보니 부분 적으로는 부족한 부분들이 있긴 있습니다.

각 부분들을 학습 하면서 이론 관련은 다른 C++ 책 및 알고리즘, 객체지향 관련 책이나 자료들을 함께 학습 하면 좋을 것 같습니다.

바이블은 아니지만, 차례대로 학습하지 않아도 관심 있는 부분들 위주로 학습할 수 있도록 구성이 잘 나뉘어져 있는 책입니다.


전공자 출신이 아니었기 때문에 처음 프로그래밍을 시작할 때, 러닝 커브가 낮고 생산성이 뛰어난 언어를 먼저 접했고, 프론트엔드 개발을 하고 있는 지금도 그런 언어를 사용해서 개발을 하고 있다.  많은 사람들에게서 `개발자라면 C 정도는 알아야 한다`라는 말을 들어봤고, 사용중인 언어의 모태가 대부분 C이기 때문에 그러한 의견에 대해서도 인정하는 편이었으나, 굳이 공부해야 할 필요성을 못 느꼈다.  

 

그러나 개발을 해오면서 구현이나 라이브러리, 프레임워크를 다루는 실력은 금방 늘었지만, 프로그래밍 방법론이나 디자인 패턴, 코드 스타일부터 설계에 이르기까지 프로그래밍에 대한 기본기는 전공자를 따라가기가 힘들다고 느끼는 상황이 많았다. 언어적인 한계 떄문에 구현하지 못하는 디자인 패턴도 있었고, 아예 들어보지 못했던 생소한 언어의 명세들도 있었다. 그렇게 C나 C++에 대한 궁금증이 쌓여가던 와중에, 이 책을 볼 기회가 생겨서 C++을 처음 공부하게 됐다.

 

전문가를 위한 C++은 제목 그대로 전문가를 위한 서적이다. 1600페이지의 압도적인 분량을 가지고 있지만 언어의 기초적인 부분은 가볍게 설명하고 넘어간다. 그래도 다른 언어를 능숙하게 다뤄본 독자라면 C나 C++을 잘 모르더라도 충분히 이해할 수 있는 수준의 설명이었다. 오히려 이 책의 대상인 '전문가'(C++이 아니더라도)에 적합한 내용이라고 볼 수 있겠다. 

 

대략 200 페이지 분량의 기초적인 내용 이후에는 코드 스타일에 대해 배울 수 있다. 무엇이 좋은 스타일인지에 대해 강요하기 보다는 다양한 코드 스타일에 대한 설명이 나와있다. 이후 본격적인 내용으로 들어가는데, 객체지향, 포인터, 클래스, 상속 모듈, 템플릿, 제네릭 등 거의 C++의 고급 기능들에 대한 설명이 방대하게 수록돼있다. 정독하기에는 너무 압도적인 분량이어서, 내가 주로 사용하는 언어에 있는 기능과 같은 기능 위주로 살펴보았다. 다양한 예제와 연습문제를 통해 각종 기능들에 대해 학습하니까, C++은 물론이고 다른 언어에 있는 동일한 기능들에 대한 이해도도 같이 올라가는 느낌을 받았다.

 

또한 소프트웨어 공학적인 측면에서 충분한 설명이 되어있어서, 많은 배경지식을 얻을 수 있었다. 단순히 언어적인 측면에서의 설명에 국한된 게 아니라, 개발 기법을 주로 논하고 있기 때문에 개발 서적이라기 보다는 전공 서적 같다는 느낌을 많이 받았다. 처음 책을 접했을 때, 단순히 C++에 대해 알기 위해서 가볍게 보려던 마음가짐을 갖고 있었는데, 정독하게 된다면 개발자로서 좋은 학습이 될 것 같다는 생각이 들었다. 오래 걸리더라도 처음부터 끝까지 읽어보고 싶다.

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

한빛미디어에서 '전문가를 위한 C++' 개정판이 나왔다. 책의 제목부터도 '전문가'를 위한 책이라고 말하고 있지만, 그 압도적인 두께와 분량을 보고서도 초보자는 집어 들 엄두조차 내지 못할 압도적인 분위기를 풍긴다. 

 

2304.jpg

 

페이지 수를 대충 보고 넘겼는데 실물 책을 받아드니 엄청난 두께에 놀랍기도 했지만, 이 두꺼운 책에 얼마나 방대한 내용들이 채워져 있을지 기대되기도 한다.

 

23042.jpg

 

비교를 위해 100원짜리 동전을 옆에 세워 두고 찍어 보았다. 책 펼치고 읽을 때 책등 접히는 거 싫어하는데, 이 책은 책등 접히는 걸 피할 수 없는 운명일 것 같다.

 

책 제목 처럼 매우 정직하게 이 책은 초보자를 위한 책이 아니라 C++ 기술을 전문가 수준으로 끌어올리고자 하는 프로그래머와 개발자를 위한 책이다. 기본 C++에 대한 약간의 지식이나 C 또는 Java에 대한 상당한 경험, 프로그래밍 기초 및 컴파일러에 대한 친숙함에 대한 견고한 기초가 필요하다. 물론 초보자가 봐도 상관은 없지만 필요한 부분을 찾아 보기에 초보 서적 보다 시간이 많이 걸려 효율은 좋지 않다. 물론 영원한 초보자는 없기에 처음 부터 한 권으로 공부하는 것도 나쁘진 않을 것 같지만... 

 

C++의 백과사전과도 같은 이 책은 c++의 모든 내용을 다루고 있지만 그중에서도 주요 내용을 뽑으면 아래와 같다.

 

 

- 다양한 프로그래밍 방법론과 고품질 프로그래밍 스타일

- 대규모 소프트웨어 개발에 C++를 활용하는 방법

- 버그 없는 코드를 보장하는 방법

- 객체 지향 설계에 대한 감사

- 더 적은 작업으로 더 나은 코드를 작성하기 위해 라이브러리와 패턴을 사용하는 방법

- C++에서 메모리를 관리하는 가장 좋은 방법​

 

이 책을 처음 보는 사람들도 아마 대부분 'Effective C++' 이란 책은 들어 본 적이 있거나 읽어 본 적이 있을 것이다. 그래서 둘을 비교 하자면 'Effective C++'이 주로 효과 적이고 효율적인 코드를 작성하는 방법이나 사례에 중점을 둔 책이라면, 전문가를 위한 C++은  문법 부터 객체 지향 프로그래밍, 템플릿 메타 프로그래밍, 동시성 및 최적화를 포함한 보다 광범위한 내용을 소개 하고 있다.

 

 프로그래밍의 대한 정보를 그동안 인터넷 검색을 통하여 또는 주변 다른 프로그래머를 통하여 접하면서, 왜? 라는 의문을 가졌던 적이 있었다면 이 책을 추천한다. 분명히 많은 도움이 될 것이다.

 

 

#프로그램언어 C++ 하면 떠오르는 기억이 참 많다. 터보 C를 쓰다가 C++ 언어라는 것이 새로 등장하면서 학생 신분으로 거금을 들여 볼랜드 C++ 정품 패키지를 구입했었다. 그리고 당시 객체지향 관련 책이 많지 않아, 짧은 영어 실력에 C++ 강좌 비디오 테이프를 보며 공부했던 기억이 난다. 지금과 달리 뭐 하나 배우기가 쉽지 않았던 시절이었다.

 

그랬던 C++이 벌써 20버전을 내놓았다. 3년 주기로 언어를 업그레이드 하는 상황이라 올해 23버전이 나오겠지만, 아직 발표가 된 것이 아닌 만큼 현재 최신 버전은 20이라 할 수 있다. 한때, 새로운 언어들의 좋은 기능들을 수용하지 못해, 퇴물이 되는 것이 아닌가 하는 우려도 있었으나, 1983년 정식 등장하여, 2.0, 98, 03, 11, 14, 17, 20 버전으로 지속적으로 발전하며 그런 걱정을 해소해 왔다.

 

덕분에 지나온 긴 세월만큼 C++은 일반 #프로그래밍 외에 #임베디드, 운영체제, #인공지능, 각종 드라이버, 라이브러리, 그래픽 엔진 등 다른 어떤 언어보다 광범위한 곳에서 아직도 활발히 쓰이고 있다.

 

 

이러한 C++ 언어의 파워는 잘 알고 있지만, 내 경우, 주력 언어가 C#과 자바 쪽이다 보니, 필요할 때만 C++을 활용하고 있어서, 내가 지금 어느 버전 정도 알고 있는지 명확하지가 않다. C++20 버전에는 모듈 기능도 추가되고, 예외처리, 소스코드 표현, 람다 함수, 컨테이너 등이 개선되었다고 하는데, 어떤 차이가 있고 어떻게 쓰는지 잘 모른다. 그래서 종합적으로 C++의 모든 것을 살펴 볼 수 있는 '전문가를 위한 C++'을 보게 되었다.

 

#전문가를위한 C++의 부피는 딱 봐도 어마어마하다. 목침이 연상될 정도의 두께로 1691쪽에 달한다. 책상에 놓고 책 내용이 자면서 머릿속에 들어 오면 얼마나 좋을까 하면서 장난 삼아 베어봤는데, 팔보다 이게 편했다. 부피가 두껍다 보니, 가지고 다니며 보기엔 부담이 된다. 분철하거나 아예 전자책을 이용하는 것이 좋을 것이다.

 

 

이 책의 구성은 총 6개의 파트로 되어 있다. 첫 파트는 주로 C++ 언어의 기초 정보를 담고 있다. 초단기 속성 코스, 스트링, 코딩 스타일 같은 내용이 들어 있다. 이곳이 기초 파트이긴 하지만, 초심자 대상의 내용이 아니다. C++ 또는 다른 언어 사용자들이 빠르게 살펴 볼 수 있게 구성되어 있는 것이다. 코딩 스타일 부분은 명명 규칙, 주석, 서식 그런 것을 다루고 있어서, 아직 프로그램이 익숙하지 않은 사람 경우 중요한 참고 내용이 될 수 있을 것이다.

 

파트 2부터는 단계별로 내용이 깊어진다. 추상화, 객체지향 설계, 재사용 설계 같이 C++ #소프트웨어 작성에 기본이 되는 것을 익히고, 파트 3에서는 메모리 관리, 클래스, 객체, 상속, 템플릿, 에러처리, 오버로딩, 표준 라이브러리, 람다식 등 나머지 C++ 기능을 배운다.

 

파트 4, 5는 멀티스레드, 소프트웨어 공학, 효율적 코딩, 테스트, 디버깅, 디자인패턴, 크로스 플랫폼과 같이 중급 이상의 내용을 다룬다. 실제 코딩에 있어 도움이 되는 파트로 전문가의 각종 기술을 익힐 수 있다.

 

 

'전문가를 위한 C++'이 좋은 점은 단순히 이런 기술이 있다고 나열식으로 말하는 것이 아니라, 이런 기능을 어떻게 쓰고, 어떤 문제가 생기면, 어떻게 대처하라는 설명이 아주 상세히 나오고 있다는 것이다. 처리 속도나 대안까지 나오는 거 보면, 다 테스트를 거친 거 같다. 이런 것들이 NOTE, CAUTION 코너로 강조된 부분도 있으나, 책 전반 곳곳에 나오므로 시간이 걸리더라도 꼼꼼히 살펴 보기 바란다. 이 책의 진가는 이런 곳에 숨어 있으므로 절대 놓치면 안 된다.

 

새로운 C++20의 기능들은 C++20 박스로 별도 표시되어 있다. 책을 보면서 그동안 바뀐 기능들이 참 많다는 것을 알 수 있었다. 너무 몰랐다. #3방향비교연산자 는 보면서, 뭔가 웃기기도 하고 신기하기도 했다. 모듈은 유용해 보이는데, 아직 실제 프로그래밍에 써보지 않아서, 어설프게 느껴진다.

 

 

파트 6은 부록을 모은 곳인데, 왜 부록편이 아니라, 굳이 파트 6으로 했나 했는데, 부록A C++ 면접 예상 질문을 보고 이해가 됐다. 본문만큼 중요 파트인 것이다. 책 내용을 부록A에서 요약 정리했다. 기억할 사항 모아 놨고, 면접 질문을 유형으로 답안과 함께 주의할 점까지 일일이 코치하고 있다. 이런 진정한 멘토가 없다.

 

'전문가를 위한 C++'는 이미 고급 이상의 #전문가 수준이라면, 새롭게 도입되는 C++ 기술을 전반적으로 살펴보는데, 좋을 것이고, 중급자에게는 보다 탄탄한 실력을 쌓고, 폭넓은 시각을 가지는 데 도움이 될 것이다. 입문자 경우 이 책이 다소 어려울 수 있으나, 다른 책과 함께 참고해서 진도를 나간다면, 보다 빠른 기술 습득과 함께 중상급 이상의 프로그래머가 어떻게 코딩하고, 프로그램을 개선해 나가는지 작업 모습을 엿볼 수 있는 좋은 기회가 될 것이다.

 

'전문가를 위한 C++'에 어울리는 단어는 딱 명불허전이라 생각된다. 좋은 내용을 담고 있다 보니, 개정5판이 나올 정도로 오랜 기간 많은 프로그래머의 사랑을 받았을 것이다. 깊이 있는 내용과 각종 조언을 담은 이만한 C++ 종합서는 드물 것이다. 책을 두고 가성비를 논하는 건 이상할 수도 있으나, 나에게 있어 이 책의 가성비는 극상으로 느껴진다. 자신의 C++ 실력을 한 단계, 두 단계 발돋움하기 진짜 좋은 책이다.

KakaoTalk_Photo_2023-04-23-22-01-45.jpg

 

C++은 게임 개발, 임베디드, 운영체제 등 우리가 쓰는 모든 곳에서 아직도 많이 쓰여지고 있습니다.

또한 브라우저나 음악 플레이어, 나아가 로봇쪽에서도 쓰고 있습니다. 그만큼 C++은 아직 활용도가 높고, 이 분야에 관심이 있는 사람들이라면

배워볼 언어라고 생각됩니다. 물론 프로그래밍을 배울 때, C, C++을 학부에서 배우는 것도 저수준 언어를 알아두기 위함인 것 같습니다.

이 책은 5판이 발행되어 나올만큼 믿고 볼만한 C++의 바이블 같은 책입니다.무려 1700페이지에 달하는 분량뿐만 아니라 C++20과, 병렬 알고리즘 그리고 파일시스템, 디자인 태턴, 객체지향 등 많은 내용 또한 담고 있습니다.

그래서 이 책은 다른 책들과는 달리 C++언어에 대한 깊이 있는 이해를 목표로 하고 있습니다. C++11부터 추가된 이동 생성자(Move constructor), 이동 대입 연산자(Move assignment operator) 등을 포함한 최신 C++ 언어의 변경 사항을 반영하고 있습니다. 또한, 새로운 예제 코드와 연습 문제도 추가되어 있어, C++ 전문가들에게 필수적인 참고서가 될 것입니다. 그래서 C++을 입문하는 초보자들에게는 권하지 않으며, 책 제목과 같이 C++ 전문가가 되고 싶은 초중급 이상의 분들이 심화 공부를 하기 위해서 보시기에 적합한 것 같습니다.

방대한 양이기 때문에 아직 다 읽어보진 못 했지만, C++에서 필요한 내용들을 대부분 다루었기 때문에 공부나 업무를 하면서도 이 책 한권이면 좋은 레퍼런스 책이 될 것 같습니다. C++에 대한 이해를 높이고 싶으신 분들이라면, 이 한권으로 기초부터 차근차근 공부해나가면 정말 좋은 책이 생각되어 추천 드립니다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

C++를 다시 공부해야겠다 생각했다. AI의 급속한 발전으로 대용량 데이터 처리 및 복잡한 알고리즘을 다루는 데 속도와 효율성면에서 적합한 언어라고 생각하기 때문이다. AI가 발전할수록 C++은 더욱 중요한 역할을 할 것으로 보인다. 

이번에 C++ 공부를 시작할 때 9살 아들과 함께 하려한다. 나 또한 7살에 처음 배운 C언어가 있어 45살이 된 지금에도 컴퓨터 프로그래밍을 쉽게 생각할 수 있도록 만들어 준 계기였다고 생각한다. 아이들에게 가르쳐줄 첫 프로그래밍 언어로 C++을 선택했다. 

첫걸음이 중요하다고 생각한다. 전문가를 위한 C++(개정5판) C++20, 병렬 알고리즘, 파일시스템, 제네릭 람다, 디자인 패턴, 객체지향의 원리를 익히는 확실한 방법 학습을 통해 아이와 함께 성장할 수 있고 미래를 준비할 수 있는 유익한 시간이 되기를 희망해 본다. 

 

[서평]전문가를 위한 C++(개정5판)

 

책소개

더 쉽게, 더 빠르게, 더 깔끔하게!

프로그래머가 알아야 할 C++와 C++20의 모든 것

 

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

『전문가를 위한 C++(개정 5판)』은 C++20에 새로 추가된 기능과 관련 도구를 비롯해 C++에 대한 모든 내용을 코드와 솔루션 위주로 소개한다. 실전 프로그래밍에 적용할 수 있는 현실적인 기법을 다양하게 소개하므로 C++를 더 깊이 이해하려는 프로그래머에게 적합하다.

 

저자소개

마크 그레고리

벨기에 출신 소프트웨어 아키텍트로서 루벤 대학교에서 컴퓨터 과학과 인공지능 분야의 석사 과정을 우수한 성적으로 졸업했다. 소프트웨어 컨설팅 회사인 오디나 벨지움(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: 센서』(2015), 『메이커 매뉴얼』(2016), 『이펙티브 디버깅』(2017), 『리팩터링 2판』(2020), 『전문가를 위한 C++(4판)』(2019)을, 길벗에서 『핵심 C++ 표준 라이브러리(2판)』(2021), 『모던 C』(2022)를, 에이콘출판사에서 『Go 마스터하기』(2018), 『자율주행 자동차 만들기』(2019, 2022), 『스콧 애론슨의 양자 컴퓨팅 강의』(2021) 등을 번역했다.

 

목차

[PART I 전문가를 위한 C++ 첫걸음]

 

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

_1.1 C++의 기초

_1.2 어느 정도 규모 있는 첫 C++ 프로그램

_1.3 정리

_1.4 연습 문제

 

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

_2.1 동적 스트링

_2.2 스트링 포맷 지정

_2.3 정리

_2.4 연습 문제

 

CHAPTER 3 코딩 스타일

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

_3.2 코드 문서화

_3.3 코드 분해

_3.4 명명 규칙

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

_3.6 코드 서식

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

_3.8 정리

_3.9 연습 문제

 

[PART II 전문가다운 C++ 소프트웨어 설계 방법]

 

CHAPTER 4 전문가답게 C++ 프로그램 설계하기

_4.1 프로그램 설계의 정의

_4.2 프로그램 설계의 중요성

_4.3 C++에 적합한 설계 방법

_4.4 C++ 설계에 관련된 두 가지 원칙

_4.5 코드 재사용

_4.6 체스 프로그램 설계

_4.7 정리

_4.8 연습 문제

 

CHAPTER 5 객체지향 설계

_5.1 절차형 사고방식

_5.2 객체지향 철학

_5.3 클래스 세상에 살기

_5.4 클래스 관계

_5.5 정리

_5.6 연습 문제

 

CHAPTER 6 재사용을 고려한 설계

_6.1 재사용 철학

_6.2 코드를 재사용할 수 있도록 설계하는 방법

_6.3 정리

_6.4 연습 문제

 

[PART III 전문가답게 C++ 코딩하기]

 

CHAPTER 7 메모리 관리

_7.1 동적 메모리 다루기

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

 

 

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

_7.4 흔히 발생하는 메모리 관련 문제

_7.5 스마트 포인터

_7.6 정리

_7.7 연습 문제

 

CHAPTER 8 클래스와 객체 이해

_8.1 스프레드시트 예제

_8.2 클래스 작성 방법

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

_8.4 정리

_8.5 연습 문제

 

CHAPTER 9 클래스와 객체 완전 정복

_9.1 프렌드

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

_9.3 메서드의 종류

_9.4 데이터 멤버의 종류

_9.5 중첩 클래스

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

_9.7 연산자 오버로딩

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

_9.9 정리

_9.10 연습 문제

 

CHAPTER 10 상속 활용하기

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

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

_10.3 부모를 공경하라

_10.4 다형성을 위한 상속

_10.5 다중 상속

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

_10.7 캐스트

_10.8 정리

_10.9 연습 문제

 

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

_11.1 모듈

_11.2 헤더 파일

_11.3 언어 핵심 기능에 대한 테스트 매크로

_11.4 static 키워드

_11.5 C 유틸리티

_11.6 정리

_11.7 연습 문제

 

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

_12.1 템플릿 소개

_12.2 클래스 템플릿

_12.3 함수 템플릿

_12.4 변수 템플릿

_12.5 콘셉트

_12.6 정리

_12.7 연습 문제

 

CHAPTER 13 C++ I/O 심층 분석

_13.1 스트림 사용법

_13.2 스트링 스트림

_13.3 파일 스트림

_13.4 양방향 I/O

_13.5 파일시스템 지원 라이브러리

_13.6 정리

_13.7 연습 문제

 

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 사용자 정의 리터럴 연산자 오버로딩

_15.11 정리

_15.12 연습 문제

 

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

_16.1 코드 작성 원칙

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

_16.3 정리

_16.4 연습 문제

 

CHAPTER 17 반복자와 범위 라이브러리

_17.1 반복자

_17.2 스트림 반복자

_17.3 반복자 어댑터

_17.4 범위

_17.5 정리

_17.6 연습 문제

 

CHAPTER 18 표준 라이브러리 컨테이너

_18.1 컨테이너 개요

_18.2 순차 컨테이너

_18.3 컨테이너 어댑터

_18.4 정렬 연관 컨테이너

_18.5 비정렬 연관 컨테이너 - 해시 테이블

_18.6 기타 컨테이너

_18.7 정리

_18.8 연습 문제

 

CHAPTER 19 함수 포인터, 함수 객체, 람다 표현식

_19.1 함수 포인터

_19.2 메서드 및 데이터 멤버를 가리키는 포인터

_19.3 std::function

_19.4 함수 객체

_19.5 람다 표현식

_19.6 std::invoke( )

_19.7 정리

_19.8 연습 문제

 

CHAPTER 20 표준 라이브러리 알고리즘 완전 정복

_20.1 알고리즘 개요

_20.2 표준 라이브러리 알고리즘 심층 분석

_20.3 정리

_20.4 연습 문제

 

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

_21.1 현지화

_21.2 정규 표현식

_21.3 정리

_21.4 연습 문제

 

CHAPTER 22 날짜와 시간 유틸리티

_22.1 컴파일 시간 유리수

 

 

_22.2 duration

_22.3 clock

_22.4 time_point

_22.5 날짜

_22.6 타임존

_22.7 정리

_22.8 연습 문제

 

CHAPTER 23 무작위수 기능

_23.1 C 스타일 무작위수 생성

_23.2 무작위수 엔진

_23.3 무작위수 엔진 어댑터

_23.4 기본 제공 엔진과 엔진 어댑터

_23.5 무작위수 생성하기

_23.6 무작위수 분포

_23.7 정리

_23.8 연습 문제

 

CHAPTER 24 기타 라이브러리 유틸리티

_24.1 어휘 타입

_24.2 tuple

_24.3 정리

_24.4 연습 문제

 

[PART IV C++ 고급 기능 마스터하기]

 

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

_25.1 할당자

_25.2 표준 라이브러리 확장하기

_25.3 정리

_25.4 연습 문제

 

CHAPTER 26 고급 템플릿

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

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

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

_26.4 템플릿 재귀

_26.5 가변 인수 템플릿

_26.6 메타프로그래밍

_26.7 정리

_26.8 연습 문제

 

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

_27.1 들어가며

_27.2 스레드

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

_27.4 뮤텍스

_27.5 상태 변수

_27.6 래치

_27.7 배리어

_27.8 세마포어

_27.9 퓨처

_27.10 멀티스레드 Logger 클래스 예제

_27.11 스레드 풀

_27.12 코루틴

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

_27.14 정리

_27.15 연습 문제

 

[PART V C++ 소프트웨어 공학]

 

CHAPTER 28 소프트웨어 공학 기법

_28.1 프로세스의 필요성

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

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

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

_28.5 소스 코드 관리

_28.6 정리

 

 

_28.7 연습 문제

 

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

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

_29.2 언어 수준의 효율

_29.3 설계 수준 효율

_29.4 프로파일링 

_29.5 정리 

_29.6 연습 문제

 

CHAPTER 30 테스트 숙달하기

_30.1 품질 관리

_30.2 단위 테스트

_30.3 퍼징

_30.4 하이레벨 테스트

_30.5 성공적인 테스트를 위한 팁

_30.6 정리

_30.7 연습 문제

 

CHAPTER 31 디버깅 완전 정복

_31.1 디버깅 기본 원칙

_31.2 버그 분류

_31.3 버그 방지

_31.4 버그 대비

_31.5 디버깅 테크닉

_31.6 정리

_31.7 연습 문제

 

CHAPTER 32 설계 기법과 프레임워크

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

_32.2 고급 기법

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

_32.4 정리

_32.5 연습 문제

 

CHAPTER 33 디자인 패턴

_33.1 의존성 주입

_33.2 추상 팩토리 패턴

_33.3 팩토리 메서드 패턴

_33.4 어댑터 패턴

_33.5 프록시 패턴

_33.6 반복자 패턴

_33.7 옵저버 패턴

_33.8 데코레이터 패턴

_33.9 책임 사슬 패턴

_33.10 싱글턴 패턴

_33.11 정리

_33.12 연습 문제

 

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

_34.1 크로스 플랫폼 개발

_34.2 크로스 언어 개발

_34.3 정리

_34.4 연습 문제

 

[PART VI 부록]

 

APPENDIX A C++ 면접 예상 질문

APPENDIX B 참고 문헌

APPENDIX C 표준 라이브러리 헤더 파일

APPENDIX D UML 기초

 

[서평]전문가를 위한 C++(개정5판) - undefined - undefined - 목차
출처 : 한빛미디어

 

 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

 
 
 

 

 

 

 

 

    드디어 최근 가장 많이 사용하고 있는 C++ 와 관련된 도서를 보게 되었습니다. 기본기는 10년도 더 지난 학생 때 배웠고 그 이후로는 회사 업무로 인해 그냥 그때그때 찾아서 사용하곤 했었는데요. 그러다 보니 점점 발전도 없는 것 같고 똑같은 것만 계속하면서 이슈만 처리하는 기계가 되어가고 있는 것 같아서 정말 아쉬운 부분이 많았습니다. 이번 책으로 또 한 번 실력을 업그레이드시키는 기회가 되었으면 하는 기분으로 차근차근 살펴보도록 하겠습니다.

 

 

 

 

    책의 소개를 보는데 마치 저를 타겟팅해서 말하듯이 적어 둔 듯합니다. C++ 의 설계 방법도 제대로 익히지 못하고 프로그래밍을 하고 있다고 생각하고 있었기 때문이죠. 이미 퇴사하고 없는 사람들의 코드를 보면서 엉망진창인 부분에 대해 지적만 하지 딱히 어떻게 고칠 수 있을까를 생각해 보면 뚜렷한 방법은 없다 보니 더 힘든 상황이었습니다. 이 책을 보고 나면 완전히는 아니더라도 많은 부분이 개선될 수 있지 않을까 생각이 듭니다.

 

 

 

 

    특히 C++ 의 다양한 고급 기능들에 익숙하지 않은 부분에 대해서 많은 도움을 얻을 수 있을 것 같네요. 앞으로 새롭게 만들 프로그램들은 남들에게 내놓아도 부끄럽지 않았으면 하다 보니 공부의 필요성을 많이 느낍니다. 대상 독자는 바로 저네요.

 

 

 

 

    특히 좋은 점은 C++20 에 대한 부분이 별도로 잘 작성되어 있어서 참고하기 좋다는 점 입니다. 개발자마다, 회사마다, 프로젝트마다 사용하는 개발환경과 언어의 버전이 다르기 때문이 이 내용을 잘 알고 있는 것은 실수를 줄이기 위해 정말 중요한 부분이라고 생각합니다.

 

 

 

 

    설계를 곁들인 부분에 대해서는 위와 같이 UML을 통해 설명하거나 그 외 다양한 이미지나 방법으로 자세하게 표현해 줘서 책을 읽는 동안 이해가 안돼서 힘든 부분은 많이 없었어요. 어느 정도 프로그래밍을 해 본 사람이라면 눈으로, 손으로 코딩을 해 가면서 읽는 것이 더 빨리 이 책을 읽는 방법이 될 수도 있겠습니다.

 

 

 

 

    전문가를 위한 책 답게 그저 C++ 언어에 대한 내용만 작성된 것이 아니라, 아니 오히려 C++ 그 자체의 내용보다는 C++로 개발할 때 사용하는 도구들과 디자인 패턴 그리고 다양한 개발 기법들에 대해서 작성된 것이 훨씬 많았습니다. 이런 내용을 보면 이 책은 절대 초심자나 입문자들이 볼 책은 아닙니다.

 

 

 

 

    이미 C++ 에 대해서 어느 정도 알고 있는 개발자들을 대상으로 하다 보니 어떤 때는 설명 자체가 조금 매정하다고 느껴질 정도로 간단하게 넘어가는 경우도 있다. 잘 이해가 되지 않는다면 다른 책들을 함께 보는 것도 좋을 것 같습니다. 이런 부분까지 다루면 책은 천 페이지, 이 천 페이지까지 늘어나 버릴 수도 있겠네요.

 

 

 

 

    물론 자료구조도 배울 수 있다. 엄청 자세하게 다루지는 않아요. 기본적인 내용은 이미 모두 알고 있지 않나요...? stack에 대한 설명만 보자면 위 이미지가 사실상 전부라고 할 수 있습니다. 이미 아는 사람들에게는 이 정도면 충분하지...라는 생각이 들 정도로 간단한 내용이에요.

 

 

 

 

    고급 프로그래밍의 단계로 들어가려면 역시 운영체제 그 자체에 대한 내용을 공부해야 합니다. 이 책에서도 간단하게 언급은 해주고 있지만 일반적인 초보 개발자들에게는 결코 충분한 내용은 아닐 거에요. 이 책을 베이스로 공부한다면 부가적으로 필요한 책들이 상당히 많을 지도 모릅니다. 

 

 

    그 외 테스트, 디자인 패턴 등 다양한 프로그래밍 기법에 대해서도 배울 수 있고 마지막 챕터에서는 면접에서 자주 나올 만한 내용까지 다뤄줍니다. 이 책 한 권을 다 본다면 진짜 왠만한 초급, 중급 개발자 이상의 지식만큼은 쌓을 수 있지 않을까 싶어요. 물론 실전 경험이 더 필요하겠지만 말이에요. 나에게도 정말 많은 도움이 될 책이라 앞으로도 꾸준히 더 곱씹어보면서 읽어봐야겠습니다.

 

끝.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

프로그래밍에 관해 공부를 시작할 때, c언어는 코드만 보아도 어려워보여 학습 순서에서 항상 뒷순위로 밀려났던 언어이다. 하지만 거의 모든 프로그래밍 언어에 참조가 되었기 때문에 기초라도 공부해서 다른 언어를 공부하는데 도움이 되고자 했다. 이 서평은 지극히 c언어의 초심자의 입장에서 작성되었다는 것을 밝힙니다.

 

 

IMG_4137.JPG

 

책을 받자마자 크기와 양에 놀랬고 c언어의 거의 모든 지식이 들어가있겠다고 생각했습니다. 책의 구성으로는 1부에는 c++ 기초를 다지는 초단기 속성 코스, 2부는 c++ 설계방법론, 3부는 c++을 다루는 기법(입출력, 에러 처리, 스트링 현지화, 정규 표현식 사용법, 표준 라이브러리의 기능과 사용법), 4부는 c++에서 잘 알려지지 않은 기능(표준 라이브러리 커스텀, 템플릿 프로그래밍, 멀티프로세서 및 멀티코어)을 소개하고 사용하는 방법을 알려준다. 5부는 엔터프라이즈급 소프트웨어를 작성하는 방법을 설명하고 6부는 부록인데 c++에 관한 기술 면접 예상 질문과 해답을 다양한 참고 문헌과 부연 설명을 통해 제시해주고 UML을 소개하는 것으로 마무리된다.

 

IMG_4139.JPG

 

책을 최대한 빠르게 1회독한 소감은 책의 크기에 비해 상당히 함축적이고 핵심만 알려주는 느낌을 받았다. 그리고 딱딱하게 지식만 전달해주는 것이 아니라 어느 부분에는 무엇이 중요해서 먼저 소개하거나, 후반부로 미루어서 독자가 자연스럽게 궁금증을 해소하고 이해하기 편하게 구성되어 있다. 그리고 가장 좋았던 부분은 솔직히 5번째 개정판이라고 하지만 최신 업데이트 내용을 많이 놓쳤을거라고 생각했지만 이와 다르게 챕터 안에 있는 'NOTE_'와 'CAUTION_'부분을 통해 업데이트 전과 후의 내용을 알려주고 더불어 어떻게 사용하는게 최선의 방법인지 자세하게 알려준다.

 

IMG_4138.JPG

 



1회독만으로 이 책에 나온대로 구사하기에는 초심자에게 버겁다. 하지만 개인적인 생각으로 계속 시간이 날 때마다 읽다보면 어떠한 상황에서 어떻게 구사해야하는지 방법이 떠오르게 될 것이라 생각한다. 자세한 부분은 책을 통해 알면 되니 책을 읽고 나면 적어도 'c++에 이러이러한 기능이 있고 어떠한 상황에서는 이렇게 구현해야한다.'라는 거시적인 시각을 갖는게 책을 통해 얻을 수 있는 최선의 방법이라고 생각한다.

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해 책을 제공받아 작성된 서평입니다."



 

전문가를 위한 C++.

 

제목부터 간결하게 C++에 대한 이야기만 할 것 같은 인상을 주는 책입니다.

 

실제로도 1500페이지 내내 C++에 대한 문법과 사용사례를 설명해 주고 있습니다.

 

방대한 내용을 서술하고 있어서 , 처음부터 쭉 읽는것은 매우 힘들고

 

필요한 부분을 발췌해서 읽거나, 코딩하면서 모르는 부분 혹은 헷갈리는 부분을

 

참조해서 보면 매우 좋을것 같습니다.

 

저는 우선 코딩스타일 부분과 디자인 부분을 흥미롭게 읽었습니다.

 

저는 컴퓨터학부를 전공하긴 했지만, C++를 지금 사용하고 있지는 않아서

 

C++에 대한 지식은 학부때 배운 것이 전부입니다.

 

이번 기회에 C++에 대한 기초지식부터 탄탄히 쌓을 수 있었고, 

 

공식레퍼런스보다 더 자세한 설명으로 추후 c++ 바이블로써도 사용가능할 듯 합니다.

 

C++의 기초부터 코딩스타일, 디자인패턴, 디버깅 까지 아우르는 책을 원하시는 분들껜 강추!!

 

하지만, 코딩을 처음하시는 분들에겐 버거울 수 있으니, 어느정도 개념을 잡으신 분들께 추천드립니다

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

프로그래밍 전공한지가 40년째다. 간만에 프로그래 도서를 보니 감회가 새롭다.

특히 C언어/C++언어는 직접 배워보지를 못하고 독학으로 공부를 해서 그런디 더욱 더 떨림이 컸다.

1979년, 덴마크의 컴퓨터 과학자 비야네 스트롭스트룹은 C++의 선구자적 언어인 "C with Classes" 작업에 착수하였다. 새로운 언어를 만들려는 의의는 박사 논문을 위한 스트롭스트룹의 프로그래밍 경험에서 비롯되었다.

C++는 덴마크 출신 컴퓨터 과학자 비야네 스트로스트룹(Bjarne Stroustrup)가 C언어를 바탕으로 만들었다. C 계열 언어에서 "++"라는 것은 1을 더해서 원래 변수에 대입하라는 뜻이다.

C 언어에 객체지향 프로그래밍을 지원하기 위한 내용이 덧붙여진 것이라고 할 수도 있지만, 애초부터 객체지향을 염두에 두고 만들어진 언어와는 다르게, 단지 더 좋은 C 언어로서 수속형 언어로 취급하기도 한다. 초기의 C++은 C 위에 놓인 트랜스레이터로 구현되었다. 즉, C++ 프로그램을 일단 C 프로그램으로 변환하고 나서 C 컴파일러로 컴파일하는 식이었고 따라서 C 언어에 대해 상위 호환성을 갖는 언어였다.

C++는 객체 지향 프로그래밍을 지원하지만, C++의 객체지향은 다른 객체지향 언어에서와는 성격이 좀 다르다. 대부분의 객체지향 언어에서는 많은 부분을 런타임에 처리하며 메모리를 자동으로 관리하는 반면, C++에서는 최대한 많은 것을 컴파일 타임에 처리하는 것을 지향하며 메모리 등을 프로그래머가 직접 관리하게 하기 때문에 전반적인 클래스 디자인 자체가 상당한 차이를 보이게 된다. Java 등의 다른 객체지향 언어에서와 같은 방식으로 C++ 클래스를 디자인하면 거의 틀림없이 컴파일이 제대로 안 되거나 메모리 문제가 발생한다. 특히 가비지 컬렉션을 지원하는 Java로 입문하여 C++로 갈아타는 테크를 탄 학생이라면 처음에는 메모리가 줄줄 새는 프로그램을 만들게 될 것이다. 반면 C++ 스타일을 숙지하여 다른 객체지향 언어에서 프로그래밍을 하는 경우 특별히 안 될 것은 없지만, 해당 언어의 스타일로 작성한 원어민 코드에 비해 시간이 많이 걸리고 너저분해 보이며 클래스 구조가 경직되어 수정하기 어려워진다. 소멸자가 호출되지 않는 등의 차이점은 있지만 심각한 문제가 되는 경우는 많지 않다.

 

 

2020년에 C++20이 발표되면서 2023년 기준으로 프로그래밍 언어 수위에서 4위 안에 들어 있을 정도로 40년 넘게 굳건한 입지를 자랑하고 있다.

 

일반적인 책자를 보면 프로그래밍 언어를 소개할 때에는 실전 활용법부터 언어 문법 설명에 치우치기 쉽다. 장마다 언어의 주요 기능을 소개한 뒤 문법을 예제와 함게 소개하는 책은 많다.

그러나 이책은 다르게 접근하고 있다. 구체적인 문맥없이 언어의 기본 구성 요소만 나열하지 않고 실전에서 C++를 사용하는 관점에서 소개를 하고 있다는 점이 다르다.

널리 알려져 있지 않지만 업무 흐름을 크게 높이는 기능도 소개하고 초보 프로그래머와 전문 프로그래머를 구분하는 고급 프로그래밍 기법도 소개를 하고 있어서 제법 흥미롭다.

 

이책은 코드 품질과 프로그래밍 효율을 동시에 향상시킬 수 있는 C++ 프로그래밍 기법을 소개하고 있다. C++20 주터 새로 추가된 기능을 이 책 전반에 걸쳐서 소개하고 있다.

 

이 책은 산순히 언어의 문법과 기능만 소개하는 데 머물지 않고 프로그래밍 방법론, 재사용 가능한 패턴, 바람직한 프로그래밍 스타일도 함게 소개를 하고 있다. 코드를 설계하고 작성하는 문제부터 디버깅하고 협업하는 단계에 이르는 전반적인 소프트웨어 개발 프로세스에 따라 설명하고 있다. 따라서 C++ 언어 자체의 기능과 특이한 점을 마스털 할 수 있을 뿐만 아니라 대규모 소프트웨어 개발을 위한 강렬한 기법도 익힐 수 있다.

실제로 작동되는 예제 없이 C++의 문법만 배우면 굉장히 위험해질 수 있다. 전문 C++ 프로그래머라면 단순히 C++ 문법을 아는데 그치지 않고 C++를 올바르게 사용할 줄도 알아야 한다. 이 책을 제대로 읽고 학습하고 연습하였다면 C++ 실력을 전문 프로그래머 수준으로 분명히 높일 수 있다.

 

이 책은 다음과 같이 구성되어 있다.

C++ 기초를 다지는 초단기 속성 코스부터 시작해서 좀 더 복잡한 내용으로 이어진다.

설계의 중요성, 객체지향 벙법론, 코드 재사용의 중요성 등을 설명하고 있다.

전문가처럼 C++를 다르는 기법 또한 소개하고 있어서 유용하게 학습이 가능하다.

또한 C++를 최대한 활용하는 방법도 제시하고 있다.

뒷편에서는 엔터프라이즈급 소프트웨어를 작성하는 방법을 소개하고 최근 소프트웨어 회사에서 흔히 사용하는 소프트웨어 공학기법도 소개하고 있다. 효율적인 C++ 코드를 작성하는 방법, 단위 테스트나 회귀 테스트를 비록한 다양한 테스트 방법론과 C++ 프로그램 디버깅 기법도 설명하고 있다.

이 책은 C++ 클래스 , 메서드, 함수를 빠짐업시 소개하는 레퍼런스가 아닌점을 알아야 한다.

 

Visual Studio Community.png

 

Visual Studio Installer.png

 

우리는 C++20을 학습하기 위해서 준비해야 할 것이 있다.

1. 컴퓨터 한대

2. C++ 컴파일러(마음대로 골라서 사용해도 되지만, 마이크로소프트 비주얼 스튜디오 커뮤니티 에디션을 무료로 사용할 수 있다.)

Visual Studio Community 사이트 > https://visualstudio.microsoft.com/ko/vs/community/

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

c_plusplusbook.jpg

 

 

책을 받고 충격을 받다

보통 책이 배송이 되면 공기가 들어간 통통한 비닐 같은 것에 들어온다거나...

아니면 책 한 권 들어갈 정도의 작은 사이즈의 상자에 담겨 온다.

그런데 뭔가 거대한 박스가 왔길래 내가 뭘 주문했었나? 하고 주웠더니...

뭔가 어마어마하게 묵직한 게...

뭔지 잘 모르겠지만 뭔가 어마어마한 게 들어있다는 생각이 들었고

눈을 크게 뜨고 박스에 쓰인 보낸 사람 정보를 읽어보았다.

으잉?

한빛미디어?

이상하다... 나는 리뷰어다를 오래 해서 뭐 선물 같은 걸 보냈나?

이런 마음으로 상자를 열어 보았는데...

이런 무지막지한 녀석이 나왔다.

이 책은 뭐 하는 책인가?

말 그대로 c++ 책이다.

그것도 전문가를 위한 수준의 책이다.

c++ 공부하기 기본 문법 이런 책은 아니라는 것이다.

내용을 보면 굉장히 많은 범위를 다루고 있다.

그래서 책이 두껍다 그것도 아주 많이...

- 책은 대략 1700페이지 가량의 분량이다.

- 파트가 6개이고

- 챕터가 34개로 구성되어 있다.

1부는 c++ 기초

2부는 c++ 설계

3부는 c++ 전문가 코딩 : 메모리 관리, 적절한 클래스 작성법, 미묘한? 기능, I/O, 등...

4부는 c++ 고급 기능 : c++을 최대한 활용하는 방법, c++ 라이브러리 커스텀 하기, 템플릿 메타 프로그래밍, 멀티 스레드 처리

5부는 c++ 엔터프라이즈급 소프트웨어 작성 방법 : tdd, 디버깅, 디자인 패턴 등..

6부는 부록 기술면접

C++을 왜 할까?

나는 주로 웹 개발을 해와서 c 쪽은 다룰 일이 거의 없었다.

하지만 하드웨어를 다루는 프로젝트들을 호기심으로 좀 해봤는데 웬만한 건 다 C/C++으로 되어있었다.

아무래도 임베디드 쪽은 C 계열 언어가 많이 사용되는 듯하다.

지금도 난리 나고 있지만 아무래도 로보틱스 쪽이 계속 발달하게 되면

C++을 깊게 사용하는 능력이 필요하다고 생각한다.

이 책 왜 이렇게 두껍나?

사실 두꺼운 책들은 다 이유가 있다.

일단. 굉장히 많은 내용을 다 넣었기 때문이다.

어떻게 보면 굉장히 친절하기 때문이라고 할 수 있다.(쉽게 쓰였다는 전제하에)

어디 한번 볼까?

파트 1 챕터 3 코딩 스타일만 해도

말 그대로 챕터 하나를 그냥 다 쓴다.

코딩 스타일의 중요성부터 문서화, 리팩토링을 통한 코드 분해, 설계 기준으로 코드 분해

명명 규칙, 언어의 기능에 스타일 적용하기, 코드 서식, 등..

아주 세세하게 설명을 해준다. 이 정도면 친절한 거 맞는 듯?

파트 2에 챕터 4를 보면

프로그램 설계하는 내용이다. 객체지향 설계, 재사용을 고려한 설계

사실 다 알아야 하는 내용인데 이 주제만 해도 따로 책으로 수두룩 출판되어 나와있다.

다시 생각해 보자면... 어차피 공부할 것들 책 하나에 몽땅 담은 느낌이랄까?

챕터 7 메모리 관리

이런 부분들이 고급 내용에 해당한다고 할 수 있겠다.

동적 메모리 다루기, 배열, 포인터, 메모리 연산, 메모리 관련 문제 해결, 스마트 포인터(이건 나도 첨 봄)

하도 많아서 다 이야기할 수도 없고.

어쨌든 정리하자면 C++으로 개발할 때 필요한 웬만한 내용, 코드 이야기가 아니라 개념적인 내용도 많이 담겨 있어서 아주 두꺼운 책이 되었다. 뭐 그렇다는 이야기

이 책 어떻게 활용할까?

일단 너무 두꺼워서 정공법으로 처음부터 쭉 읽을 순 없고

c++ 프로젝트 하고 싶은 거 나올 때 처음 기초 부분 쭉 진행하고

그다음 코드 보면서 애매한 부분 책에서 찾아봐야겠다.

그리고 전체적으로 프로젝트가 어느 정도 돌아가면

좀 아쉬운 부분이 없나? 생각하면서 이 책을 훑어볼 듯하다.

아무튼 옆에 두고 일단 모니터 받침이나 뭔가 받치고 있어야 할 듯 ㅎㅎ

누구에게 추천하는가?

  • 임베디드 쪽 작업하시는 분

  • C++을 통해서 기존 프로젝트의 효율성을 향상시키고 싶으신 분

  • 두꺼운 배게 좋아하시는 분?

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."


전문가를 위한 C++ 개정5판

주변에서 프로그래밍을 하는 사람이 있다면, 그중에 사용하는 언어가 C++라면, 심지어 어느 정도 연배(?)가 있다면, 모니터 밑을 유심히 살펴보면 <전문가를 위한 C++>가 있는 경우가 꽤 있다. 물론, 끊임없이 읽기 위함이라기보단, 목 건강을 위해 모니터 받침으로 이만한 책이 별로 없기 때문이다. 물론 한빛미디어에서 제공받은 책을 모니터 받침으로 사용할 순 없다. 아쉽게도 전자책인 이유도 있지만, 모니터 암을 쓰고 있기 때문이다. 만약을 위해 종이책도 사두어 책장에 고이 모셔져 있는 상태이다.

<전문가를 위한 C++>는 책의 제목만큼이나 디자인이 너무나도 전문가스러워서 그야말로 C++의 은거기인이 아니라면 이 책을 펴서 읽어볼 엄두도 안나게 생긴 것은 사실이다. 하지만, 외향과는 달리 C++을 입문해서 문법 공부를 마쳐 "난 이제 C++전문가야!"라는 생각을 갖는, 그야말로 더닝 크루거 효과에서 말하는 우매함의 봉우리 꼭대기에 있는 사람을 위한 책이다(그야말로 나를 위한 책인 것 같다!)

더닝 크루거 곡선 (2020, 더닝 크루거 곡선, 내 자신감의 위치는, 고코치 블로그 펌)

<전문가를 위한 C++(개정5판)>은 부록 파트를 제외하면 총 5가지의 파트로 이루어져 있다. 각 챕터의 제목은 아래와 같다.

  1. 전문가를 향한 C++ 첫걸음
  2. 전문가다운 C++ 소프트웨어 설계 방법
  3. 전문가답게 C++ 코딩하기
  4. C++ 고급 기능 마스터하기
  5. C++ 소프트웨어 공학

1700페이지 가까이되는 책이기 때문에 각 챕터에 대한 정리를 하는 것은 지면이 부족하기 때문에 넘어가야 할 것 같다. 전반적인 내용을 요약해 보자면, 책의 시작인 첫 번째 파트에서는 C++의 기초적인 문법들에 대해 익숙하지 않은 독자를 위한 문법들이 있다. 또한 C++에 갓 입문한 독자들을 위한 코딩 스타일에 대해서도 간략히 정리해 두었다. 두 번째 파트부터는 입문자 단계에서 전문가 단계로 진입하기 위한 "소프트웨어 설계"에 대한 내용이 정리되어 있다. C언어를 공부하고 C++로 넘어오게 된다면 뇌의 사고방식을 "절차지향"에서 "객체지향"으로 바꾸어야 하는데, 이 과정에서 수많은 C++포기자가 발생하기 때문에 상세히 설명해 두었다.

세 번째 파트인 '전문가답게 C++ 코딩하기'부터는 본격적인 C++ 만의 문법에 대해 설명한다. C/C++의 난이도를 대폭 높여버린 메모리 관리를 효율적으로 하기 위한 스마트 포인터, 객체지향을 위한 클래스와 객체에 관한 문법들, "#include"를 탈피하기 위한 C++20의 모듈, 템플릿, 입출력, 에러 처리, 연산자 오버로딩, 표준 라이브러리, 다양한 유틸리티 등이 있다. 네 번째 파트는 3번째 파트의 심화 문법에 대한 내용으로, 표준 라이브러리의 커스터마이즈 방법, 템플릿의 고급 사용법, 멀티스레드에 대해 다루고 있다.

마지막 다섯 번째 파트는 이전 파트에서 다룬 C++의 기능들을 보다 효과적으로 활용한 소프트웨어를 만들기 위한 공학적인 방법론들을 다루고 있는데, 개발 프로세스, 효과적인 코드 작성 방법, 테스트, 디버깅, 설계기법, 디자인 패턴, 크로스 플랫폼 개발 방법에 대해 다루고 있다.

책 자체가 둔기 수준으로 두껍다 보니 그 안에서 다루는 내용은 그야말로 대학교 1학년 기초 과목에서 다루는 내용부터 시작해 4학년 졸업작품 만드는 여정 전체를 아우르고 있다. 이 책의 제목에서 나온 '전문가를 위한'이라는 말은 이제 막 C++의 문법 기초를 공부한 초보 개발자가 '전문가로서 발돋움하기 위한' 말에 더 가깝다고 생각이 된다. 물론 1700페이지 분량의 책을 몇 달 내로 마스터해서 전문가가 되려는 목표를 갖기보단, 필요에 따라 틈틈이 내용을 훑어보는 것을 위주로 하는 것이 정신건강에 이로울 것 같다.

#전문가 #한빛미디어 #개정5판 #7번째C++ #1691page #역대급무게

이 책은 옛날 니콘카메라로 유명한 니콘 메트롤로지에서 근무중이고 벨기에 C++ 그룹 창립자인 마크 그레고리가 7번째로 쓴 책이다.(위 이미지의 스캇 클래퍼는 네이버 글감의 오류인듯 싶다. 그렇다고 아래 이미지를 쓰면 발매 미등록이다.). 그리고 다양한 maker책과 go책을 번역하고 etri에 근무중인 남기혁 역자가 번역했다.

기술부채라는 말이 있다. 기술부채는 현 시점에서 더 오래 소요될 수 있는 더 나은 접근방식을 사용하는 대신 쉬운(제한된) 솔루션을 채택함으로써 발생되는 추가적인 재작업의 비용을 반영하는 소프트웨어 개발의 한 관점이다. 즉 소프트웨어의 수준에 따라 운영 단계에서 쏟아야 하는 노력이 달라진다는 의미이다. 나에게 있어 C++이 그렇다. 이미 modern C++이 2011년부터 3년간격으로 꾸준히 나오고 있는데 2006년에 나온 effective C++(물론 개정판이 있지만 아직 못 봄)에서 얘기하는 내용조차 완벽하게 이해하고 적응하지 못 하고 있다.

이 책은 그런 기술부채를 안고 있는 사람들을 위한 책이다. 그 동안의 빛을 모두 탕감할 수는 없겠지만 최소한의 사유와 그에 대한 방법은 제시하고 있다. 물론 그 방법이라는 것이 단번에 해결할 수 있는 단순한 것도 아니고 모든 상황에 통용되는 만병통치약도 아니다. 하지만 cppreference를 돌아다니고 최신 e-book을 봐도 실마리조차 찾을 수 없었던 문제들에 대해서 제시해주고 있다는 점에서 놀라운 책이다.

이 책의 장점은 책제목과는 역설적으로 사실 전문가가 아니라 c++ 중급자를 위해서 쓰여진 책이다. 전문가를 꿈꾸는 사람을 위한 책이라는 뜻이다. 특히 앞부분에서는 C++의 기초적인 내용들을 다루고 뒤로 갈 수록 좋은 내용이 수두룩하다.

이 책의 단점은 너무 무겁다는 것이다. 가방에 넣고 돌아다니다가 허리와 목이 수시로 뻐근한 책이다. 그리고 처음 보는 내용들을 읽을때는 무지하게 졸립다.

만약 이 책을 구입했는데 1장부터 내용이해가 안 되거나 실습코드를 입력하기 귀찮은 독자는 C++11버전부터 보시기를 추천한다. C++11버전 책의 예시설명으로 설계된 소스코드를 5판까지 계속 동일한 맥락으로 사용하고 있기 때문이다. 물론 절판이라 새로 구입하기는 어렵고 devicemart같은 곳에서 재고를 판매하고 있다. (한빛미디어에서 구판들을 재출판해달라고 조를 수 있다.링크:https://www.hanbit.co.kr/store/books/look.php?p_code=B6704465567)

최근에 개발자 공부를 파이썬으로 쉽게 쉽게 하는 것에 익숙하다보니 C++을 보는 것이 마냥 쉽지는 않다. 그리고 rust나 go나 v나 carbon처럼 다양한 언어들이 C++을 대체할 듯이 나오고 있어 C++을 굳이 공부해야 할까 싶지만 대부분 응용 application 성능측면에서 C++보다 최소 2배에서 최대 5배까지 C++이 빠르다는 것은 부인할 수 없는 사실이다.

많은 개발자들이 C++을 보통 괴랄레프 라고 많이들 피하는 것이 사실이다. 하지만 심각하게 과장해서 비유하자면 의대생이 칼날이 무섭다고 메스를 피하는거나 비슷하다고 개인적으로 생각한다. 모든 의사가 살을 째야 하는 것이 아닌것처럼 모든 개발자가 C++이 필요한 것은 아니고 메스 없이 로봇이 수술하는 시대에 있듯이 다른 언어들도 많이 있고 뭐든 다 해줄거같은 chatGPT등이 있지만 응급수술에 메스가 필요한 상황이 있는것처럼 C++이 필요한 상황이 있다. 그 때 가서 기술부채 빛을 갚으려고 하면 늦을 수도 있기 때문에 미리미리 준비하기 위해서 이 책을 많은 개발자가 함께 읽기를 추천한다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

일단 책을 받고 든 생각은...이게 책인가 싶었다. 책이 아니라 둔기 느낌이었다. 총 1700여페이지에 목차만 30페이지를 할애하고 있다.

책을 처음부터 정독하는 것도 방법이 될 수 있겠지만 그보다는 사전 느낌으로 그때그때 찾아가며 공부하는 고런 느낌으로 접근해야 할 것 같다. 개인 프로젝트를 하나 해보면서 공부하면 효과가 좋을 듯 하다.

기초적인 문법 지식은 가지고 있어야 할 것 같다. 크게 파트 다섯 개로 구성되어 있는고 첫 번째 파트에서 문법과 표준 라이브러리에 대한 설명을 해주고 있긴 하지만 처음 접하는 사람들을 위한다기보다는 이런게 있었지 하고 짚고 넘어가는 느낌이었다. 중간중간 C++20에서 새로 추가된 문법들을 접할 수 있어 유익했다.

두 번째 파트는 소프트웨어 개발자로 이제 막 시작하려는 나에게 가장 필요한 내용들로 구성되어 있었다. 프로그램을 어떻게 설계해야 하는지 고려해야 할 것들을 다루고 있고, 어떤 코드를 재사용해야 하는지, 장단점은 무엇인지 등을 다루고 있다.

세 번째 파트와 네 번째 파트는 본격적으로 실무에 적용할 수 있는 기술과 고급 기술을 다루고 있는데 엄청난 양이라 다 보기는 힘들 듯 하고...사전 느낌으로 활용해야 할 것 같다. 한 번 정독해보고 싶은데 가능할지 모르겠다.

각 장마다 연습문제가 포함되어 있어 공부에 좀 더 도움이 되었다. 책 구성 자체가 대학 전공서 느낌이 나는 것 같다. 여기 있는 내용들을 온전히 이해할 수 있는 날이 온다면 좋겠다 ㅎㅎ...

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

부록/예제소스
자료명 등록일 다운로드
DOWNLOAD 예제소스 2023-05-04 다운로드
결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

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

닫기

도서판매처

리뷰쓰기

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

* 리뷰 작성시 유의사항

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

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

오탈자 등록

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

도서 인증

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

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

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

자료실