Câu hỏi Sách và danh sách sách Definitive C ++


Câu hỏi này cố gắng thu thập vài viên ngọc trai trong số hàng chục cuốn sách C ++ xấu được xuất bản hàng năm.

Không giống như nhiều ngôn ngữ lập trình khác, thường được chọn khi di chuyển từ các hướng dẫn tìm thấy trên Internet, rất ít người có thể nhanh chóng chọn C ++ mà không cần nghiên cứu một cuốn sách C ++ được viết tốt. Đó là cách quá lớn và phức tạp để làm điều này. Thực tế, nó quá lớn và phức tạp, có rất nhiều sách C ++ rất tệ ngoài đó. Và chúng tôi không nói về phong cách xấu, nhưng những thứ như thể thao lỗi thực tế rõ ràng và quảng cáo phong cách lập trình không hợp lệ xấu.

Vui lòng chỉnh sửa câu trả lời được chấp nhận để cung cấp sách chất lượng và mức độ kỹ năng gần đúng - tốt hơn  sau  thảo luận về việc bạn thêm vào phòng chat C ++. (Các quy định có thể không thương tiếc hoàn tác công việc của bạn nếu họ không đồng ý với đề xuất.) Thêm một mô tả / mô tả ngắn về mỗi cuốn sách mà bạn đã đọc / hưởng lợi từ cá nhân. Vui lòng tranh luận về chất lượng, tiêu đề, v.v. Sách đáp ứng các tiêu chí sẽ được thêm vào danh sách. Sách có các đánh giá của Hiệp hội Người dùng C và C ++ (ACCU) có liên kết đến bài đánh giá.

* Lưu ý: Các câu hỏi thường gặp và các tài nguyên khác có thể được tìm thấy trong Thông tin thẻ C ++ và dưới .


4253


gốc




Các câu trả lời:


Người bắt đầu

Giới thiệu, không có kinh nghiệm lập trình trước đó

  • C ++ Primer * (Stanley Lippman, Josée Lajoie, và Barbara E. Moo) (cập nhật cho C ++ 11) Đến 1k trang, đây là một giới thiệu rất kỹ lưỡng về C ++ bao gồm tất cả mọi thứ trong ngôn ngữ ở định dạng rất dễ tiếp cận và chi tiết hơn. Ấn bản thứ năm (phát hành ngày 16 tháng 8 năm 2012) bao gồm C ++ 11. [Ôn tập] 

  • Lập trình: Nguyên tắc và thực hành Sử dụng C ++ (Bjarne Stroustrup, 2nd Edition - 25 tháng 5 năm 2014) (cập nhật cho C ++ 11 / C ++ 14) Giới thiệu về lập trình bằng cách sử dụng C ++ bởi tác giả của ngôn ngữ. Một đọc tốt, mà giả định không có kinh nghiệm lập trình trước đó, nhưng không chỉ dành cho người mới bắt đầu.

* Không được nhầm lẫn với C ++ Primer Plus (Stephen Prata), với một ít thuận lợi hơn đáng kể ôn tập.

Giới thiệu, với kinh nghiệm lập trình trước đó

  • Tour của C ++ (Bjarne Stroustrup) (Ấn bản thứ 2 cho C ++ 17) "Tham quan" là một tổng quan về hướng dẫn nhanh (khoảng 180 trang và 14 chương) của tất cả các tiêu chuẩn C ++ (ngôn ngữ và thư viện chuẩn, và sử dụng C ++ 11) ở mức độ vừa phải cao cho những người đã biết C ++ hoặc ít nhất là những lập trình viên có kinh nghiệm. Cuốn sách này là một phiên bản mở rộng của tài liệu cấu thành Chương 2-5 của Ngôn ngữ lập trình C ++, ấn bản thứ 4.

  • Tăng tốc C ++ (Andrew Koenig và Barbara Moo, Ấn bản 1 - 24 tháng 8 năm 2000) về cơ bản này bao gồm cùng một nền tảng như C ++ Primer, nhưng làm như vậy trên một phần tư không gian của nó. Điều này chủ yếu là vì nó không cố gắng để trở thành một giới thiệu lập trình, nhưng giới thiệu về C ++ cho những người trước đây đã được lập trình bằng một số ngôn ngữ khác. Nó có một đường cong học tập dốc hơn, nhưng, đối với những người có thể đối phó với điều này, nó là một giới thiệu rất nhỏ gọn về ngôn ngữ. (Trong lịch sử, nó đã phá vỡ nền tảng mới bằng cách là cuốn sách của người mới bắt đầu đầu tiên sử dụng cách tiếp cận hiện đại để dạy ngôn ngữ.) Mặc dù vậy, C ++ nó dạy hoàn toàn là C ++ 98. [Ôn tập]

Thực hành tốt nhất

  • Hiệu quả C ++ (Scott Meyers, 3rd Edition - 22 tháng 5, 2005) Điều này được viết với mục đích trở thành cuốn sách lập trình C ++ thứ hai tốt nhất nên đọc, và nó đã thành công. Các phiên bản trước đó nhằm vào các lập trình viên đến từ C, ấn bản thứ ba thay đổi điều này và nhắm đến các lập trình viên đến từ các ngôn ngữ như Java. Nó trình bày ~ 50 quy tắc ngón tay cái dễ nhớ cùng với lý do của chúng trong một phong cách rất dễ tiếp cận (và thú vị). Đối với C ++ 11 và C ++ 14 các ví dụ và một số vấn đề đã lỗi thời và hiệu quả hiện đại C ++ nên được ưa thích. [Ôn tập]

  • Hiệu quả hiện đại C ++ (Scott Meyers) Đây là phiên bản mới của Hiệu quả C ++, nhằm vào các lập trình viên C ++ thực hiện chuyển đổi từ C ++ 03 sang C ++ 11 và C ++ 14.

  • STL hiệu quả (Scott Meyers) Điều này nhằm mục đích làm tương tự như một phần của thư viện chuẩn đến từ STL Hiệu quả C ++ đã làm cho toàn bộ ngôn ngữ: Nó trình bày các quy tắc của ngón tay cái cùng với lý do của chúng. [Ôn tập]

Trung gian

  • Hiệu quả hơn C ++ (Scott Meyers) Thậm chí nhiều quy tắc ngón tay cái hơn Hiệu quả C ++. Không quan trọng như những người trong cuốn sách đầu tiên, nhưng vẫn còn tốt để biết.

  • Xuất sắc C ++ (Herb Sutter) Được trình bày như một tập hợp các câu đố, đây là một trong những cuộc thảo luận tốt nhất và toàn diện về quản lý tài nguyên thích hợp và an toàn ngoại lệ trong C ++ thông qua Resource Acquisition là Khởi tạo (RAII) ngoài phạm vi phủ sóng sâu rộng các chủ đề bao gồm thành ngữ pimpl, tra cứu tên, thiết kế lớp tốt và mô hình bộ nhớ C ++. [Ôn tập]

  • Tính năng vượt trội hơn C ++ (Herb Sutter) Bao gồm các chủ đề an toàn ngoại lệ bổ sung không được đề cập trong Xuất sắc C ++, ngoài việc thảo luận về lập trình hướng đối tượng hiệu quả trong C ++ và sử dụng chính xác STL. [Ôn tập]

  • Kiểu C ++ vượt trội (Herb Sutter) Thảo luận về lập trình chung, tối ưu hóa và quản lý tài nguyên; cuốn sách này cũng có một giải thích tuyệt vời về cách viết mã mô đun trong C ++ bằng cách sử dụng các hàm không phải thành viên và nguyên tắc trách nhiệm duy nhất. [Ôn tập]

  • Tiêu chuẩn mã hóa C ++ (Herb Sutter và Andrei Alexandrescu) “Tiêu chuẩn mã hóa” ở đây không có nghĩa là “tôi nên dùng mã số của mình bao nhiêu khoảng trống?” Cuốn sách này chứa 101 thực hành tốt nhất, thành ngữ và những cạm bẫy phổ biến có thể giúp bạn viết chính xác, dễ hiểu và mã C ++ hiệu quả. [Ôn tập]

  • Mẫu C ++: Hướng dẫn đầy đủ (David Vandevoorde và Nicolai M. Josuttis) Đây là các cuốn sách về các mẫu khi chúng tồn tại trước C ++ 11. Nó bao gồm mọi thứ từ những điều cơ bản đến một số mẫu siêu lập trình nâng cao nhất và giải thích mọi chi tiết về cách các mẫu làm việc (cả về khái niệm lẫn cách chúng được thực hiện) và thảo luận về nhiều cạm bẫy phổ biến. Có tóm tắt tuyệt vời về Quy tắc Một Định nghĩa (ODR) và độ phân giải quá tải trong các phụ lục. A Phiên bản thứ hai bao gồm C ++ 11, C ++ 14 và C ++ 17 đã được xuất bản. [Ôn tập]


Nâng cao

  • Thiết kế C ++ hiện đại (Andrei Alexandrescu) Một cuốn sách đột phá về kỹ thuật lập trình chung nâng cao. Giới thiệu thiết kế dựa trên chính sách, danh sách loại và thành phần lập trình cơ bản sau đó giải thích có bao nhiêu mẫu thiết kế hữu ích (bao gồm phân bổ đối tượng nhỏ, functors, nhà máy, khách truy cập và đa phương thức) có thể được triển khai hiệu quả, theo mô đun và sạch . [Ôn tập]

  • Lập trình Metaprogram C ++ (David Abrahams và Aleksey Gurtovoy)

  • C ++ Concurrency In Action (Anthony Williams) Một cuốn sách bao gồm hỗ trợ đồng thời C ++ 11 bao gồm thư viện chủ đề, thư viện nguyên tử, mô hình bộ nhớ C ++, khóa và mutexes, cũng như các vấn đề về thiết kế và gỡ lỗi các ứng dụng đa luồng.

  • Lập trình siêu lập trình C ++ nâng cao (Davide Di Gennaro) Cẩm nang TMP trước C ++ 11, tập trung nhiều hơn vào thực hành hơn lý thuyết. Có một tấn các đoạn trong cuốn sách này, một số trong số đó đã bị lỗi thời bởi các đặc điểm kiểu, nhưng các kỹ thuật, dù sao cũng hữu ích để biết. Nếu bạn có thể đưa ra định dạng / chỉnh sửa kỳ quặc, nó dễ đọc hơn so với Alexandrescu, và được cho là đáng giá hơn. Đối với các nhà phát triển có kinh nghiệm hơn, có một cơ hội tốt mà bạn có thể nhận được một cái gì đó về một góc tối của C ++ (một quirk) mà thường chỉ đến về thông qua kinh nghiệm sâu rộng.


Kiểu tham chiếu - Tất cả các cấp

  • Ngôn ngữ lập trình C ++ (Bjarne Stroustrup) (cập nhật cho C ++ 11Phần giới thiệu cổ điển về C ++ của người tạo ra nó. Được viết để song song với K & R cổ điển, điều này thực sự đọc rất giống và bao gồm tất cả mọi thứ từ ngôn ngữ cốt lõi đến thư viện chuẩn, đến các mô hình lập trình cho triết lý của ngôn ngữ. [Ôn tập] Lưu ý: Tất cả các bản phát hành của tiêu chuẩn C ++ được theo dõi trong câu hỏi này: Tôi tìm tiêu chuẩn C ++ hiện tại ở đâu.

  • Hướng dẫn và tham khảo thư viện chuẩn C ++ (Nicolai Josuttis) (cập nhật cho C ++ 11) Các giới thiệu và tham khảo cho Thư viện chuẩn C ++. Ấn bản thứ hai (phát hành vào ngày 9 tháng 4 năm 2012) bao gồm C ++ 11. [Ôn tập]

  • Dòng C ++ IO và Locales (Angelika Langer và Klaus Kreft) Có rất ít điều để nói về cuốn sách này, ngoại trừ việc, nếu bạn muốn biết bất cứ điều gì về các luồng và ngôn ngữ, thì đây là nơi duy nhất để tìm câu trả lời dứt khoát. [Ôn tập]

C ++ 11/14 Tham khảo:

  • Tiêu chuẩn C ++ (INCITS / ISO / IEC 14882-2011) Điều này, tất nhiên, là trọng tài cuối cùng của tất cả đó là hoặc không phải là C + +. Tuy nhiên, hãy lưu ý rằng nó được dự định hoàn toàn như một tham chiếu cho có kinh nghiệm người dùng sẵn sàng dành thời gian và nỗ lực đáng kể cho sự hiểu biết của họ. Như thường lệ, bản phát hành đầu tiên là khá đắt tiền ($ 300 + US), nhưng nó đã được phát hành dưới dạng điện tử với giá $ 60US.

  • Tiêu chuẩn C ++ 14 có sẵn, nhưng dường như không ở dạng kinh tế - trực tiếp từ ISO nó tốn 198 Franc Thụy Sĩ (khoảng 200 USD). Đối với hầu hết mọi người, dự thảo cuối cùng trước khi tiêu chuẩn hóa là quá đầy đủ (và miễn phí). Nhiều người sẽ thích bản nháp mới hơn, ghi lại các tính năng mới có khả năng được đưa vào C ++ 17.

  • Tổng quan về C ++ mới (C ++ 11/14) (chỉ dành cho PDF) (Scott Meyers) (cập nhật cho C ++ 1y / C ++ 14Đây là những tài liệu trình bày (slide và một số bài giảng) của khóa đào tạo ba ngày do Scott Meyers cung cấp, một tác giả được kính trọng về C ++. Mặc dù danh sách các mục là ngắn, chất lượng cao.

  • Các Nguyên tắc cốt lõi của C ++ (C ++ 11/14/17 /…) (do Bjarne Stroustrup và Herb Sutter biên soạn) là một tài liệu trực tuyến đang phát triển bao gồm một bộ hướng dẫn để sử dụng C ++ hiện đại. Các hướng dẫn được tập trung vào các vấn đề tương đối cao hơn, chẳng hạn như giao diện, quản lý tài nguyên, quản lý bộ nhớ và đồng thời ảnh hưởng đến kiến ​​trúc ứng dụng và thiết kế thư viện. Dự án là công bố tại CppCon'15 bởi Bjarne Stroustrup và những người khác và đón nhận những đóng góp từ cộng đồng. Hầu hết các hướng dẫn được bổ sung một lý do và các ví dụ cũng như các cuộc thảo luận về hỗ trợ công cụ có thể. Nhiều quy tắc được thiết kế đặc biệt để có thể tự động kiểm tra bằng các công cụ phân tích tĩnh.

  • Các C ++ Super-FAQ (Marshall Cline, Bjarne Stroustrup và những người khác) là một nỗ lực của Quỹ Standard C ++ để thống nhất các câu hỏi thường gặp C ++ trước đây được duy trì riêng bởi Marshall Cline và Bjarne Stroustrup và cũng kết hợp những đóng góp mới. Các mục chủ yếu là giải quyết các vấn đề ở cấp độ trung cấp và thường được viết với một giai điệu hài hước. Không phải tất cả các mục có thể được cập nhật đầy đủ với phiên bản mới nhất của tiêu chuẩn C ++.

  • cppreference.com (C ++ 03/11/14/17 / ...) (bắt đầu bởi Nate Kohl) là một wiki tóm tắt các tính năng cơ bản của ngôn ngữ lõi và có tài liệu mở rộng của thư viện chuẩn C ++. Tài liệu này rất chính xác nhưng dễ đọc hơn tài liệu chuẩn chính thức và cung cấp điều hướng tốt hơn do tính chất wiki của nó. Dự án tài liệu tất cả các phiên bản của tiêu chuẩn C ++ và trang web cho phép lọc hiển thị cho một phiên bản cụ thể. Dự án là trình bày bởi Nate Kohl tại CppCon'14.


Kinh điển / Cũ hơn

Chú thích: Một số thông tin trong những cuốn sách này có thể không được cập nhật hoặc không còn được coi là thực hành tốt nhất.

  • Thiết kế và tiến hóa của C ++ (Bjarne Stroustrup) Nếu bạn muốn biết tại sao ngôn ngữ là cách nó, cuốn sách này là nơi bạn tìm thấy câu trả lời. Điều này bao gồm mọi thứ trước khi chuẩn hóa của C ++.

  • Ruminations trên C ++ - (Andrew Koenig và Barbara Moo) [Ôn tập]

  • Các phong cách và thành ngữ lập trình C ++ nâng cao (James Coplien) Một người tiền nhiệm của phong trào mô hình, nó mô tả nhiều "thành ngữ" cụ thể của C ++. Nó chắc chắn là một cuốn sách rất tốt và vẫn có thể đáng đọc nếu bạn có thể dành thời gian, nhưng khá cũ và không cập nhật với C ++ hiện tại.

  • Quy mô lớn C ++ Thiết kế phần mềm (John Lakos) Lakos giải thích các kỹ thuật quản lý các dự án phần mềm C ++ rất lớn. Chắc chắn, một đọc tốt, nếu nó chỉ được cập nhật. Nó được viết lâu trước C ++ 98 và bỏ lỡ nhiều tính năng (ví dụ: không gian tên) quan trọng đối với các dự án quy mô lớn. Nếu bạn cần phải làm việc trong một dự án phần mềm C ++ lớn, bạn có thể muốn đọc nó, mặc dù bạn cần phải mất nhiều hơn một hạt muối với nó. Tập đầu tiên của ấn bản mới là dự kiến ​​vào năm 2018.

  • Bên trong Mô hình đối tượng C ++ (Stanley Lippman) Nếu bạn muốn biết các hàm thành viên ảo thường được triển khai như thế nào và các đối tượng cơ sở thường được đặt trong bộ nhớ trong kịch bản đa thừa kế như thế nào, và tất cả điều này ảnh hưởng đến hiệu suất như thế nào chủ đề.

  • Hướng dẫn tham khảo C ++ được chú thích (Bjarne Stroustrup, Margaret A. Ellis) Cuốn sách này khá lỗi thời trong thực tế là nó khám phá phiên bản 1989 C ++ 2.0 - Các khuôn mẫu, ngoại lệ, không gian tên và các phôi mới chưa được giới thiệu. Tuy nhiên, nói rằng, cuốn sách này trải qua toàn bộ tiêu chuẩn C ++ về thời gian giải thích lý do, khả năng triển khai và các tính năng của ngôn ngữ. Đây không phải là một cuốn sách để tìm hiểu các nguyên tắc và mô hình lập trình trên C ++, nhưng để hiểu mọi khía cạnh của ngôn ngữ C ++.

  • Suy nghĩ trong C ++ (Bruce Eckel) Hai tập; là một phong cách hướng dẫn miễn phí tập hợp các sách cấp giới thiệu. Tải xuống: vol 1, vol 2. Thật không may, họ bị hủy hoại bởi một số lỗi nhỏ (ví dụ: duy trì thời gian đó sẽ tự động const), không có danh sách errata chính thức. Phần 3rd bên danh sách errata có sẵn tại (http://www.computersciencelab.com/Eckel.htm), nhưng dường như nó không được duy trì.

  • Khoa học và Kỹ thuật C ++: Giới thiệu về kỹ thuật và ví dụ nâng cao (John Barton và Lee Nackman) Nó là một cuốn sách toàn diện và rất chi tiết đã cố gắng giải thích và tận dụng tất cả các tính năng có sẵn trong C ++, trong bối cảnh của các phương pháp số. Nó giới thiệu tại thời điểm một số kỹ thuật mới, chẳng hạn như mẫu Curiously Recurring Template (CRTP, còn được gọi là thủ thuật Barton-Nackman). Nó đi tiên phong trong một số kỹ thuật như phân tích chiều và phân biệt tự động. Nó đi kèm với rất nhiều mã compilable và hữu ích, từ một trình phân tích cú pháp biểu thức đến một trình bao bọc Lapack. Mã này vẫn có sẵn ở đây: http://www.informit.com/store/scientific-and-engineering-c-plus-plus-an-introduction-9780201533934. Thật không may, những cuốn sách đã trở thành hơi lỗi thời trong phong cách và các tính năng C ++, tuy nhiên, nó là một tour du lịch đáng kinh ngạc-de-lực vào thời điểm đó (1994, trước STL). Các chương về thừa kế động lực có một chút phức tạp để hiểu và không hữu ích lắm. Một phiên bản cập nhật của cuốn sách kinh điển này bao gồm các ngữ nghĩa di chuyển và các bài học kinh nghiệm từ STL sẽ rất hay.


4019



Có danh sách, có lẽ, c ++ sách KHÔNG NÊN được đọc? - G.Rassovsky
@G Rassovsky: Tất cả các cuốn sách hứa hẹn sẽ dạy X trong Y giờ. Ví dụ Tìm hiểu C ++ trong 24 giờ. Tôi tin rằng tất cả các cuốn sách như vậy là tốt hơn tránh. - i_am_zero
Tôi ghét phải bước vào đôi giày của bất kỳ ai, nhưng tôi không khuyên bạn nên dùng "Thinking in C ++" của Bruce Eckel mặc dù tôi tôn trọng tác giả xuất bản tài liệu của mình trực tuyến miễn phí. Quan điểm của cuốn sách cho thấy việc sử dụng C ++ và chương trình "hướng đối tượng" tương đối kém hoặc không hiệu quả, tương tự như ứng dụng nghèo nàn của các mẫu thiết kế GOF. Tôi tìm thấy nó một cuốn sách giới thiệu thú vị để lập trình nói chung, nhưng khi ai đó trở nên quen thuộc hơn với lập trình và (đặc biệt) khoa học máy tính nói chung, tôi tìm thấy những cuốn sách suy nghĩ hoàn toàn trong các thuật ngữ "cổ điển" OOP bất lợi cho giáo dục. - Alexander Pritchard
Tăng tốc C ++ là từ năm 2000. Tôi có nên lo lắng rằng nó đã lỗi thời? - AutonomousApps
Tôi nghĩ sẽ tốt nếu bạn đặt ngày xuất bản cho ấn bản (với số ấn bản nếu có). - Aaron Hall♦