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

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

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

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

한빛미디어

번역서

판매중

  • 저자 : 마크 그레고리
  • 번역 : 남기혁
  • 출간 : 2023-03-30
  • 페이지 : 1692 쪽
  • ISBN : 9791169210898
  • eISBN : 9791169216685
  • 물류코드 :11089
  • 구판정보 :이 도서는 <전문가를 위한 C++(개정4판)>의 개정판입니다. 구판 정보 보기
  • 초급 초중급 중급 중고급 고급
4.9점 (34명)
좋아요 : 8

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

프로그래머가 알아야 할 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++(개정 5판)』(2023)을, 길벗에서 『핵심 C++ 표준 라이브러리(2판)』(2021), 『모던 C』(2022), 『Go 100가지 실수 패턴과 솔루션』(2023)을, 에이콘출판사에서 『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부터 새로워진 표준 라이브러리의 주요 기능을 심도 있게 살펴본다.

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

장점

1.   C++ 언어에 대한 이해도를 높일 수 있으며, 코드 품질, 프로그래밍 효율,C++20의 새로운 기능 등을 다룰 수 있음

2.   C++ 프로젝트 경험이 있는 개발자를 대상으로하여 보다 현업에 쓰이는 고급 기능을 다룸

3.   코딩 실력 뿐만 아닌 하드웨어에 대한 이해도를 높일 수 있으며 C++ 면접 예상 질문을 다룸

단점

1.   자세하고 방대한 양을 다루어 간결한 걸 좋아하는 분들에게는 단점일 수 있음

후기

1. 최근 코딩 테스트로 인해 C++을다시 보는 중이다. 책을 읽으면서 책의 내용과 난이도에 대해 자세하게 설명되어 있어서 훓어보는걸 좋아하는사람에게는 책의 난이도가 높아 어렵다고 느낄 수 있을거 같다. 책의 후반에는 면접 예상 질문도 있어저자의 개발하면서 느낀 경험을 공유해주는 책이라고 느꼈다.

 

화면 캡처 2023-08-31 190842.png

 

 

 

서평 : 4줄 요약

1. C++의 문법에서 부터 명명 규칙, 클래스 설계 방법, 메모리 관리, 표준 라이브러리 등 넓은 범위를 다루고 있다.

2. C++을 사용하는 프로그래머라면 한 번쯤 꼭 읽어보면 좋을 듯 한 책!

3. 정독하기에는 책의 두께 때문에 힘들지도 모르겠다! but 필요한 부분만 읽어봐도 내용이 상당히 좋다!!

4. 내용은 C++ 기본 서적에서는 볼 수 없는 알찬 내용! 진짜 C++을 사용하는 방법을 알 수 있다!!!

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

전문가를 위한 도서 C++ 입니다. 보통 우리는 프로그램을 배울 때 다양한 언어를 배우고 용도에 맞쳐 언어를 선택하게 됩니다. 그러면서 C, C# , C++ , JAVA 등 다양한 언어를 알게 됩니다. 이번에 살펴볼 언어를 C++ 입니다. C++은 C언어가 가지고 있는 문제점 단점을 보안하여 객체지향으로 다양함을 지원하는 언어 입니다. 보통 자바나 C#으로 구현할수도 있지만 대용량 데이터 처리와 빠른 속도를 위해서는 C++을 할 수 밖에 없습니다. 그만큼 C++ 전문가적인 언어라고 할 수 가 있습니다. 

 

 

그렇기 때문에 다른언어를 잘 하는것보다 C++을 잘 한다면 다른언어를 물론 프로그래밍을 확실히 더 많은 지식을 쌓을 수가 있습니다. 이 책은 한빛미디어에서 나온 책으로서 Marc Gregoire  저자로서 C++에 바이블이라고 불리우는 책입니다.

 

 

약 1500페이지가 넘는 C++언어와 최신 트렌드인 C++20, 병렬 알고리즘, 파일시스템, 제네릭 람다, 디자인패턴, 객체지향의 원리를 익히는 확실한 방법을 가지고 있습니다. 초기에 구성은 C++ 기초를 배울 수 있도록 성되어 있습니다. 거기서 기초를 배우면 이제는 우리가 프로그램의 유연성과 유지보수를 위해 많이 사용하는 객체지향을 배울 수가 있습니다. 

 

 

 

이책에서 나온 소스코드를 볼 수가 있습니다. 이 소스코드를 한빛미디어와 wiley 사이트에서 제공이 됩니다. 그렇기 때문에 어렵지 않게 소스를 구해서 구현해볼수가 있습니다. 전문가를 위한 C++ 도서는 처음 접하는 초보자부터 C++ 오랫동안 사용하는 개발자에게도 많은 도움이 되는 책입니다. 흔히 우리는 개발자책을 보는데 있어서 1년 , 2년 매년 마다 보는거와 알아든는게 틀리기 때문에 이책 하나로 오랫동안 내공을 쌓을수가 있습니다.

 

 

전문가를 위한 C++에서는 각 파트마다 다양한 주제를 가지고 공부를 할 수가 있습니다. 전문가답게 C++을 실행하는 방법부터 설계 방법 그리고 디자인패턴과 알고리즘 정복 그리고 실습까지 완벽하게 구현을 할 수가 있으며, C++20의 신규기능을 가지고 있어 모듈,컨셉트, 3방향 비교등 다양하게 구성을 할 수가 있습니다. 

 

 

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

 

 

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

 

 

CHAPTER 3 코딩 스타일

 

 

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

 

 

CHAPTER 5 객체지향 설계

 

 

CHAPTER 6 재사용을 고려한 설계

 

 

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 표준 라이브러리 알고리즘 완전 정복

 

 

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

 

 

CHAPTER 22 날짜와 시간 유틸리티

 

 

CHAPTER 23 무작위수 기능

 

 

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

 

 

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

 

 

CHAPTER 26 고급 템플릿

 

 

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

 

 

CHAPTER 28 소프트웨어 공학 기법

 

 

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

 

 

CHAPTER 30 테스트 숙달하기

 

 

CHAPTER 31 디버깅 완전 정복 

 

 

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

 

 

CHAPTER 33 디자인 패턴

 

 

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

 

 

전문가를 위한 C++에서는 이만큼 다양한 목차를 가지고 있고 배울 수 있도록 되어있습니다. 저는 자바개발자인데 보통 이렇게 할려면 약 4~5권을 책의 봐야합니다. 하지만 이렇게 하나의 책으로 묶여 있는것을 정말 대단하다고 생각합니다. 이책이 왜 바이블로 불리워지면 5판까지 나오는 만큼 좋은 책이라는것을 알 수가 있습니다. 

 

 

 

전문가를 위한 C++를 봐야하는 이유는 단순합니다. 그이유는 아는것과 모르는것의 차이라고 볼 수가 있습니다. 내가 이책을 한번 봤다면 다양한 기능을 알게 됩니다. 그러면 개발과 코딩에 있어서 기술을 접할 수 있고, 아 이러한 기술이 있어지 라고 생각하는 것이라고 할 수가 있습니다. 그렇기 때문에 저는 무조건 프로그램 책을 한번 다 돌리는것을 중요하도고 늘 만합니다. 그만큼 공부할것이 많고 많아지기 때문입니다. C++ 전문가를 위한 책을 원한다면 적극 추천합니다.

 

#C++ #한빛미디어 #전문가를위한 C++ #알고리즘 #객체지향 #제네릭 #람다 #디자인패턴 # 파일시스템전문가를 위한 도서 C++ 입니다. 보통 우리는 프로그램을 배울 때 다양한 언어를 배우고 용도에 맞쳐 언어를 선택하게 됩니다. 그러면서 C, C# , C++ , JAVA 등 다양한 언어를 알게 됩니다. 이번에 살펴볼 언어를 C++ 입니다. C++은 C언어가 가지고 있는 문제점 단점을 보안하여 객체지향으로 다양함을 지원하는 언어 입니다. 보통 자바나 C#으로 구현할수도 있지만 대용량 데이터 처리와 빠른 속도를 위해서는 C++을 할 수 밖에 없습니다. 그만큼 C++ 전문가적인 언어라고 할 수 가 있습니다. 

 

 

그렇기 때문에 다른언어를 잘 하는것보다 C++을 잘 한다면 다른언어를 물론 프로그래밍을 확실히 더 많은 지식을 쌓을 수가 있습니다. 이 책은 한빛미디어에서 나온 책으로서 Marc Gregoire  저자로서 C++에 바이블이라고 불리우는 책입니다.

 

 

약 1500페이지가 넘는 C++언어와 최신 트렌드인 C++20, 병렬 알고리즘, 파일시스템, 제네릭 람다, 디자인패턴, 객체지향의 원리를 익히는 확실한 방법을 가지고 있습니다. 초기에 구성은 C++ 기초를 배울 수 있도록 성되어 있습니다. 거기서 기초를 배우면 이제는 우리가 프로그램의 유연성과 유지보수를 위해 많이 사용하는 객체지향을 배울 수가 있습니다. 

 

 

 

이책에서 나온 소스코드를 볼 수가 있습니다. 이 소스코드를 한빛미디어와 wiley 사이트에서 제공이 됩니다. 그렇기 때문에 어렵지 않게 소스를 구해서 구현해볼수가 있습니다. 전문가를 위한 C++ 도서는 처음 접하는 초보자부터 C++ 오랫동안 사용하는 개발자에게도 많은 도움이 되는 책입니다. 흔히 우리는 개발자책을 보는데 있어서 1년 , 2년 매년 마다 보는거와 알아든는게 틀리기 때문에 이책 하나로 오랫동안 내공을 쌓을수가 있습니다.

 

 

전문가를 위한 C++에서는 각 파트마다 다양한 주제를 가지고 공부를 할 수가 있습니다. 전문가답게 C++을 실행하는 방법부터 설계 방법 그리고 디자인패턴과 알고리즘 정복 그리고 실습까지 완벽하게 구현을 할 수가 있으며, C++20의 신규기능을 가지고 있어 모듈,컨셉트, 3방향 비교등 다양하게 구성을 할 수가 있습니다. 

 

 

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

 

 

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

 

 

CHAPTER 3 코딩 스타일

 

 

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

 

 

CHAPTER 5 객체지향 설계

 

 

CHAPTER 6 재사용을 고려한 설계

 

 

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 표준 라이브러리 알고리즘 완전 정복

 

 

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

 

 

CHAPTER 22 날짜와 시간 유틸리티

 

 

CHAPTER 23 무작위수 기능

 

 

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

 

 

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

 

 

CHAPTER 26 고급 템플릿

 

 

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

 

 

CHAPTER 28 소프트웨어 공학 기법

 

 

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

 

 

CHAPTER 30 테스트 숙달하기

 

 

CHAPTER 31 디버깅 완전 정복 

 

 

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

 

 

CHAPTER 33 디자인 패턴

 

 

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

 

 

전문가를 위한 C++에서는 이만큼 다양한 목차를 가지고 있고 배울 수 있도록 되어있습니다. 저는 자바개발자인데 보통 이렇게 할려면 약 4~5권을 책의 봐야합니다. 하지만 이렇게 하나의 책으로 묶여 있는것을 정말 대단하다고 생각합니다. 이책이 왜 바이블로 불리워지면 5판까지 나오는 만큼 좋은 책이라는것을 알 수가 있습니다. 

 

 

 

전문가를 위한 C++를 봐야하는 이유는 단순합니다. 그이유는 아는것과 모르는것의 차이라고 볼 수가 있습니다. 내가 이책을 한번 봤다면 다양한 기능을 알게 됩니다. 그러면 개발과 코딩에 있어서 기술을 접할 수 있고, 아 이러한 기술이 있어지 라고 생각하는 것이라고 할 수가 있습니다. 그렇기 때문에 저는 무조건 프로그램 책을 한번 다 돌리는것을 중요하도고 늘 만합니다. 그만큼 공부할것이 많고 많아지기 때문입니다. C++ 전문가를 위한 책을 원한다면 적극 추천합니다.

 

#C++ #한빛미디어 #전문가를위한 C++ #알고리즘 #객체지향 #제네릭 #람다 #디자인패턴 # 파일시스템

 

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

 

이번에 소개할 도서는 전문가를 위한 C++ 이다. 

 

 

 

 

 

1600페이지가 넘는 방대한 책이며, 전문가의 냄새가 풀풀 풍기는 도서이다.  

 

총 다섯가지의 파트로 나눠져 있다. 

 

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

 

그리고 부록으로 면접 예상 질문과 표준라이브러리 헤더 파일 그리고 UML 기초가 포함되어 있다. 

 

파트 1에서는 C++의 기본적인 문법을 설명해준다. C++의 코딩 스타일을 파악할 수 있는 파트이다. 

 

파트 2에서는 객체지향적이며 재사용에 최적화된 코드를 설계할 수 있는 방법에 대해 설명해준다. 

 

파트 3은 본격적으로 C++의 핵심을 다루기 시작한다. 메모리 관리, 클래스, 상속, static, 템플릿, I/O, 에러처리, 연산자 오버로딩, 표준 라이브러리 컨테이너, 람다 그리고 알고리즘과 정규식까지. 전문가로 향할 수 있는 파트이다. 

 

파트 4에서는 C++의 고오급 기능을 설명해주면서 OS 적인 측면, C++에서 멀티스레드 프로그래밍을 다루는 장이다. 

 

파트 5는 소프트웨어 공학, 테스트, 디버깅, 프레임워크, 디자인 패턴에 대해 다룬다. 

 

 

C++ 전문가가 되기 위한 커리큘럼이 담겨있는 도서이다. 

 

전문가를 위한 C++

 

 

오랜만에 묵직하고 든든한 책을 하나 만났습니다. C++은 오래된 언어이고 사용되는 곳도 많고 아직도 계속 진화하고 있다 보니 이를 총체적으로 다루는 책들은 압도적인 책의 두께를 보여주곤 합니다. C++의 바이블이라고 볼 수 있는 C++의 창시자인 Bjarne Stroustrup의 저서인 "Programming : Principles and Practice Using C++"라는 책이 대표적인데, 이 책과 버금가는 분량의 책이 또 있습니다. 바로 이 책, Marc Gregoire 씨가 글을 쓰신 "전문가를 위한 C++"이라는 책입니다.

이 책은 C++ 중급자를 위해 쓰였으며, C++의 기초적인 내용부터 고급 주제까지 다양한 내용을 다루고 있습니다. C++의 기본적인 문법, C++의 고급 기능, C++의 소프트웨어 설계 방법, C++을 통한 소프트웨어 공학 등의 내용을 폭넓게 다루고 있습니다.

무엇보다 C++의 기초적인 내용부터 고급 주제까지 다양한 내용을 다루고 있어서 C++ 언어에 대한 전반적인 이해를 높일 수 있습니다. C++20의 새로운 기능들을 별도 표시하여 제공하고 있어 최신 C++ 언어의 지원 내용도 파악할 수 있습니다. 부록으로 C++ 면접 예상 질문과 본문 요약정리를 제공하고 있어 C++ 면접을 준비하는 데도 도움이 될 수 있습니다.

전반적으로 만족스럽지만, 한 가지 아쉬운 점이라면, 책 자체가 들기도 쉽지 않을 만큼 두꺼워 초보자가 접근하기에는 부담스러울 수 있습니다. 또한 다루는 내용이 너무 많아 필요한 내용을 빠르게 찾기 어려울 수 있습니다. 목차와 색인 등을 활용해서 필요한 내용을 찾아서 읽는 것도 좋은 방법이 될 것 같습니다.

이 책은 C++ 언어를 전반적으로 이해하고자 하는 중급자, C++로 개발할 때 사용하는 도구들과 디자인 패턴, 다양한 개발 기법들에 대해 알고자 하는 개발자, C++ 면접을 준비하고자 하는 개발자들에게 도움을 줄 수 있는 책입니다.

 

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

C++ 파도 파도 끝이 없는 언어입니다.

그 중 C++의 명서는 어떤 것이 있을까요?
저는 “effective C++”과 “전문가를 위한 c++”이 생각납니다.
두 책 모두 C++로 프로그램을 설계하고 코딩하는데 매우 도움됩니다.

1. 책의 내용

  • 내용
    • C++20의 모듈화 : 가끔 c++20에 나오는 내용도 나옵니다.
    • 예외 처리
    • stl
    • 디자인 패턴
    • 메모리 쓰는 법 이 중 가장 흥미로웠던 부분은 29.4 프로파일링 부분이었습니다. 프로그램의 성능은 어떻게 테스트 하는지 궁금했는데, 이에 관한 서술도 간략히 나옵니다.

2. 책의 장점

  1. c++ 개발의 전반적인 도움을 줍니다.
    • 필요할 때마다 찾아보면 좋을 것 같습니다.
  2. 예제 코드가 많습니다.
    • 뇌를 자극하는 stl급으로 돌아가는 예제가 풍부합니다.
  3. 번역도 깔끔합니다. 

3. 책의 단점

  1. 두껍습니다.
    • 스터디를 만들어서 한 챕터씩 발표하거나, 필요한 부분만 발췌해서 읽어야겠습니다.

해당 책을 리뷰할 수 있어서 정말 행복했습니다. 한빛미디어에 감사를 표합니다.
“한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.”

 


Professional C++은 C++ 언어의 최신 기능을 소개하면서 동시에 언어의 디테일한 부분까지 다루는 1600여 페이지의 두꺼운 바이블입니다. C++은 오랫동안 발전하고 기능이 지속 추가되면서 상당히 복잡하고 거대해졌습니다. 대부분의 개발 시에는 언어 전체의 일부만을 사용하는 것이 일반적입니다. 예를 들어 비즈니스 로직을 만들 때는 전통적인 문법을 사용하여 효율성을 높이고, 라이브러리와 같은 공통 로직을 만들 때는 심도 있는 템플릿 문법이나 최신 기법을 사용하여 효율성을 높이는 경향이 있습니다. 높은 성능과 탁월한 이식성을 가지면서 낮은 수준에서 높은 수준까지 다양한 분야에서 사용하다 보니 이렇게 오래된 문법과 최신 기법의 공존이 불가피하며, 개발자들은 구현 상황에 따라 기술 간극을 매우기 위해 레퍼런스 바이블을 찾아볼 수밖에 없습니다. 이 바이블 책의 첫번째 가치는 여기에 있습니다.

 

저자인 마크 그래고리는 MVP summit 행사 때 옆자리에 앉은 적도 있었고 몇 번이나 회의장에서 토론을 가진 적이 있습니다. 푸근한 인심좋은 옆집 아주머니 모습이지만, 토의가 시작되면 대단히 열정적이고 C++에 대한 깊은 생각과 의견을 뿜어내어 주위 사람들을 단번에 집중시키는, 요즘 말로 소위 C++계의 인싸이며, C++ 메일링 리스트에서도 가장 적극적으로 의견을 내는 분 중 하나입니다. Professional C++ 이라는 전통 있는 타이틀의 단독 저자로서, 저술한 책에서 디테일을 놓치지 않으려한 문장을 통해 그때의 열정적인 모습이 떠올랐습니다.

 

Professional C++의 포지션은 사실 조금 애매합니다. 입문자가 보기에는 적절치 않고, 숙련된 사용자들을 위해서는 The C++ Programming Language나 cpp reference가 있기 때문입니다. 혹은 Effective C++ 처럼 매혹적인 팁이나 무릎을 칠 만한 기법이 쏟아지지도 않습니다. 너무 고급지지도, 입문자를 이해시키지도, 응용/활용 도서도 아닙니다. 그리고 술술 읽어 지는 잘 저술된 책과 비교하면 뭔가 문장이 장황한 느낌도 있습니다. 또한 내용 구성이 복잡하여 중요한 내용과 그렇지 않은 내용을 딱 구분하여 읽기도 어렵습니다.

 

하지만 (원서 기준) 새롭게 추가된 C++20의 개정사항을 중심으로 효과적으로 C++ 코드를 디자인하는 변경된 방법이나 문제를 새롭게 해결하는 방법, 테스트/디버깅 사례를 실제 코드 위주로 설명하는 내용은 기존 개발자들이 변화된 기술에 적응하는데 필요한 부분입니다. 업무 중에 읽기는 부담도 되고 내용도 방대하므로, 휴일에 문법 전체를 다시 한번 훑는다고 생각하고 빠르게 읽는다면 최신 기법으로 디자인된 코드를 작성하는 방법이나 유용한 팁을 얻을 수 있고, 이를 포함한 "많은 것"을 배울 수 있습니다. 특히 그 "많은 것"은 저자가 오랜 기간 C++ 전문가들과 토론한 내용을 바탕으로 한 결과로, 폭넓고 올바른, 정답에 가장 가까운 방법입니다. 인터넷의 기술문서를 찾고 올바르지 않은 내용으로 헤매는 시간을 생각해 보면 이 책의 가치를 다시 가늠해 볼 수 있습니다.

 

이미 저자는 C++ 23을 반영한 Professional C++ 6판 원고를 작성하고 있으며 올해 안에 새로운 도서가 나올 예정이라고 합니다. 새 책의 번역본도 접하게 되어 우리나라 개발자들에게도 도움이 되기를 소망합니다.

 

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

한빛미디어의 전문가를 위한 C++ 개정 5판


 

 

2020년에 발표된 C++20의 새로 추가된 기능을 포함한다. 개정된 내용을 따로 빼서 설명하지 않고 전반적으로 내용과 예제를 업데이트 했다고 보면 된다.



이 책의 대상 독자는 C++에 능숙하진 않지만 처음부터 제대로 배워보고 싶은 사람부터 남에게 보여주어도 부끄럽지 않은 코드를 짜고 싶은 중급자까지 다양하다.


이제 막 C++ 기초 개념을 떼고나서 방학을 맞은 학부생 2학년부터 현업 주니어레벨의 개발자까지를 목표로 하고 있는 책인만큼 코드를 깔끔하게 짜서 프로그래밍 효율을 높이는 법을 배울 수 있다. 


 

책의 목차 구성



챕터1 : C++ 기초, 스트링, 스트링 뷰 다루는 방법, 쉬운 코드 작성법

 

챕터 2 : C++ 설계 방법론

 

챕터 3 : 메모리 관리를 위한 방법, 재사용 가능한 클래스 작성법, 상속, 입력과 출력 다루는 법, 에러 처리방법, 스트링 현지화 방법, 정규 표현식 사용법, 연산자 오버로딩, 템플릿 작성법 등

 

챕터 4 : 잘 알려지지 않은 고급 수준의 기능(라이브러리 커스터마이징 및 확장, 템플릿 메타프로그래밍, 멀티스레드 프로그래밍 등)


챕터 5 : 엔터프라이즈급 소프트웨어 작성법, 효율적인 C++ 코드 작성법, 테스트 방법론, 디버깅 기법, 디자인 기법, 프레임워크, 객체지향 패턴 등


챕터 6 : 기술 면접 C++ 예상 질문 등 



챕터마다 적절한 예시와 설명이 있다. 예제 코드를 비주얼 스튜디오로 따라 쳐보면서 실습하면 내용을 더 쉽게 이해할 수 있을 것이다.

(코드는 홈페이지에서 제공하기도 한다.)



 

챕터의 마지막 부분엔 배운 것을 정리하고 적용할 수 있도력 연습문제가 몇 가지 준비되어 있다. 연습문제의 정답도 책의 웹사이트에서 제공되기 때문에 충분히 고민해보고, 적절한 모범 답안이 무엇인지 알 수 있다.


챕터1에 C++ 기초적인 내용이 있긴 하지만, 어떤 기능이 있었는지 복습 & 정리하는 수준 정도이다. C++기본서를 최소 1회독~n회독한 뒤 이 교재로 공부한다면 기본기는 물론 C++ 스킬을 향상시킬 수 있을 것을 기대할 수 있을 것이다.

 

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

전문가를 위한 C++

 

C라는 언어를 꽤 오랫동안 사용한 경험이 있지만 C++의 기능은 익숙하지 않고 사용한 적이 많이 없다. 가끔 C++로 설계된 코드들을 보고 있노라면 겁부터 드는 편이다. C++에 대한 경험이 부족하던 차에 전문가 수준으로 실력을 끌어올릴 수 있는 기회를 갖게 되었다.

이 책의 두께와 개정된 이력만 보더라도 참 신뢰가 간다. 두께가 1700페이지 가까이 되고 개정된 것만 5번째이다. 내가 가지고 있는 책들중에서 이 녀석이 두꺼운 것으로는 상위권에 들 듯하다. 아.. 책 좀 버려야 하는데... 너무 많아... 어쨌든 프로그래밍 기초를 쌓아서 중급으로 올리는데 이만한 책은 없는 듯 보인다.

 

 

C++에 대한 프로그래밍 방법, 디자인 패턴, 디버깅, 제네릭 코드 등이 나열되어 있는데 모르는거 빼고 다 있어 보인다. 이걸 언제 다 읽어 보냐.. 그래도 재밌는 게 C를 꽤(?) 한다는 자부심 때문인지 곳곳에서 C++과 또.. 자바스크립트, 타입스크립트, 파이썬 등과 같은 모던 랭귀지와 비교해서 읽는 재미가 쏠쏠하다. 그리고 기존에 잃어버렸던 여러 가지 공부 지식들을 되살릴 수 도 있어서 좋고.

이런 책은 조용히 휴가때 차 한잔 하면서 읽으면 딱 좋겠다~

 

 

휴가 가고 싶어...

내용과 분량 때문에..이렇게 두꺼운 책은 보통 분철을 하는데.. 프로그래밍책들은 절대 분철하지 않는다.

 

C++를 처음 학습을 한것은 아마도 대학 시절~~~강산이 3번이나 변했을만큼 오래 전이지만..

여전히 내 방 책장엔 오래된 #C,#C++ 책들과 최근에 구입한 C,C++ 책들이 한칸을 차지하고 있다.

둘째가 프로그래밍에 관심을 보여 C,C++를 추천하다보니 최근에도 몇권을 구입하게 되었지만....

글쎄 요즘 학생들은 파이쎤과 JAVA가 아니면 거들 떠 보지도 않는 것 같은 현실이다. 이왕이면 C++를 추천하지만 강요하긴 싫다.

 

 

주로 구입한 책은 보면 프로그래밍 언어에 대한 문법과 같은 기초를 시작으로 

실습형 예제 코드 그리고 최종 간단한 프로젝트 위주로 대부분 이루어져 있다.

책을 받고 잠시 고민했다. 이 책을 어떻게 소개해야 할까? 내용도 보기 전에 걱정부터 앞선다. 

그냥 막연한 느낌은 우선 개발자 여야 한다. 

그리고 기본적인 C++ 문법과 컴파일러와 같은 개발툴에 대한 이해도 있어야 되고 자료구조의 개념도 알고 있어야..... 

그렇게 책을 펼쳤다.

 

"전문가를 위한 C++ " 개정5판이다. 이 책에서 소개하는 대상이 되는 독자.......

 
그리고 바로 이어서 이 책에서 다루는 내용이 소개된다.
코드 품질 향상과 프로그래밍 효율, C++ 프로그래밍 기법 소개... 방법론, 디자인 패턴, 프로그래밍 스타일...
그리고 C++20 에 추가된 기능에 대한 소개......
단순히 C++를 아는 프로그래머가 아닌 전문 C++ 프로그래머.....

 

우선 C++를 활용한 개발 경험이 있으면 ... "Part1. 전문가를 향항 C++ 첫걸음" 파트는 가볍게 Reading 하기를 추천한다. 

경험이 없다면 이 책을 보기 전 기초가 되는 C++ 이 있다면 한번 정도 보고 Part1.을 Reading 하기를 추천한다.

아~ 글이 자꾸 꼬이는데..적어도 Part1.은 아주 친절하게 자세히 C++에 대한 소개를 하는 책은 아니다. 

난이도가 있는 책이다. 라고 생각하면 될 것 같다.

 

 

"Part2. 전문가다운 C++ 소프트웨어 설계방법" 프로그램 설계에 대한 중요성과 정의 고려사항등을 다루면서 객체지향 설계, 클래스, 상속, 다형성, 추상화와 재사용성 대한 내용과 라이브러리.. 사실 Part2를 Reading이 어렵다. 항상 예시로 설명하는 Animal은 이해가 되지만, 처음 개발에 적용할 때는 어떻게 해야하는건지..맞는 방법인지? 어쩌란 건지?

하지만 정말 중요하기에 멈추지 말고 Readign 하다 보면...2후반부에 "체스 프로그램 설계"를 예시를 통해 조금 이해할 수 있을 것이다. 

 

 

"Part3. 전문가답게 C++ 코딩하기", "Part4. 고급 기능 마스터하기" 이 책의 다루고자하는 주제이다. 

전문가를 위한 C++ 다른 Part보다 이 Part를 이해하려면 C++ 프로젝트에 대한 이해가 있어야 된다. 

적어도 프로젝트 경험이 있는 개발자....여야 하지 않을까...라고 생각했다...

아주 오래 된 사진을 꺼내보면서 사진속에서 추억을 되살리는 기분이 들었다.

무작정 코딩만 하던 시절이 있었다. 객체 지향설계, 클래스 설계, 메모리 관리, 알고리즘의 내용이 중요한게 아니였다.

개발 일정 대로 결과가 나오는 것이 더 중요했던..... 그런 개발 경험이 있었기에 ..

Part3. 전문가답게 코딩하기라는 주제처럼 오래전 Source 코드를 보면 부끄러울데가 많다.

 전혀 전문가 적이지 못했던 그런 시절이 있었다.

 뜬금없지만 류시화 시인의 "지금 알고 있는것을 그때도 알았더라면" 이라는 시집의 문구가 생각난다.

 

 

"Part5. C++ 소프트웨어 공학" 소프트웨어 공학만으로 한 학기 수업으로 했을 만큼 중요한 내용이다.

SW 전공자들은 당연히 학습하는 내용이지만. 

어느 순간.. 코딩 기술이 SW 개발자가 되어버리는 조금 안타까운 현실이라....

이 책에서 감사한 부분이 있다면 바로 소프트웨어 공학을 다루었다는 부분이다. 

불과 10여 페이지 분량이지만 너무 감사한 부분이다. 

요즘 광고에 보면 문과 출신 개발자.. 이런 표현을 볼수 있다. 누구나 개발자가 될수 있다...... 

꼭 컴퓨터 공학 전산학을 전공해야만 개발자가 되는 것은 아니다..다만 개발자가 Code가 되지는 않았으면 한다.....

 

 

마지막 "Part6 부록.." 특히 "부록 A. C++ 면접 예상 질문" 빵 터졌따. 

음...면접 예상 질문이라... 20년 전 첫 면접도 생각나고, 

면접관으로 면접을 봤던것도 생각나고.. 중소기업이라 기술적인 내용보다.

 "오래 오래 다닐 수 있죠?"라는 말이 너무나도 웃겼던... 

"부록 A. C++ 면접 예상 질문"은 이 한 권의 책을 요약 정리해 놓은것이다. 

가만히 생각해보니 전문가를 위한 책이니 음...당연히 이정도는 알아야 되는가...싶기도 하다. 

질문을 보며 몇가지 답을 해 본다. 솔직히 말하는게 더 어렵다.

 

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


2023년 8월 22일(화) 대구 시내에 약속이 있어 나갔다. 

약속시간이 많이 남아 오랬만에 서점에 들러 시간을 떼우기로 한다.  

그렇게 찾아간 대구 교보문고 서점 2층 C언어가 빼곡히 모인 곳에 한눈에 확 띄었다. "찰칵.."

우리나라 언어에서 가장 오랫동안 사용하는 언어 중에 하나가 C++입니다.

오랜 역사만큼 수많은 레퍼런스가 있는데요.

처음 C언어가 만들질 당시 불렸던 K&R에서 출발해서 수많은 버전들이 만들어지고 C에서 C++ 언어가 만들어지기도 했습니다.

C++의 역사는 덴마크 출신의 컴퓨터 과학자 비야네 스트롭스트룹이 C언어에 클래스를 추가한 버전으로 1982년 개발되었습니다.

1998년에는 C++ 98이라 부르는 표준화 버전이 만들어졌고요.

C++ 03, C++ 11, C++ 14, C++ 17, C++ 20으로 이어지고 있습니다.

이번 개정판에서 C++ 20의 많은 부분을 업데이트 한 책입니다.

이 책은 여러 가지 다양한 상황 속에서 자신을 전문가 수준으로 끌어올리기 위한 사람을 대상으로 만든 책입니다.

C++ 언어에 대한 경험이 부족해도, C++의 고급 기능을 다루지 못해도, C++ 코딩은 자신 있지만 C++로 설계하는 방법을 배워보고 싶어 하는 사람이든 상관없이 자신을 전문가 수준으로 올리고 싶다면 이 책을 학습하는 것이 좋다고 저자는 얘기합니다.

초급이냐 중급이냐가 중요한 것이 아니라 전문 C++ 프로그래머가 되고 싶은 분을 목적으로 만들어진 책입니다.

다만 기본적인 프로그래밍 기초는 어느 정도 갖춰다고 가정하고 설명하고 있습니다.

 
 

1장은 C++와 표준 라이브러리 초단기 속성 코스인데요.

C++ 언어의 기초를 설명하는 것이 아니라 오래전에 C++을 공부한 사람의 기억을 되살리거나, C++ 경험이 없는 C, 자바, C# 등 다른 언어 프로그래밍 경험이 있는 독자에게 C++의 기초를 다지는 용도로 사용됩니다.

다른 언어에 대한 지식이 없는 상태에서 처음 C++ 언어를 배우려는 분이 생각하는 그런 기초가 아닙니다.

다만 객체지향 프로그래밍은 5장에서 다루기 때문에 객체지향 프로그램을 모르는 분들은 5장에서 학습할 수 있게 꾸며졌습니다.

 
 

책에서 중요하게 다루는 것은

프로그래밍 방법론과 재사용 가능한 디자인 패턴, 바람직한 프로그래밍 스타일입니다.

이 책은 코드를 설계하고 작성하는 단계부터 디버깅하고 협업하는 단계에 이르는 전반적인 소프트웨어 개발 프로세스에 따라 설명하고 있습니다.

그럼 전문 프로그래머에게 필요한 것은 무엇일까요?

설계의 중요성을 알아야 하고요.

객체지향 프로그램과 라이브러리에 대한 이해와 활용

유용한 코드와 재사용 가능한 기능을 개발한 경험이 있어야 합니다.

다양한 디자인 패턴을 알고 있어야 시스템의 효용성을 높일 수 있습니다.

 
 
 
 

1부는 C++ 언어에 대한 초단기 속성코스와 스트링, 스트링 뷰를 다루는 방법을 설명합니다.

2부 전문가 다운 C++ 소프트웨어 설계 방법에서는 설계의 중요성과 객체지향 방법론, 코드 재사용의 중요성 등을 설명합니다.

3부 전문가답게 C++ 코딩하기에서는 C++에서 메모리를 관리하기 위한 바름직한 방법, 재사용 가능한 클래스 작성법, 상속과 같이 언어의 주요 기능을 최대한 활용하는 방법을 소개합니다.

4부와 5부에서는 고급 기능을 마스터하고 엔터프라이즈급 소프트웨어를 작성하는 방법을 설명하고 있습니다.

마지막으로 6부에서는 기술 면접에서 나올 법한 C++ 예상 질문을 정리해 놓았고, 시스템 설계할 때 사용하는 UML에 대한 간단한 설명으로 책을 마무리하고 있습니다.`

 

두께가 어마어마 하다

안녕하세요, 개발자 여러분! 오늘은 C++ 프로그래밍을 더 깊이 있게 다루기를 원하는 분들을 위한 "전문가를 위한 C++" 책을 리뷰해 보겠습니다.

개발자를 준비할떄부터 지금까지 공부하던 C++을 학습했지만 ,이 책을 통해 어떤 새로운 경험과 학습을 얻을 수 있는지 함께 살펴보겠습니다. 이 책은 C++ 최신 릴리스를 마스터 하고자하는 실력이 있는 개발자들을 대상으로 합니다.

 

* 교육적인 정보와 경험

"전문가를 위한 C++"은 중급 이상의 개발자들에게 도움이 될 만한 정보와 도구를 제공합니다. 저는 이책을 읽으면서, 제 개발 경험을 더욱 향상시킬 수 있는 다양한 학습을 할수 있었습니다. 특히 C++11의 새로운 기능과 변화를 이해하고 활용하는 방법을 배우는 데 큰 도움이 되었습니다.

 

* 코드 예제와 설명

이 책은 다양한 코드 예제를 포함하고 있어 실제 프로젝트에서 바로 적용할수 있게 도와줍니다. 여기서 중요한 점은 코드 예제의 다양성과 유용성입니다. 그러나 몇몇 예제의 설명이 더 자세하면 도움이 될 것이라고 생각합니다.

예제 사이트

 

한빛출판네트워크

더 넓은 세상, 더 나은 미래를 위한 아시아 출판 네트워크 :: 한빛미디어, 한빛아카데미, 한빛비즈, 한빛라이프, 한빛에듀

www.hanbit.co.kr

 

* 내용의 김피와 폭

"전문가를 위한 C++"은 C++의 다양한 주제를 깊이 있게 다루며, 특히 최신 C++기능에 대한 내용이 풍푸합니다. 이책을 통해 C++ 언어의 다양한 측면을 더욱 깊이 이해할 수 있었습니다. 그러나 책의 일부는 고급주제로 넘어가면서 어려움을 겪을 수 있습니다. 이부분은 더욱 경험이 많은 프로그래머에게 더 적합할 것입니다.

방대한 페이지 수

 

* 학습 과정의 복잡성과 간소화 필요성

책의 내용은 전문적이지만, 때로는 더 단순하게 설명되었으면 하는 아쉬움이 남았습니다. C++를 처음 배우거나 개선하고자 하는 독자들을 위한 학습 과정을 더욱 간소화 하려면 노력이 더 필요할 것 같습니다.

 

* 총평

저는 "전문가를 위한 C++" 책을 읽으면서 개발자로서의 경험을 더욱 풍부하게 만들었습니다.

C++의 최신 기능과 개발 노하우를 배울 수 있어서 기쁘게 생각합니다. 이미 C++에 익숙한 시니어 개발자들에게 특히 유용할 것입니다. 여러분도 자신의 프로그래밍 스킬을 향상시키고, 보다 전문적인 프로그래머로 성장하고자 한다면 "전문가를 위한 C++"을 고려해보세요. 이책을 통해 개발자로서의 여정을 더욱 풍요롭게 만들 수 있을 것입니다.

 

 

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

전문가를 위한 C++ 책은, 책의 제목처럼 단순히 문법을 아는 데에 그치지 않고 C++을 올바르게 사용할 줄 알기 위한 책입니다. 전문가 수준의 C++은 바람직한 설계의 중요성과 객체지향 프로그래밍 이론, 기존 라이브러리를 최대한으로 활용하는 방법에 대해 제대로 이해해야 하는데요. 또한 유용한 코드와 재사용 가능한 기능을 개발한 경험도 풍부해야 합니다.

 

 

이 책을 통해 잘 알려지지 않았거나 잘못 이해하기 쉬운 기능들에 대하여 명확히 이해하는 과정을 가지며 C++에 대한 지식의 폭을 넓힐 수 있습니다. 또한 객체지향 설계 방식을 이해하고 최신 디버깅 기술도 파악, 개발 업무에 당장 적용할 수 있는 재사용성에 관련된 기법을 풍부하게 갖출 수 있습니다.

 

 

 

 

이 책은 크게 여섯 개의 부로 구성되어 있습니다. 먼저 C++의 기초를 다지는 초단기 속성 코스부터 시작하여, 스트링 및 스트링 뷰 다루는 방법 등 기본기에 대해 익히며, 이후 C++ 설계 방법론, 객체 지향 밥업론, 메모리 관리 방법, 표준 라이브러리 커스터마이징 및 확장 방법, 더 나아가 엔터프라이즈 수준의 소프트웨어 작성 및 유지 보수 방법에 이어 마지막에는 기술 면접에서 나올 수 있는 C++ 예상 질문들에 대해 알려줍니다.

 

 

해당 책은 C++의 모든 기능들에 대하여 알려주는 바이블이나 백과사전, 혹은 레퍼런스 용도의 책이 아닙니다. 어떻게하면 더욱 제대로, 그리고 효율적으로 C++ 언어를 구사할 수 있을지에 대해 알려주고 있습니다. 만약 C++을 접한 후 실무에 사용하면서 더욱 깔끔하게 사용하고 싶다면 해당 책을 통하여 정보를 얻는 것을 추천 드립니다.

 

1.jpg

 

[사진] 책 표지와 측면(세네카) 모습, 1700페이지에 육박하다보니 어마어마하다

 

 

 

사진에서 보이든 책 분량만 무려 1700페이지에 육박하다. 전문가 용으로 만들어진 책이기는 하지만, 처음은 기초 부분의 초단기 속성 코스로 시작해서 디버깅 실습까지 거의 백과사전 수준으로 두께 만큼이나 많은 내용이 담겨있다. 특히, 이번 개정 5판에서는 버전 C++20의 신기능 까지 포함해 C++에 대한 모든 것은 이 한 권만 제대로 실습하면 마스터가 가능하다는 말이 과언이 아니라고 해도 될 정도이다.

 

 

2.jpg

 

[사진] (본책, p.277) 클래스, 컴포넌트, 속성 등의 용어 설명을 하고 있는 부분

 

 

 

좋은 기회에 이 책을 만나게 되기는 했지만, 프로그래머가 아니다 보니 내 경우는 필요시에 해당 부분만 발췌독 방식으로 참고하게 될 것 같다. 개인적으로는 I/O 부분과 디버깅 부분을 자주 보게 될 것 같다. 또한 객체설계나 클래스 등 부분에는 그동안 자주 접하긴 했지만, 해당 명칭의 의미를 잘 몰랐었는데, 이 책에서는 그것이 무엇을 의미하는지 용어설명부터 친절하게 해주고 있어 이런 부분을 확인하기 위해서도 사전처럼 활용하게 될 것 같다.

 

 

3.jpg

 

[사진] (본책, p.1440~1441) 디버깅 완전 정복 부분의 시작 페이지

 

 

전문가를 위한 책이지만, 고급 기술을 다루는 코딩 부분 외에는 초보자도 이해하기 쉽게 설명되어 있는 부분을 자주 만날 수 있다. 마스터가 어렵기로 악명 높은 프로그램을 다루고 있기는 하지만 문법이나 기능 등의 기술적인 부분만 다루고 있지 않고, 그동안 잘못 알려져있거나 잘못 이해해 오류발생이 빈번한 부분에 대한 설명 등 설계 전반에 대해 아주 세심하게 다루고 있으니 반드시 C++ 마스터가 목적이 아니더라도 발췌독 방법으로 이 책을 활용해 보는 것도 좋을 것 같다.  

 

 

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

 

C++ 전문가가 되기 위한 도움을 준다

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에서 새로 추가된 문법들을 접할 수 있어 유익했다.

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

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

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

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

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원 무료배송
닫기

리뷰쓰기

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

* 리뷰 작성시 유의사항

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

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

오탈자 등록

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

도서 인증

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

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

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

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

닫기

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

자료실

최근 본 상품1