태그 보관물: c++-faq

c++-faq

결정적인 C ++ 책 가이드 및 목록

이 질문은 매년 출판되는 수십 개의 나쁜 C ++ 서적 중 몇 가지 진주를 모 으려고 시도합니다.

인터넷에서 제공되는 자습서에서 이동 중에 자주 사용되는 다른 프로그래밍 언어와 달리 잘 작성된 C ++ 책을 공부하지 않고 C ++를 빠르게 선택할 수있는 사람은 거의 없습니다. 이 작업을 수행하기에는 너무 크고 복잡합니다. 실제로, 그것은 너무 크고 복잡하여, 매우 나쁜 C ++ 서적이 매우 많습니다 . 그리고 우리는 나쁜 스타일에 대해 이야기하는 것이 아니라 눈에 띄게 명백한 사실적 오류를 유발 하고 심하게 나쁜 프로그래밍 스타일을 홍보하는 것과 같은 것들을 말합니다 .

가급적 C ++ 대화방 에서 추가 내용을 논의한 양질의 책 과 대략적인 기술 수준 을 제공하려면 허용 된 답변을 편집하십시오 . (정규 직원은 권장 사항에 동의하지 않는 경우 무자비하게 작업을 취소 할 수 있습니다.) 개인적으로 읽거나 혜택을 얻은 각 책에 대해 간단한 설명 / 설명을 추가하십시오. 품질, 제목 등을 자유롭게 토론하십시오. 기준에 맞는 책이 목록에 추가됩니다. CCU 및 C ++ 사용자 협회 (ACCU)의 리뷰가있는 책에는 해당 리뷰에 대한 링크가 있습니다.

* 참고 : FAQ 및 기타 리소스는 C ++ 태그 정보 및 아래에 있습니다..



답변

초보자

입문, 이전 프로그래밍 경험이 없음

  • C ++ Primer * (Stanley Lippman, Josée Lajoie 및 Barbara E. Moo) ( C ++ 11 용으로 업데이트 됨 ) 1k 페이지로 제공되는이 언어는 C ++에 대한 매우 철저한 소개로, 언어의 거의 모든 것을 매우 접근 가능한 형식으로 다루고 있습니다. 아주 자세하게 제 5 판 (2012 년 8 월 16 일 릴리스)은 C ++ 11을 다룹니다. [리뷰]

  • 프로그래밍 : C ++를 사용한 원리와 실습 (Bjarne Stroustrup, 2 판-2014 년 5 월 25 일) ( C ++ 11 / C ++ 14 용으로 업데이트 됨 ) 언어 작성자가 C ++을 사용한 프로그래밍에 대한 소개. 이전의 프로그래밍 경험이 없다고 가정하는 초보자도 있습니다.


*와 혼동하지 C ++ 프라이머 플러스 상당히 불리한와, (스티븐 프라 타) 검토 .

이전 프로그래밍 경험이있는 입문

  • C ++ 둘러보기 (Bjarne Stroustrup) ( C ++ 17 용 2 판 ) “tour”는 모든 표준 C ++ (언어 및 표준 라이브러리 및 C ++ 사용 )에 대한 빠른 (약 180 페이지 및 14 장) 자습서 개요입니다. 11 ) 이미 C ++을 알고 있거나 경험이 풍부한 프로그래머를위한 사람들에게 적당히 높은 수준입니다. 이 책은 The C ++ Programming Language, 4 판의 2-5 장을 구성하는 확장 된 자료입니다.

  • Accelerated C ++ (Andrew Koenig 및 Barbara Moo, 초판-2000 년 8 월 24 일) 이것은 기본적으로 C ++ Primer 와 동일한 근거를다루지 만, 공간의 4 분의 1에 해당합니다. 이는 프로그래밍 에 대한 소개가 아니라이전에 다른 언어로 프로그래밍 한 사람들을위한 C ++에 대한소개가되기 때문입니다. 학습 곡선이 가파르지만 이에 대처할 수있는 사람들에게는 매우 간단한 언어 소개입니다. (역사적으로, 언어 교육에 대한 현대적인 접근 방식을 사용하는 최초의 초보자 도서가 됨으로써 새로운 지평을 열었습니다.) 그럼에도 불구하고, 가르치는 C ++는 순전히 C ++ 98입니다. [리뷰]

모범 사례

  • 효과적인 C ++ (Scott Meyers, 3 판-2005 년 5 월 22 일) 이것은 C ++ 프로그래머가 읽어야 할 최고의 두 번째 책이되는 것을 목표로 작성되었으며 성공했습니다. 이전 버전은 C에서 온 프로그래머를 대상으로했으며 세 번째 버전은이를 변경하여 Java와 같은 언어에서 온 프로그래머를 대상으로합니다. 그것은 접근하기 쉽고 즐거운 스타일로 그 이론적 근거와 함께 기억하기 쉬운 ~ 50의 경험 법칙을 제시합니다. C ++ 11 및 C ++ 14의 경우 예제와 몇 가지 문제가 오래되었으며 효과적인 Modern C ++가 선호됩니다. [리뷰]

  • Effective Modern C ++ (Scott Meyers) 이것은 기본적으로C ++ 프로그래머에서 C ++ 03에서 C ++ 11 및 C ++ 14로 전환하는 C ++ 프로그래머를 대상으로하는 Effective C ++ 의 새로운 버전입니다.

  • 효과적인 STL (Scott Meyers) 이것은 효과적인 C ++ 이 언어 전체에대해 STL에서 온 표준 라이브러리의 일부와 동일한 작업을 수행하는 것을 목표로합니다. 이는 이론적 근거와 함께 경험 법칙을 제시합니다. [리뷰]

중급

  • 보다 효과적인 C ++ (Scott Meyers) Effective C ++ 보다 더 많은 경험 법칙. 첫 번째 책의 내용만큼 중요하지는 않지만 여전히 잘 알고 있습니다.

  • 탁월한 C ++ (Herb Sutter) 퍼즐 세트로 제시된이 클래스는 다양한 자원에 대한 심층적 인 적용 범위 외에 RAII (Resource Acquisition is Initialization)를 통해 C ++의 적절한 자원 관리 및 예외 안전성에 대한 최상의 철저한 토론 중 하나를 제공합니다. pimpl 관용구, 이름 조회, 좋은 클래스 디자인 및 C ++ 메모리 모델을 포함한 다른 주제. [리뷰]

  • 보다 뛰어난 C ++ (허브 스터 터) C ++ 에서 효과적인 객체 지향 프로그래밍 및 STL의 올바른 사용에 대한 설명과 함께, 예외적 인 C ++ 에서 다루지 않은 추가 예외 안전 주제를 다룹니다. [리뷰]

  • 뛰어난 C ++ 스타일 (허브 스터 터) 일반적인 프로그래밍, 최적화 및 리소스 관리에 대해 논의합니다. 이 책은 또한 비 멤버 함수와 단일 책임 원칙을 사용하여 C ++로 모듈 식 코드를 작성하는 방법에 대한 훌륭한 설명을 제공합니다. [리뷰]

  • C ++ 코딩 표준 (Herb Sutter 및 Andrei Alexandrescu) 여기서 “코딩 표준”은 “코드를 들여 쓰기해야하는 공간 수”를 의미하지는 않습니다. 이 책에는 정확하고 이해 가능하며 효율적인 C ++ 코드 작성에 도움이되는 101 가지 모범 사례, 관용구 및 일반적인 함정이 포함되어 있습니다. [리뷰]

  • C ++ 템플릿 : 완전한 가이드 (데이비드 Vandevoorde와 니콜라이 M. Josuttis에이)입니다가 11 ++ C 전에 존재했던 템플릿에 대한 책. 기본부터 고급 템플릿 메타 프로그래밍에 이르기까지 모든 것을 다루며 템플릿 작동 방식 (개념적 및 구현 방식)에 대한 모든 세부 사항을 설명하고 많은 일반적인 함정에 대해 설명합니다. 부록에 하나의 정의 규칙 (ODR)과 과부하 해결에 대한 훌륭한 요약이 있습니다. 개정판 C ++ 11 ++ 14 C 및 C ++ (17)을 덮는 이미 발표되었다. [리뷰]

  • C ++ 17-The Complete Guide (Nicolai M. Josuttis)이 책은 ‘인라인 변수’, ‘constexpr if’와 같은 간단한 것부터 ‘다형성’까지 모든 것을 다루는 C ++ 17 표준에 도입 된 모든 새로운 기능에 대해 설명합니다. 메모리 리소스 ‘및’과도하게 정렬 된 데이터로 새로 만들기 및 삭제 ‘.


많은

  • Modern C ++ Design (Andrei Alexandrescu) 고급 일반 프로그래밍 기술에 관한 혁신적인 책. 정책 기반 디자인, 유형 목록 및 기본 일반 프로그래밍 관용구를 소개 한 다음 일반 프로그래밍을 사용하여 효율적이고 모듈 식으로 깔끔하게 구현할 수있는 유용한 디자인 패턴 (작은 객체 할당 자, 펑터, 팩토리, 방문자 및 다중 방법 포함)을 설명합니다. . [리뷰]

  • C ++ 템플릿 메타 프로그래밍 (David Abrahams and Aleksey Gurtovoy)

  • C ++ Concurrency In Action (Anthony Williams) 스레드 라이브러리, 원자 라이브러리, C ++ 메모리 모델, 잠금 및 뮤텍스, 다중 스레드 응용 프로그램 설계 및 디버깅 문제를 포함하여 C ++ 11 동시성 지원을 다루는 책. 개정판 C ++ (14) 및 C ++ (17)을 덮는 이미 발표되었다.

  • 고급 C ++ 메타 프로그래밍 (Davide Di Gennaro) TMP 기술에 대한 C ++ 11 사전 매뉴얼로 이론보다 실습에 중점을 두었습니다. 이 책에는 많은 스 니펫이 있으며 그중 일부는 유형 특성에 의해 사용되지 않지만 기술은 아는 것이 유용합니다. 기발한 형식 / 편집을 참을 수 있다면 Alexandrescu보다 읽기가 더 쉽고, 더 많은 보상이 있습니다. 보다 숙련 된 개발자에게는 일반적으로 광범위한 경험을 통해서만 발생하는 C ++의 어두운 구석에 대해 무언가를 선택할 수 있습니다.

  • C ++의 함수형 프로그래밍 (Ivan Čukić)이 책은 독자에게 최신 C ++의 함수형 패러다임을 소개합니다. 다양한 예제와 다이어그램으로 이론 및 코드 측면을 다룹니다. 저자는 교육 경험이 있으며이를 사용하여 기능 프로그래밍의 다양한 측면을 통해 독자를 원활하게 안내합니다.


참조 스타일-모든 레벨

  • C ++ 프로그래밍 언어 (Bjarne Stroustrup) ( C ++ 11 용으로 업데이트 됨 ) 제작자가 C ++에 대한 고전적인 소개. 고전적인 K & R과 유사하게 작성된이 책은 실제로 그와 매우 흡사하며 핵심 언어에서 표준 라이브러리, 프로그래밍 패러다임, 언어 철학에 이르기까지 거의 모든 것을 다룹니다. [리뷰] 참고 : C ++ 표준의 모든 릴리스는이 질문에서 추적됩니다. 현재 C ++ 표준은 어디에 있습니까 ?

  • C ++ 표준 라이브러리 튜토리얼 및 참조 ((니콜라 Josuttis에) 11 ++ C 업데이트 )는 C ++ 표준 라이브러리에 대한 소개 및 참조. 2012 년 4 월 9 일에 릴리스 된 두 번째 버전은 C ++ 11을 다룹니다. [리뷰]

  • C ++ IO 스트림 및 로케일 (Angelika Langer 및 Klaus Kreft) 스트림 및 로케일에 대해 알고 싶은 경우이 책에 대해 할 말이 거의 없습니다. [리뷰]

C ++ 11 / 14 / 17 /… 참고 문헌 :

  • 는 C ++ (11) / (14) / (17) 표준 (INCITS / ISO / IEC 14882 : 2011/2014/2017)는 이, 물론, 또는 C ++ 아닌 모두의 최종 중재자입니다. 그러나 이는 순전히 이해하기 위해 상당한 시간과 노력을 기울일 의향이있는 숙련 된 사용자 를위한 참고 자료라는 것을 명심하십시오 . C ++ 17 표준은 198 스위스 프랑의 전자 형식으로 출시되었습니다.

  • C ++ 17 표준은 사용 가능하지만 경제적 인 형태는 아닙니다 . ISO에서 직접 198 스위스 프랑 (약 200 달러)을 지불해야합니다. 대부분의 사람들에게 표준화 이전최종안 은 충분하고 무료입니다. 많은 사람들이 C ++ 20에 포함될 가능성이있는 새로운 기능을 문서화 하여 훨씬 새로운 초안 을 선호 할 것 입니다.

  • 새로운 C ++ (C ++ 11 / 14) 개요 (PDF 만 해당) (Scott Meyers) ( C ++ 14 용으로 업데이트 됨 ) C ++의 저명한 작가 인 Scott Meyers 품목 목록이 짧더라도 품질이 높습니다.

  • C ++ 핵심 가이드 라인 (C ++ / 17 14분의 11 / …) (비얀 스트로브 스트 룹과 허브 셔터에 의해 편집) 잘 ++ 현대 C를 사용하기위한 지침의 집합으로 구성 진화하는 온라인 문서입니다. 이 지침은 인터페이스, 리소스 관리, 메모리 관리 및 응용 프로그램 아키텍처 및 라이브러리 디자인에 영향을 미치는 동시성과 같은 비교적 높은 수준의 문제에 중점을 둡니다. 이 프로젝트는 Bjarne Stroustrup 및 다른 사람들이 CppCon’15 에서 발표했으며 커뮤니티의 기여를 환영합니다. 대부분의 가이드 라인에는 가능한 도구 지원에 대한 논의뿐만 아니라 이론적 근거와 예가 보충됩니다. 많은 규칙은 정적 분석 도구를 통해 자동으로 확인할 수 있도록 특별히 설계되었습니다.

  • C ++ 슈퍼 자주 묻는 질문 (마샬 클라인, 비얀 스트로브 스트 룹 등)은 이전에 마샬 클라인과 비얀 스트로브 스트 룹에 의해 개별적으로 유지되는 C ++ FAQ를 통합하는 표준 C ++ 재단의 노력과 새로운 기여를 통합하는 것입니다. 이 항목은 주로 중간 수준의 문제를 다루며 종종 유머 톤으로 작성됩니다. 모든 항목이 최신 버전의 C ++ 표준으로 완전히 최신 상태 인 것은 아닙니다.

  • cppreference.com (C ++ 03 / 11 / 14 / 17 /…) (Nate Kohl에서 시작)은 기본 핵심 언어 기능을 요약하고 C ++ 표준 라이브러리에 대한 광범위한 문서를 제공하는 위키입니다. 문서는 매우 정확하지만 공식 표준 문서보다 읽기 쉽고 위키 특성으로 인해 탐색 기능이 향상되었습니다. 이 프로젝트는 모든 버전의 C ++ 표준을 문서화하고 사이트에서 특정 버전의 디스플레이를 필터링 할 수 있습니다. 이 프로젝트는 CppCon’14에서 Nate Kohl 발표했습니다 .


클래식 / 더 오래된

참고 : 이 책에 포함 된 일부 정보는 최신 정보가 아니거나 더 이상 모범 사례로 간주되지 않을 수 있습니다.

  • C ++의 디자인과 진화 (Bjarne Stroustrup)언어가 왜 그런지 알고 싶다면이 책에서 답을 찾으십시오. 여기에는C ++ 표준화 전의 모든 내용이 포함됩니다.

  • C ++에 대한 반추 -(Andrew Koenig 및 Barbara Moo) [리뷰]

  • 고급 C ++ 프로그래밍 스타일 및 숙어 (James Coplien) 패턴 이동의 전신 인 많은 C ++ 관련 “이디엄”에 대해 설명합니다. 확실히 좋은 책이며 시간을 절약 할 수 있지만 현재 C ++로 최신이 아니더라도 여전히 읽을 가치가 있습니다.

  • 대규모 C ++ 소프트웨어 디자인 (John Lakos) Lakos는 매우 큰 C ++ 소프트웨어 프로젝트를 관리하는 기술을 설명합니다. 확실히, 최신 상태라면 잘 읽어보십시오. C ++ 98보다 오래 전에 작성되었으며 대규모 프로젝트에 중요한 많은 기능 (예 : 네임 스페이스)이 누락되었습니다. 큰 C ++ 소프트웨어 프로젝트에서 작업해야하는 경우에는 소금 한 조각 이상의 소금을 섭취해야하지만 읽을 수 있습니다. 새 버전의 첫 번째 책은 2019 년에 릴리스되었습니다 .

  • C ++ 개체 모델 내부 (Stanley Lippman) 다중 상속 시나리오에서 가상 멤버 함수가 일반적으로 구현되는 방법과 기본 개체가 메모리에 일반적으로 배치되는 방법 및이 모든 것이 성능에 미치는 영향을 알고 싶다면 여기에서 그러한 주제에 대한 철저한 토론을 찾으십시오.

  • 주석이 달린 C ++ 참조 매뉴얼 (Bjarne Stroustrup, Margaret A. Ellis)이 책은 1989 년의 C ++ 2.0 버전을 탐색한다는 사실에서 상당히 구식입니다. 템플릿, 예외, 네임 스페이스 및 새로운 캐스트는 아직 소개되지 않았습니다. 그러나이 책은 언어의 이론적 근거, 가능한 구현 및 기능을 설명하는 전체 C ++ 표준에 대해 설명합니다. 이 책은 C ++의 프로그래밍 원리와 패턴을 배우는 것이 아니라 C ++ 언어의 모든 측면을 이해하기위한 책입니다.

  • C ++로 생각하기 (Bruce Eckel, 2 판, 2000). 두 권; 튜토리얼레벨 무료 소개 레벨 도서 세트입니다. 다운로드 : vol 1 , vol 2 . 불행히도const공식 정오표가없는여러 가지 사소한 오류 (예 : 임시가 자동으로 유지됨)로 인해 손상을입었습니다. 부분적인 3 번째 파티 정오표 목록 (에서 확인할 수 http://www.computersciencelab.com/Eckel.htm ),하지만 분명히 유지 아니에요.

  • 과학 및 엔지니어링 C ++ : 고급 기술 및 예제 소개 (John Barton 및 Lee Nackman) 수치 방식의 맥락에서 C ++에서 사용할 수있는 모든 기능을 설명하고 활용하려고하는 포괄적이고 매우 상세한 책입니다. 당시에는 CTP (Curiously Recurring Template Pattern)와 같은 몇 가지 새로운 기술이 도입되었습니다 (CRTP, Barton-Nackman 트릭이라고도 함). 치수 분석 및 자동 차별화와 같은 몇 가지 기술을 개척했습니다. 표현식 파서에서 Lapack 래퍼에 이르기까지 많은 컴파일 가능하고 유용한 코드가 제공되었습니다. 코드는 여전히 여기에 있습니다 : http://www.informit.com/store/scientific-and-engineering-c-plus-plus-an-introduction-9780201533934. 불행히도,이 책은 스타일과 C ++ 기능이 다소 구식이되었지만, 당시 (1994 년, STL 이전) 놀라운 둘러보기였습니다. 역학 상속에 관한 챕터는 이해하기에 약간 복잡하고별로 유용하지 않습니다. 이동 의미론과 STL에서 배운 교훈을 포함하는이 고전 서적의 업데이트 된 버전은 매우 좋을 것입니다.


답변