etc./StackOverFlow

확실한 C++ 책 가이드 및 목록

청렴결백한 만능 재주꾼 2021. 9. 30. 00:18
반응형

질문자 :Community Wiki


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

이동 중에 인터넷에서 찾을 수 있는 자습서에서 자주 선택하는 다른 많은 프로그래밍 언어와 달리 잘 작성된 C++ 책을 공부하지 않고 C++를 빠르게 배울 수 있는 언어는 거의 없습니다. 이렇게 하기에는 너무 크고 복잡합니다. 사실, 그것은 너무 크고 복잡해서 세상에는 매우 나쁜 C++ 책 이 많이 있습니다. 그리고 우리는 나쁜 스타일에 대해 이야기하는 것이 아니라 눈에 띄게 명백한 사실 오류강조하고 아주 작은 나쁜 프로그래밍 스타일을 조장하는 것과 같은 것입니다.

좋은 책 과 대략적인 기술 수준을 제공하도록 허용된 답변을 편집하십시오. 가급적 이면 C++ 대화방 에서 추가 사항에 대해 논의한 후에 하십시오. (단골 직원은 권장 사항에 동의하지 않는 경우 무자비하게 작업을 취소할 수 있습니다.) 개인적으로 읽었거나 도움을 받은 각 책에 대한 짧은 소개/설명을 추가하십시오. 품질, 제목 등에 대해 자유롭게 토론하십시오. 기준에 맞는 책이 목록에 추가됩니다. ACCU(Association of C and C++ Users)의 리뷰가 있는 책에는 리뷰에 대한 링크가 있습니다.

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



초보자

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

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

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

  • 프로그래밍: C++를 사용한 원리 및 실습 (Bjarne Stroustrup, 2nd Edition - 2014년 5월 25일) ( C++11/C++14용으로 업데이트됨 ) 언어 작성자가 작성한 C++를 사용한 프로그래밍 소개. 이전 프로그래밍 경험이 없다고 가정하지만 초보자만을 위한 것은 아닙니다.

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

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

  • Accelerated C++ (Andrew Koenig and Barbara Moo, 1st Edition - August 24, 2000) 이것은 기본적으로 C++ Primer 와 같은 내용을 다루고 있지만 4분의 1의 공간에서 그렇게 합니다. 이것은 주로 프로그래밍에 대한 소개를 시도하지 않고 이전에 다른 언어로 프로그래밍한 사람들을 위한 C++에 대한 소개를 시도하기 때문입니다. 학습 곡선이 더 가파르지만 이에 대처할 수 있는 사람들에게는 언어에 대한 매우 간략한 소개입니다. (역사적으로 이 책은 언어를 가르치는 데 현대적인 접근 방식을 사용한 최초의 초심자 책이 됨으로써 새로운 지평을 열었습니다.) 그럼에도 불구하고, 이 책에서 가르치는 C++는 순전히 C++98입니다. [검토]

모범 사례

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

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

  • Effective STL (Scott Meyers) 이것은 Effective C++ 가 언어 전체에 대해 수행한 것과 같은 STL에서 나온 표준 라이브러리 부분에 동일한 작업을 수행하는 것을 목표로 합니다. [검토]


중급

  • 더 효과적인 C++ (Scott Meyers) 효과적인 C++ 보다 훨씬 더 많은 경험 법칙 . 첫 번째 책의 내용만큼 중요하지는 않지만 그래도 알아두면 좋습니다.

  • Exceptional C++ (Herb Sutter) 일련의 퍼즐로 제시되는 이 책은 다양한 주제에 대한 심층적인 설명 외에도 RAII(Resource Acquisition is Initialization)를 통한 C++의 적절한 리소스 관리 및 예외 안전성에 대한 가장 훌륭하고 철저한 논의 중 하나입니다. pimpl 관용구, 이름 조회, 좋은 클래스 디자인 및 C++ 메모리 모델을 포함한 다른 주제. [검토]

  • More Exceptional C++ (Herb Sutter) C++의 효과적인 객체 지향 프로그래밍 및 STL의 올바른 사용에 대한 논의 외에도 Exceptional C++ 에서 다루지 않은 추가 예외 안전 주제를 다룹니다. [검토]

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

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

  • C++ Templates: The Complete Guide (David Vandevoorde and Nicolai M. Josuttis) 이것은 C++11 이전에 존재했던 템플릿에 대한 책입니다. 매우 기본적인 것부터 가장 진보된 템플릿 메타프로그래밍에 이르기까지 모든 것을 다루고 템플릿이 어떻게 작동하는지(개념적으로 그리고 어떻게 구현되는지)에 대한 모든 세부 사항을 설명하고 많은 일반적인 함정에 대해 논의합니다. 부록에 단일 정의 규칙(ODR) 및 과부하 해결에 대한 훌륭한 요약이 있습니다. C++11, C++14 및 C++17을 다루는 두 번째 에디션이 이미 출판되었습니다. [검토]

  • C++ 17 - The Complete Guide (Nicolai M. Josuttis) 이 책은 '인라인 변수', 'constexpr if'와 같은 간단한 기능부터 '다형성 메모리 리소스' 및 '새로 만들기 및 과도하게 정렬된 데이터로 삭제'. [검토]

  • C++ 실행 (Bartosz Milewski). 이 책은 처음부터 응용 프로그램을 빌드하여 C++와 그 기능을 설명합니다. [검토]

  • C++의 함수형 프로그래밍 (Ivan Čukić). 이 책은 최신 C++(C++11 이상)에 대한 함수형 프로그래밍 기술을 소개합니다. C++에 함수형 프로그래밍 패러다임을 적용하려는 사람들에게 아주 좋은 글입니다.


고급의

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

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

  • C++ Concurrency In Action (Anthony Williams) 스레드 라이브러리, 원자 라이브러리, C++ 메모리 모델, 잠금 및 뮤텍스를 비롯한 C++11 동시성 지원과 다중 스레드 응용 프로그램 설계 및 디버깅 문제를 다루는 책입니다. C++14 및 C++17을 다루는 두 번째 에디션이 이미 출판되었습니다. [검토]

  • 고급 C++ 메타프로그래밍 (David Di Gennaro) 이론보다 실습에 더 중점을 둔 TMP 기술의 C++11 이전 매뉴얼입니다. 이 책에는 수많은 스니펫이 있으며 그 중 일부는 유형 특성으로 인해 쓸모없게 되었지만 그럼에도 불구하고 알아두면 유용한 기술입니다. 기발한 서식/편집을 참을 수 있다면 Alexandrescu보다 읽기 쉽고 틀림없이 더 보람이 있습니다. 보다 숙련된 개발자의 경우 일반적으로 광범위한 경험을 통해서만 발생하는 C++의 어두운 구석(특이점)에 대해 알아낼 수 있는 좋은 기회가 있습니다.

  • 대규모 C++ 볼륨 I, 프로세스 및 아키텍처 (John Lakos). 이전 책 '대규모 C++ 설계'를 확장하는 3부작 시리즈 중 1부. Lakos는 매우 큰 C++ 소프트웨어 프로젝트를 관리하기 위해 테스트를 거친 기술을 설명합니다. 대형 C++ 소프트웨어 프로젝트에서 작업하는 경우 물리적 구조와 논리적 구조 간의 관계, 구성 요소 전략 및 재사용에 대해 자세히 설명하는 훌륭한 읽기 자료입니다.


참조 스타일 - 모든 수준

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에 포함될 가능성이 있는 새로운 기능을 문서화 한 보다 새로운 초안 을 선호할 것입니다.

  • New C++ 개요(C++11/14) (PDF 전용) (Scott Meyers) ( C++14용으로 업데이트됨 ) 다음은 에서 제공하는 3일 교육 과정의 프레젠테이션 자료(슬라이드 및 일부 강의 노트)입니다. C++에서 매우 존경받는 작가인 Scott Meyers. 항목 목록이 짧음에도 불구하고 품질이 높습니다.

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

  • C++ Super-FAQ (Marshall Cline, Bjarne Stroustrup 및 기타)는 이전에 Marshall Cline 및 Bjarne Stroustrup이 개별적으로 유지 관리하고 새로운 기여도 통합한 C++ FAQ를 통합하기 위한 Standard C++ Foundation의 노력입니다. 항목은 주로 중급 수준의 문제를 다루며 종종 유머러스한 어조로 작성됩니다. 일부 항목은 아직 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++ 소프트웨어 프로젝트에서 작업해야 하는 경우 한 알의 소금 이상을 가져가야 하지만 읽을 수 있습니다. 확장된 이후의 책 시리즈 Large Scale C++ volume I-III와 혼동하지 마십시오.

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

  • Annotated C++ Reference Manual (Bjarne Stroustrup, Margaret A. Ellis) 이 책은 템플릿, 예외, 네임스페이스 및 새로운 캐스트가 아직 도입되지 않은 1989 C++ 2.0 버전을 탐구한다는 점에서 상당히 구식입니다. 그러나 이 책은 언어의 이론적 근거, 가능한 구현 및 기능을 설명하는 당시의 전체 C++ 표준을 살펴봅니다. 이 책은 C++에 대한 프로그래밍 원리와 패턴을 배우기 위한 책이 아니라 C++ 언어의 모든 측면을 이해하기 위한 책입니다.

  • C++로 생각하기 (Bruce Eckel, 2nd Edition, 2000). 두 권; 인트로 레벨 책의 튜토리얼 스타일 무료 세트입니다. 다운로드: vol 1 , vol 2 . 불행히도 공식 정오표 목록이 없는 몇 가지 사소한 오류(예: 임시 오류가 자동으로 const 부분적인 제 3 자 정오표 목록에서 볼 수 있습니다 http://www.computersciencelab.com/Eckel.htm ,하지만 분명히 유지되지 않습니다.

  • 과학 및 공학 C++: 고급 기술 및 예제 소개 (John Barton 및 Lee Nackman) 수치적 방법의 맥락에서 C++에서 사용할 수 있는 모든 기능을 설명하고 사용하려고 시도한 포괄적이고 매우 상세한 책입니다. 그것은 당시 Curiously Recurring Template Pattern(CRTP, Barton-Nackman 트릭이라고도 함)과 같은 몇 가지 새로운 기술을 도입했습니다. 차원 분석 및 자동 미분과 같은 여러 기술을 개척했습니다. 표현식 파서에서 Lapack 래퍼에 이르기까지 많은 컴파일 가능하고 유용한 코드가 함께 제공되었습니다. 코드는 여전히 온라인에서 사용할 수 있습니다 . 불행히도 이 책들은 스타일과 C++ 기능 면에서 다소 구식이 되었지만 그 당시에는 놀라운 역작이었습니다(1994, pre-STL). 역학 상속에 대한 장은 이해하기가 약간 복잡하고 그다지 유용하지 않습니다. 이동 의미론과 STL에서 배운 교훈을 포함하는 이 고전 책의 업데이트된 버전은 매우 좋을 것입니다.


Community Wiki

출처 : 여기를 클릭하세요


출처 : http:www.stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list

반응형