Питання Остаточний посібник з книги та список C ++


Це питання намагається зібрати кілька перлів серед десятків невдалих книг C ++, які публікуються щороку.

На відміну від багатьох інших мов програмування, які часто вибираються в Інтернеті, деякі з них можуть швидко забрати C ++, не вивчаючи добре написану C ++ книгу. Це занадто великий і складний для цього спосіб. Фактично, це так велика і складна, що Є дуже багато дуже поганих книг C ++ там. І ми говоримо не про поганий стиль, а про спортивні справи явно очевидні фактичні помилки і заохочення асиметрично поганих стилів програмування.

Будь ласка, відредагуйте прийняту відповідь, щоб надати якісні книги і приблизний рівень майстерності - бажано  після  обговорюючи ваше додавання в C + + чат. (Працівники можуть нещадно скасувати вашу роботу, якщо вони не погоджуються з рекомендацією.) Додайте короткий опис / опис кожної книги, яку ви особисто читали / отримали від вас користь. Не соромтеся обговорювати якість, заголовки тощо. Книги, які відповідають критеріям, будуть додані до списку. Книги, які мають відгуки Асоціації користувачів C і C ++ (ACCU), мають посилання на огляд.

* Примітка. Часті питання та інші ресурси можна знайти в Тег тега C + + і під .


4253


походження




Відповіді:


Початківець

Вступний, немає попереднього досвіду програмування

  • C ++ Primer * (Стенлі Ліппман, Хосе Лайой та Барбара Е. Му) (оновлено для C ++ 11) Прийшовши на сторінки 1k, це дуже ретельне введення в C ++, яке охоплює майже все на мові у дуже доступному форматі та у деталях. П'яте видання (випущене 16 серпня 2012 року) охоплює C ++ 11. [Огляд] 

  • Програмування: принципи та практика використання C ++ (Bjarne Stroustrup, 2-е видання - 25 травня 2014 р.) (оновлено для C ++ 11 / C ++ 14) Вступ до програмування за допомогою C ++ автором мови. Гарне читання, що не передбачає попереднього досвіду програмування, але це не тільки для початківців.

* Не плутати з C + + Primer Plus (Стівен Прата), з значно менш сприятливими огляд.

Вступний, з попереднім досвідом програмування

  • Тур на C ++ (Bjarne Stroustrup) (2 видання для C ++ 17) "Тур" - це швидкий (близько 180 сторінок та 14 розділів) підручник з огляду всіх стандартних C ++ (мова та стандартна бібліотека, і за допомогою C ++ 11) на помірно високому рівні для людей, які вже знають C ++ або принаймні досвідчені програмісти. Ця книга є розширеною версією матеріалу, який складається з розділів 2-5 "Мова програмування C ++", 4 видання.

  • Прискорений C ++ (Ендрю Кеніг та Барбара Му, 1-е видання - 24 серпня 2000 р.) Це в основному охоплює ту ж саму основу, що й C ++ Primer, але робить це на четвертої частини свого простору. Це в основному тому, що воно не намагається стати вступом до програмування, але вступ до C ++ для людей, які раніше програмували іншою мовою. Вона має більш крутий кривий навчання, але для тих, хто може впоратися з цим, це дуже компактне вступ до мови. (Історично це зламало нове підґрунтя, будучи першою книжкою для початківців щодо використання сучасного підходу до навчання мови.) Незважаючи на це, C ++ це викладає чисто C ++ 98. [Огляд]

Кращі практики

  • Ефективний C ++ (Scott Meyers, 3-е видання - 22 травня 2005 р.). Це було написано з метою бути кращою другою книгою програмістів C ++, яку треба читати, і це вдалося. Раніше видання були спрямовані на програмістів, що надходять з C, третє видання змінює це і орієнтоване на програмістів з таких мов, як Java. У ньому представлено близько 50 правильно введених правил великого пальця разом з їх обгрунтуванням у дуже доступному (і приємному) стилі. Для C ++ 11 та C ++ 14 приклади та декілька проблем є застарілими та мають бути кращими для ефективного сучасного C ++. [Огляд]

  • Ефективний сучасний C ++ (Scott Meyers) Це в основному нова версія Ефективний C ++, спрямований на програмістів C ++, що здійснюють перехід від C ++ 03 до C ++ 11 та C ++ 14.

  • Ефективний STL (Scott Meyers). Це має на меті зробити те ж саме в частині стандартної бібліотеки, що надходить від STL, що Ефективний C ++ зробив це мовою в цілому: в ньому представлені правила великого пальця разом з їх обгрунтуванням. [Огляд]

Проміжний

  • Більш ефективний C ++ (Скотт Мейерс) Ще більше правил, ніж Ефективний C ++. Не настільки важливі, як ті, що були в першій книзі, але все ж добре знати.

  • Винятковий C ++ (Herb Sutter), представлений як набір загадок, це має одне з кращих та глибоких дискусій щодо належного управління ресурсами та безпеки винятків в C ++ через ініціалізацію ресурсів (RAII) на додаток до поглибленого висвітлення різних інших Теми, включаючи іміометр pimpl, пошук імен, дизайн класу добре, а також модель пам'яті C ++. [Огляд]

  • Більше виняткового C ++ (Herb Sutter) включає додаткові теми безпеки, які не охоплюються Винятковий C ++, крім обговорення ефективного об'єктно-орієнтованого програмування на C ++ та коректного використання STL. [Огляд]

  • Винятковий стиль C ++ (Herb Sutter) Обговорює загальне програмне забезпечення, оптимізацію та управління ресурсами; ця книга також має відмінну експозицію, як написати модульний код у C ++, використовуючи функції, що не є членами, і принцип єдиної відповідальності. [Огляд]

  • Стандарти кодування C + + (Herb Sutter та Andrei Alexandrescu) "Стандарти кодування" тут не означає, "скільки просторів слід відступити від мого коду?" Ця книга містить 101 кращих практик, ідіоми та загальних помилок, які можуть допомогти вам написати правильні, зрозумілі та ефективний код C ++. [Огляд]

  • Шаблони C ++: повне керівництво (Давид Вандеворде та Ніколай М. Джоутімс) Це в книгу про шаблони, як вони існували до C ++ 11. Він охоплює все, починаючи від самого основного, до деяких найсучасніших метапроведення шаблонів, і пояснює кожну деталь того, як працюють шаблони (як концептуально, так і як вони реалізуються) і обговорює багато загальних підводних каменів. Має чудові резюме правил визначення одного визначення (ODR) та роздільної здатності перевантажень у додатках. А. друге видання Покриття C ++ 11, C ++ 14 та C ++ 17 вже опубліковано. [Огляд]


Розширений

  • Сучасний дизайн C ++ (Andrei Alexandrescu) Новаторська книга про передові загальні методи програмування. Представляє дизайн, типові списки та фундаментальні загальні ідіоми програмування, а потім пояснює, скільки корисних моделей розробки (включаючи невеликі розподілювачі об'єктів, функтори, фабрики, відвідувачі та багато методів) можуть бути впроваджені ефективно, модульно та чисто за допомогою загальних програм . [Огляд]

  • Metaprogramming C + + Template (Девід Абрахамс і Олексій Гуртовой)

  • C + + сумісність у дії (Anthony Williams) Книга, що містить підтримку паралельного співтовариства C ++ 11, включаючи бібліотеку потоків, бібліотеку атомів, модель пам'яті C ++, блокування та міксети, а також проблеми проектування та налагодження багатопоточних додатків.

  • Розширений Metaprogramming C ++ (Davide Di Gennaro) До початку курсу C + + 11 посібник з техніки ТМП більше сфокусований на практиці, ніж теорії. В цій книзі є тонна фрагментів, деякі з яких застаріли за типами рисунків, однак методи, однак, корисні для знання. Якщо ви можете миритися з химерним форматуванням / редагуванням, це легше прочитати, ніж Alexandrescu, і, можливо, більш корисним. Для більш досвідчених розробників є хороший шанс, що ви можете підібрати щось про темний куточок C + + (примха), що зазвичай відбувається лише за рахунок великого досвіду.


Довідковий стиль - всі рівні

  • Мова програмування C ++ (Bjarne Stroustrup) (оновлено для C ++ 11) Класичне введення в C ++ його творець. Написано паралельно з класичним K & R, це дійсно читає дуже схоже на це і охоплює майже все, від основної мови до стандартної бібліотеки, до парадигм програмування до філософії мови. [Огляд] Примітка. У цьому питанні відстежуються всі випуски стандарту C ++: Де знайти поточний стандарт C ++.

  • Підручник зі стандартної бібліотеки C + та довідник (Nicolai Josuttis) (оновлено для C ++ 11) The введення та посилання на стандартну бібліотеку C ++. Друге видання (випущений 9 квітня 2012 року) охоплює C ++ 11. [Огляд]

  • C ++ IO Streams і локали (Анжеліка Лангер та Клаус Крефф). Про цю книгу дуже мало сказати, крім того, якщо ви хочете знати що-небудь про потоки та локали, то це одне місце, щоб знайти остаточні відповіді. [Огляд]

C ++ 11/14 Посилання:

  • Стандарт C ++ (INCITS / ISO / IEC 14882-2011) Це, звичайно, остаточний арбітр всього того, що є чи не C ++. Однак пам'ятайте, що він призначений винятково як довідник досвідчений користувачі готові приділяти значну увагу часу і зусиль. Як завжди, перший реліз був цілком дорогий ($ 300 + US), але зараз він був випущений в електронному вигляді за $ 60US.

  • Стандарт C ++ 14 доступний, але, мабуть, не в економічній формі - безпосередньо з ISO це коштує 198 швейцарських франків (близько 200 доларів США). Для більшості людей остаточний проект до стандартизації є більш ніж адекватним (і безкоштовним). Багато хто воліє ще більш оновлений проект, документування нових функцій, які, ймовірно, будуть включені в C ++ 17.

  • Огляд нового C ++ (C ++ 11/14) (лише для PDF) (Скотт Мейерс) (оновлено для C ++ 1y / C ++ 14) Це презентаційні матеріали (слайди та деякі лекційні замітки) триденного навчального курсу, запропонованого Скоттом Майєром, який є авторитетним автором на C ++. Хоча список предметів короткий, якість висока.

  • The Основні принципи C ++ (C ++ 11/14/17 / ...) (за редакцією Бьярне Струструп і Герб Саттер) є розвивається онлайновим документом, що складається з набору правил для використання сучасної C ++. Ці рекомендації зосереджені на відносно більш високих рівнях, таких як інтерфейси, управління ресурсами, управління пам'яттю та паралелі, що впливає на архітектуру додатків та дизайн бібліотеки. Проект був оголошено на CppCon'15 Bjarne Stroustrup та інші і вітає внески з боку громади. Більшість керівних принципів доповнюються обґрунтуванням та прикладами, а також обговоренням можливих інструментів підтримки. Багато правил розроблено спеціально для автоматичного контролю за допомогою інструментів статичного аналізу.

  • The C ++ Super-FAQ (Маршалл Клін, Бьєрне Струструп та інші) є зусиллям Фонду стандартів C ++, щоб об'єднати часто задані питання C ++, які раніше індивідуально підтримували Маршалл Клін і Бьєрне Струструп, а також включивши нові внески. Ці елементи переважно вирішують проблеми на проміжному рівні і часто написані гумористичним тоном. Не всі елементи можуть бути повністю оновлені з останнім виданням стандарту C ++ ще.

  • cppreference.com (C ++ 03/11/14/17 / ...) (ініційований Нейт Колем) являє собою вікі, що узагальнює основні основні функції мови та має велику документацію стандартної бібліотеки C ++. Документація дуже точна, але її легше читати, ніж офіційний стандартний документ, і забезпечує кращу навігацію завдяки своїй природі вікі. Проект документує всі версії стандарту C ++, і сайт дозволяє фільтрувати дисплей для певної версії. Проект був представлена ​​Нейт Колем на CppCon'14.


Класика / Старіше

Примітка: Деяка інформація, що міститься в цих книгах, може не бути актуальною або вважатися найкращою практикою.

  • Дизайн і еволюція C ++ (Bjarne Stroustrup) Якщо ви хочете знати чому мова така, як вона є, в цій книзі ви знайдете відповіді. Це охоплює все перед стандартизацією з C ++.

  • Заговорки на C ++ - (Ендрю Кеніг і Барбара Му) [Огляд]

  • Розширені стилі та стилі програмування C ++ (Джеймс Копліен). Попередник моделі руху, він описує багато "специфічних" ідентифікаторів, специфічних для C ++. Це, звичайно, дуже хороша книга, і, можливо, варто прочитати, якщо ви можете заощадити час, але досить старі, а не сучасні з поточним C ++.

  • Великий масштаб C ++ програмного забезпечення (Джон Лакос) Лакос пояснює методи керування дуже великими програмними програмами C ++. Звичайно, хороше читання, якщо воно тільки було в курсі. Він був написаний задовго до C ++ 98 і не виконує багатьох функцій (наприклад, просторів імен), важливих для великомасштабних проектів. Якщо вам потрібно працювати у великому програмному продукті C ++, можливо, ви захочете його прочитати, хоча вам потрібно взяти більше, ніж зерно солі. Перший том нової редакції є очікується в 2018 році.

  • Всередині об'єктної моделі C ++ (Stanley Ліппман) Якщо ви хочете знати, як віртуальний член функції зазвичай реалізуються і як база об'єктів, як правило, закладені в пам'яті в сценарії з кілька успадкування, і як все це впливає на продуктивність, це, де ви знайдете ретельне обговорення таких теми

  • Довідковий посібник з анотованим C ++ (Bjarne Stroustrup, Margaret A. Ellis) Ця книга досить застаріла в тому, що вона досліджує версію C ++ 2.0, 1989 р. - Шаблони, винятки, простору імен та нові видання ще не були введені. Промовляючи, однак, ця книга проходить через весь стандарт C ++ часу, що пояснює обгрунтування, можливі реалізації та особливості мови. Це не книга, щоб вивчати принципи та схеми програмування на C ++, але зрозуміти кожен аспект мови C ++.

  • Мислення в C ++ (Брюс Екель) Два томи; це стиль підручника безкоштовно набір книг вступного рівня. Завантаження: т. 1, т. 2. На жаль, вони затьмарені низкою тривіальних помилок (наприклад, збереження тимчасових файлів відбувається автоматично const), без офіційного списку помилок. Частковий 3rd Список помилок партії доступний на (http://www.computersciencelab.com/Eckel.htm), але це, очевидно, не підтримується.

  • Науково-технічний C ++: вступ до передових методів і прикладів (Джон Бартон і Лі Некман) Це всеохоплююча і дуже детальна книга, яка намагалася пояснити і використовувати всі функції, доступні в C ++, в контексті чисельних методів. Вона представила в той час кілька нових прийомів, таких як "Цікаво повторюваний шаблон шаблону" (CRTP, також називається "Barton-Nackman trick"). Він започаткував кілька методів, таких як вимірювальний аналіз та автоматична диференціація. Він прийшов з великою кількістю компилятивного та корисного коду, починаючи від аналізатора виразів до обгортки Lapack. Код все ще доступний тут: http://www.informit.com/store/scientific-and-engineering-c-plus-plus-an-introduction-9780201533934. На жаль, книги стали застарілими в стилі та функціях C ++, однак, це було неймовірним турнірним силам у той час (1994 р., Перед-STL). Глави про наслідування динаміки трохи складні для розуміння і не дуже корисні. Оновлена ​​версія цієї класичної книги, яка включає в себе семантику перекладу та уроки, отримані від STL, буде дуже приємною.


4019



Є список, можливо, C + + книг, які НЕ БУДУТЬ читати? - G.Rassovsky
@ Г. Рассовський: всі книги, які обіцяють навчати Х у годинах. Наприклад, вчитися C + + за 24 години. Я вважаю, що всі такі книги краще уникати. - i_am_zero
Я ненавиджу крокувати на взуття будь-кого, але я не рекомендую Брюса Еккеля "Думати в C + +", хоча я поважаю автора для публікації його матеріалів онлайн безкоштовно. З точки зору книги, відносно слабке або неефективне використання C + + та "об'єктно-орієнтованого" програмування, схоже на погане застосування шаблонів дизайну GoF. Я вважаю це цікавою вступною книгою для програмування взагалі, але, оскільки людина більше знайомиться з програмуванням і (особливо) інформатикою в цілому, я знаходжу книги, які думають чисто в "класичних" умовах ООП, які шкодять освіті. - Alexander Pritchard
Прискорений C ++ це з 2000 року. Чи повинен я турбуватися, що це застаріло? - AutonomousApps
Я думаю, що було б добре розмістити дати, опубліковані для видання (за наявності, номер редакції). - Aaron Hall♦