скачать - Полное руководство и список книг C++



лучшие книги по c++ на русском (1)

начинающий

Вводный, без опыта программирования

  • Учебник по C ++ * (Стэнли Липпман, Жозе Ладжой и Барбара Э. Му) ( обновлено для C ++ 11 ). Это 1-страничное введение, которое представляет собой очень подробное введение в C ++ и охватывает практически все в языке в очень доступном формате. и очень подробно. Пятое издание (выпущено 16 августа 2012 г.) охватывает C ++ 11. [Review]

  • Программирование: принципы и практика использования C ++ (Бьярн Страуструп, 2-е издание - 25 мая 2014 г.) ( обновлено для C ++ 11 / C ++ 14 ) Введение в программирование с использованием C ++ создателем языка. Хорошее чтение, которое не предполагает никакого предыдущего опыта программирования, но не только для начинающих.

* Не путать с C ++ Primer Plus (Стивен Прата) со значительно менее благоприятным review .

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

  • Тур по C ++ (Бьярне Страуструп) ( 2-е издание для C ++ 17 ) «Тур» - это краткий обзор (около 180 страниц и 14 глав) учебного пособия по всем стандартным C ++ (язык и стандартная библиотека, и с использованием C ++). 11 ) на умеренно высоком уровне для людей, которые уже знают C ++ или хотя бы являются опытными программистами. Эта книга представляет собой расширенную версию материала, который составляет главы 2-5 языка программирования C ++, 4-е издание.

  • Ускоренный C ++ (Эндрю Кениг и Барбара Му, 1-е издание - 24 августа 2000 г.) Это в основном охватывает ту же основу, что и C ++ Primer , но делает это на четвертой части своего пространства. Во многом это связано с тем, что оно не является введением в программирование , а представляет собой введение в C ++ для людей, которые ранее программировали на каком-либо другом языке. У него более крутая кривая обучения, но для тех, кто может с этим справиться, это очень компактное введение в язык. (Исторически она открыла новые возможности, будучи первой книгой для начинающих, которая использовала современный подход к обучению языку.) Несмотря на это, C ++, который она преподает, - это чисто C ++ 98. [Review]

Лучшие практики

  • Эффективный C ++ (Скотт Мейерс, 3-е издание - 22 мая 2005 г.) Это было написано с целью стать лучшей второй книгой, которую должны читать программисты на C ++, и это удалось. Предыдущие выпуски были нацелены на программистов, пришедших из C, третье издание изменило это и нацелено на программистов из таких языков, как Java. Он представляет ~ 50 легко запоминающихся эмпирических правил вместе с их обоснованием в очень доступном (и приятном) стиле. Для C ++ 11 и C ++ 14 примеры и некоторые проблемы устарели, и Effective Modern C ++ следует отдавать предпочтение. [Review]

  • Effective Modern C ++ (Скотт Мейерс) Это в основном новая версия Effective C ++ , предназначенная для программистов на C ++, которые переходят с C ++ 03 на C ++ 11 и C ++ 14.

  • Effective STL (Скотт Мейерс) Это делается для того, чтобы сделать ту же часть стандартной библиотеки из STL, что и Effective C ++ для языка в целом: в нем представлены практические правила и их обоснование. [Review]

промежуточный

  • Более эффективный C ++ (Скотт Мейерс) Еще больше практических правил, чем в Effective C ++ . Не так важно, как в первой книге, но все же полезно знать.

  • Исключительный C ++ (Херб Саттер) Представленный в виде набора головоломок, он представляет собой одно из лучших и подробных обсуждений правильного управления ресурсами и безопасности исключений в C ++ посредством Resource Acquisition is Initialization (RAII) в дополнение к углубленному охвату различных других тем, включая идиому pimpl, поиск имени, хороший дизайн классов и модель памяти C ++. [Review]

  • Подробнее Exceptional C ++ (Херб Саттер) Охватывает дополнительные темы безопасности исключений, не охваченные в Exceptional C ++ , в дополнение к обсуждению эффективного объектно-ориентированного программирования на C ++ и правильного использования STL. [Review]

  • Исключительный стиль C ++ (Херб Саттер) Обсуждает общее программирование, оптимизацию и управление ресурсами; В этой книге также содержится превосходное изложение того, как писать модульный код на C ++, используя функции, не являющиеся членами, и принцип единой ответственности. [Review]

  • Стандарты кодирования C ++ (Херб Саттер и Андрей Александреску) «Стандарты кодирования» здесь не означают «сколько пробелов я должен сделать отступом для моего кода?». Эта книга содержит 101 передовой опыт, идиомы и распространенные ошибки, которые могут помочь вам написать правильное, понятный и эффективный код C ++. [Review]

  • Шаблоны C ++: полное руководство (David Vandevoorde и Nicolai M. Josuttis) Это книга о шаблонах в том виде, в каком они существовали до C ++ 11. Он охватывает все, от самых базовых до самых передовых метапрограммирования шаблонов, и объясняет каждую деталь того, как работают шаблоны (как концептуально, так и как они реализованы), и обсуждает много распространенных ошибок. Имеет отличные сводки по правилу единого определения (ODR) и разрешению перегрузки в приложениях. Второе издание, охватывающее C ++ 11, C ++ 14 и C ++ 17, уже опубликовано. [Review]

  • C ++ 17 - Полное руководство (Николай М. Йосуттис) В этой книге описаны все новые функции, представленные в Стандарте C ++ 17, охватывающие все, от простых, таких как «встроенные переменные», «constexpr if», до «полиморфных». Ресурсы памяти »и« Новые и удаляемые с переподписанными данными ».

продвинутый

  • Современный дизайн C ++ (Андрей Александреску) Новаторская книга о передовых общих методах программирования. Представляет дизайн на основе политик, списки типов и фундаментальные общие идиомы программирования, а затем объясняет, сколько полезных шаблонов проектирования (включая распределители небольших объектов, функторы, фабрики, посетителей и мульти-методы) могут быть реализованы эффективно, модульно и чисто с использованием универсального программирования. , [Review]

  • Шаблон метапрограммирования на С ++ (Дэвид Абрахамс и Алексей Гуртовой)

  • C ++ Concurrency In Action (Энтони Уильямс) Книга, посвященная поддержке параллелизма C ++ 11, включая библиотеку потоков, библиотеку атомарности, модель памяти C ++, блокировки и мьютексы, а также вопросы проектирования и отладки многопоточных приложений.

  • Advanced C ++ Metaprogramming (Davide Di Gennaro) Руководство по методам TMP до C ++ 11, ориентированное больше на практику, чем на теорию. В этой книге содержится множество фрагментов, некоторые из которых устарели по типу черт, но методы, тем не менее, полезно знать. Если вы можете смириться с причудливым форматированием / редактированием, его легче читать, чем Александреску, и, возможно, это более полезно. Для более опытных разработчиков есть хороший шанс, что вы можете найти что-то о темном уголке C ++ (причуде), который обычно появляется только благодаря обширному опыту.

Стиль ссылки - все уровни

  • Язык программирования C ++ (Бьярне Страуструп) ( обновлен для C ++ 11 ) Классическое введение в C ++ его создателем. Написанный параллельно классическому K & R, он действительно очень похож на него и охватывает практически все: от базового языка до стандартной библиотеки, от парадигм программирования до философии языка. [Review] Примечание. Все выпуски стандарта C ++ отслеживаются по этому вопросу: Где найти текущий стандарт C ++ .

  • Учебное пособие и справочник по стандартной библиотеке C ++ (Николай Йосуттис) ( обновлено для C ++ 11 ) Введение и справочник по стандартной библиотеке C ++. Второе издание (выпущено 9 апреля 2012 г.) охватывает C ++ 11. [Review]

  • C ++ IO Streams и Locales (Angelika Langer и Klaus Kreft) Об этой книге очень мало что можно сказать, за исключением того, что, если вы хотите узнать что-нибудь о потоках и локалях, то это единственное место, где можно найти окончательные ответы. [Review]

C ++ 11/14/17 /… Список литературы:

  • Стандарт C ++ 11/14/17 (INCITS / ISO / IEC 14882: 2011/2014/2017) Это, конечно, окончательный арбитр всего, что является или не является C ++. Имейте в виду, однако, что он предназначен исключительно как справка для опытных пользователей, желающих посвятить значительное время и усилия для его понимания. Стандарт C ++ 17 выпущен в электронном виде за 198 швейцарских франков.

  • Стандарт C ++ 17 доступен, но, по-видимому, не в экономичной форме - 17 он стоит 198 швейцарских франков (около 200 долларов США). Для большинства людей окончательный проект до стандартизации более чем адекватен (и бесплатен). Многие предпочтут еще более новый черновик , документирующий новые функции, которые, вероятно, будут включены в C ++ 20.

  • Обзор нового C ++ (C ++ 11/14) (только PDF) (Скотт Мейерс) ( обновлено для C ++ 14 ) Это презентационные материалы (слайды и некоторые конспекты лекций) трехдневного учебного курса, предлагаемого Скотт Мейерс, уважаемый автор на C ++. Несмотря на то, что список товаров короткий, качество высокое.

  • Основные руководящие принципы C ++ (C ++ 11/14/17 /…) (отредактированные Бьярном Страуструпом и Хербом Саттером) представляют собой развивающийся онлайн-документ, состоящий из набора руководящих принципов для хорошего использования современного C ++. Руководящие принципы ориентированы на проблемы более высокого уровня, такие как интерфейсы, управление ресурсами, управление памятью и параллелизм, влияющие на архитектуру приложения и дизайн библиотеки. Проект был объявлен на CppCon'15 Бьярном Страуструпом и другими и приветствует вклад сообщества. Большинство руководств дополнены обоснованием и примерами, а также обсуждениями возможной поддержки инструмента. Многие правила специально разработаны для автоматической проверки средствами статического анализа.

  • Super-FAQ по C ++ (Marshall Cline, Bjarne Stroustrup и др.) - это попытка Standard C ++ Foundation объединить часто задаваемые вопросы по C ++, которые ранее поддерживались отдельно Marshall Cline и Bjarne Stroustrup, а также включить новые материалы. Предметы в основном касаются вопросов на промежуточном уровне и часто написаны с юмористическим тоном. Не все элементы могут быть полностью обновлены до последней версии стандарта C ++.

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

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

Примечание. Некоторая информация, содержащаяся в этих книгах, может быть устаревшей или более не считаться оптимальной практикой.

  • Дизайн и развитие C ++ (Бьярне Страуструп) Если вы хотите знать, почему язык такой, какой он есть, эта книга - то, где вы найдете ответы. Это охватывает все до стандартизации C ++.

  • Размышления на C ++ - (Эндрю Кениг и Барбара Му) [Review]

  • Расширенные стили и идиомы программирования на C ++ (Джеймс Коплиен) Предшественник движения паттернов, он описывает множество специфических для C ++ «идиом». Это, безусловно, очень хорошая книга, и, возможно, ее стоит прочитать, если вы сможете сэкономить время, но она довольно старая и не в курсе современного C ++.

  • Разработка крупномасштабного программного обеспечения C ++ (Джон Лакос) Лакос объясняет методы управления очень большими программными проектами C ++. Конечно, хорошее чтение, если бы оно было актуальным. Он был написан задолго до C ++ 98 и пропускает многие функции (например, пространства имен), важные для крупномасштабных проектов. Если вам нужно поработать над большим программным проектом на C ++, вы, возможно, захотите прочитать его, хотя вам нужно взять с собой больше, чем просто кусочек соли. Первый том нового издания ожидается в 2018 году .

  • Внутри объектной модели C ++ (Стэнли Липпман) Если вы хотите узнать, как обычно реализуются виртуальные функции-члены и как базовые объекты обычно размещаются в памяти в сценарии с множественным наследованием, и как все это влияет на производительность, то здесь вы найдете найти подробные обсуждения таких тем.

  • Справочное руководство по аннотированному C ++ (Бьярн Страуструп, Маргарет А. Эллис) Эта книга устарела, поскольку в ней рассматривается версия C ++ 2.0 1989 года - шаблоны, исключения, пространства имен и новые преобразования еще не были представлены. Однако, говоря, что эта книга проходит через весь стандарт C ++ того времени, объясняя обоснование, возможные реализации и особенности языка. Это не книга для изучения принципов и шаблонов программирования на C ++, но для понимания каждого аспекта языка C ++.

  • Мышление в C ++ (Брюс Экель, 2-е издание, 2000). Два тома; это бесплатный набор учебников начального уровня. Скачиваний: том 1 , том 2 . К сожалению, они омрачены рядом тривиальных ошибок (например, утверждение, что временные значения автоматически являются постоянными), без официального списка ошибок. Частичный список ошибок сторонних организаций доступен по адресу ( http://www.computersciencelab.com/Eckel.htm ), но, по-видимому, он не поддерживается.

  • Освоение C ++ 17 STL (Артур О'Двайер, 1-е издание, 2017). Это и понятно, и понятно. Чтение этой книги требует некоторой концентрации - это не быстрый справочник по C ++ 17 STL. Книга посвящена следующим темам: классический полиморфизм против общего программирования, итераторы и диапазоны, контейнеры, типы словарей, интеллектуальные указатели, параллелизм, распределители, iostreams, регулярные выражения, случайные числа и файловая система.

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

Этот вопрос пытается собрать несколько жемчужин среди десятков плохих книг по С ++, которые публикуются каждый год.

В отличие от многих других языков программирования, которые часто берутся на ходу из учебных пособий, найденных в Интернете, лишь немногие способны быстро освоить C ++ без изучения хорошо написанной книги по C ++. Это слишком большой и сложный для этого. На самом деле, он настолько большой и сложный, что существует очень много очень плохих книг по С ++ . И мы говорим не о плохом стиле, а о таких вещах, как очевидные фактические ошибки и пропаганда ужасно плохих стилей программирования .

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

* Примечание: часто задаваемые вопросы и другие ресурсы можно найти в информации о тегах C ++ и в разделе c ++ - faq .





c++-faq