29 марта 2020

ТОП-10 книг по C++: от новичка до профессионала

Пишу, перевожу и иллюстрирую IT-статьи. На proglib написал 140 материалов. Увлекаюсь Python, вебом и Data Science. Открыт к диалогу – ссылки на соцсети и мессенджеры: https://matyushkin.github.io/links/ Если понравился стиль изложения, упорядоченный список публикаций — https://github.com/matyushkin/lessons
Книги по C++ на русском языке с лучшими оценками. Расставлены в порядке возрастания сложности, обобщены указанные читателями преимущества и недостатки.
ТОП-10 книг по C++: от новичка до профессионала

Книги по C++ начального уровня

Герберт Шилдт. С++ для начинающих. Шаг за шагом

<a href="https://www.ozon.ru/context/detail/id/5089079/?partner=proglib&amp;utm_content=link" target="_blank" rel="noopener noreferrer nofollow">С++ для начинающих. Шаг за шагом</a>
С++ для начинающих. Шаг за шагом

Самоучитель, который шаг за шагом расскажет об основных понятиях языка C++: переменные, инструкции управления, функции, типы и массивы данных, классы и объекты. Рассказано о перегрузках, управлении исключениями, наследовании, виртуальных функциях, полиморфизме, вводе/выводе.

Достоинства:

  • Необходимый объём для начинающих.
  • Доступный язык повествования.
  • Есть вопросы для самопроверки.
  • Хорошее качество печати.

Недостатки:

  • Блеклый шрифт листингов программ.
  • На обратной стороне книги говорится о многопоточном программировании и работе в сети, но читатели такой информации в самоучителе не нашли.
  • Мягкая обложка.
➕➕ Библиотека C/C++ разработчика
Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека C/C++ разработчика»
➕➕🎓 Библиотека C++ для собеса
Подтянуть свои знания по Go вы можете на нашем телеграм-канале «Библиотека C++ для собеса»
➕➕🧩 Библиотека задач по C++
Интересные задачи по Go для практики можно найти на нашем телеграм-канале «Библиотека задач по C++»

Стивен Прата. Язык программирования C++. Лекции и упражнения

<a href="https://www.ozon.ru/context/detail/id/147417584/?partner=proglib&amp;utm_content=link" target="_blank" rel="noopener noreferrer nofollow">Стивен Прата. Язык программирования C++. Лекции и упражнения</a>
Стивен Прата. Язык программирования C++. Лекции и упражнения

Книга в оригинале в сообществе Книги для программистов

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

Достоинства:

  • Подробное изложение.
  • Множество примеров кода.
  • Задания после каждой главы.
  • Вопросы для самоконтроля.
  • Хорошее качество переплета.

Недостатки:

  • Не затронуты стандарты C14, C17.
  • Встречаются опечатки.

Роберт Лафоре. Объектно-ориентированное программирование в С++

<a href="https://www.ozon.ru/context/detail/id/31016231/?partner=proglib&amp;utm_content=link" target="_blank" rel="noopener noreferrer nofollow">Роберт Лафоре. Объектно-ориентированное программирование в С++</a>
Роберт Лафоре. Объектно-ориентированное программирование в С++

Книга в сообществе Книги для программистов

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

Достоинства:

  • Хорошая база для освоения языка.
  • Легко читается.
  • В каждой главе разбираются примеры.
  • Есть контрольные вопросы и упражнения.
  • Твердый переплет, белые страницы.

Недостатки:

  • Встречаются опечатки и ошибки.
  • Рассматривается старый стандарт языка.

Страуструп. Программирование. Принципы и практика с использованием C++

<a href="https://www.ozon.ru/context/detail/id/155024250/?partner=proglib&amp;utm_content=link" target="_blank" rel="noopener noreferrer nofollow">Страуструп. Программирование. Принципы и практика с использованием C++</a>
Страуструп. Программирование. Принципы и практика с использованием C++

Хотя автор книги одновременно является и автором языка, С++ играет сугубо иллюстративную роль. Автор задумал книгу как вводный курс по программированию. Описан широкий круг понятий и приемов программирования, необходимых для того, чтобы стать профессиональным программистом.

Если вы решили стать программистом, и уже знакомы с азами C++ – эта книга для вас, в первую очередь потому, что программирование – это не только, и не столько знание инструмента (языка программирования), сколько понимание самого процесса.

Достоинства:

  • Книга учит программированию, язык – инструмент.
  • Качественный перевод и оформление книги.

Недостатки:

  • Большой объем, было бы удобнее, если бы выходила в двух томах.

Средний уровень владения C++

Роберт Седжвик: Алгоритмы на C++. Анализ структуры данных. Сортировка. Поиск. Алгоритмы на графах

<a href="https://www.ozon.ru/context/detail/id/149831754/?partner=proglib&amp;utm_content=link" target="_blank" rel="noopener noreferrer nofollow">Роберт Седжвик: Алгоритмы на C++. Анализ структуры данных. Сортировка. Поиск. Алгоритмы на графах</a>
Роберт Седжвик: Алгоритмы на C++. Анализ структуры данных. Сортировка. Поиск. Алгоритмы на графах

Эта книга не про сам язык, а про алгоритмы с примерами реализации на С++. В частях I—IV рассматриваются фундаментальные алгоритмы, структуры данных, сортировка и поиск. В них приведено подробное описание фундаментальных структур данных и алгоритмов для сортировки, поиска и сопутствующих приложений. В части V рассматриваются алгоритмы на графах, которые играют все более важную роль во множестве приложений, таких как сетевая связность, конструирование электронных схем, составление графиков, обработка транзакций и выделение ресурсов.

Преимущества:

  • Раскрыты все темы, указанные в оглавлении книги.
  • Много примеров и упражнений.
  • Качественный перевод.
  • Хорошее оформление издания, белая бумага, четкий шрифт.

Недостатки:

  • В сравнении с книгами Кормана или Кнута раскрыты не все типы алгоритмов.

Мейерс Скотт. Эффективный и современный С++: 42 рекомендации по использованию C++11 и C++14

<a href="https://www.ozon.ru/context/detail/id/149092825/?partner=proglib&amp;utm_content=link" target="_blank" rel="noopener noreferrer nofollow">Мейерс Скотт. Эффективный и современный С++: 42 рекомендации по использованию C++11 и C++14</a>
Мейерс Скотт. Эффективный и современный С++: 42 рекомендации по использованию C++11 и C++14

Книга в сообществе Книги для программистов

Эта книга посвящена возможностям языка, появившимся в C++11 и C++14. Рассказано, как эффективно использовать новые особенности, почему ту или иную задачу следует решать именно так., чтобы создаваемые программы были корректны, эффективны и переносимы.

Преимущества:

  • Написано доступно, но без воды.
  • Хорошее качество переплета.

Недостатки:

  • Редко, но встречаются неточности перевода и опечатки.

Яцек Галовиц. С++17 STL. Стандартная библиотека шаблонов

<a href="https://www.ozon.ru/context/detail/id/144677506?partner=proglib&amp;utm_content=link" target="_blank" rel="noopener noreferrer nofollow">Яцек Галовиц. С++17 STL. Стандартная библиотека шаблонов</a>
Яцек Галовиц. С++17 STL. Стандартная библиотека шаблонов

Книга в оригинале в сообществе Книги для программистов

90 реалистичных примеров, которые демонстрируют всю мощь STL и станут базовыми кирпичиками для решения более универсальных задач. Описана работа с контейнерами, вспомогательными классами и лямбда-выражениями.

Достоинства:

  • Стандарт C++17.
  • Создается хорошее понимание современного подхода к использованию C++.
  • Много примеров с пояснениями без лишней воды.

Недостатки:

  • Мягкий переплет, низкое качество печати и обрезки страниц.

Энтони Уильямс. Параллельное программирование на С++ в действии. Практика разработки многопоточных программ

<a href="https://www.ozon.ru/context/detail/id/135511867/?partner=proglib&amp;utm_content=link" target="_blank" rel="noopener noreferrer nofollow">Энтони Уильямс. Параллельное программирование на С++ в действии. Практика разработки многопоточных программ</a>
Энтони Уильямс. Параллельное программирование на С++ в действии. Практика разработки многопоточных программ

Книга в оригинале в сообществе Книги для программистов

В наши дни стали нормой компьютеры с многоядерными процессорами. Современные стандарты языка C++ предоставляют поддержку многопоточности. Вдумчиво читая книгу Уильямса, вы научитесь писать надежные и элегантные многопоточные программы на С++.

Преимущества:

  • Большое количество примеров.
  • Не требуются предварительные знания по теме.
  • Рассмотрены все тонкости многопоточного программирования и типов синхронизации, подробно описаны lock-free-паттерны проектирования.

Недостатки:

  • Старый, хотя и достаточно актуальный стандарт (С11).
  • Ужасное качество переплета для такого объема книги.

Продвинутый уровень C++

Роберт C. Мартин. Гибкая разработка программ на Java и C++. Принципы, паттерны и методики

<a href="https://www.ozon.ru/context/detail/id/138684801?partner=proglib&amp;utm_content=link" target="_blank" rel="noopener noreferrer nofollow">Роберт Мартин. Гибкая разработка программ на Java и C++. Принципы, паттерны и методики</a>
Роберт Мартин. Гибкая разработка программ на Java и C++. Принципы, паттерны и методики

Как и указано на обложке, примеры есть и на C++, и на Java, для лучшего понимания желательно знать оба языка. Рассматриваются ООП, UML, паттерны, приемы гибкого и экстремального программирования, а также приводится детальное описание полного процесса проектирования для многократно используемых программ на C++ и Java.

Преимущества:

  • Легко читается.
  • На простых примерах дается введение в архитектурное проектирование.
  • Рассматриваются ошибки традиционных примеров «хорошего» проектирования кода.
  • Подробно обсуждаются принципы SOLID.
  • Чувствуется опыт автора.

Недостатки:

  • Затянутое введение.

Бьерн Страуструп. Дизайн и эволюция С++

<a href="https://www.ozon.ru/context/detail/id/136837954?partner=proglib&amp;utm_content=link" target="_blank" rel="noopener noreferrer nofollow">Бьерн Страуструп. Дизайн и эволюция С++</a>
Бьерн Страуструп. Дизайн и эволюция С++


Книга в оригинале в сообществе Книги для программистов

В книге, написанной создателем языка С++ Бьерном Страуструпом, представлено описание процесса проектирования и разработки языка программирования С++.

Изложены цели, принципы и практические ограничения, наложившие отпечаток на структуру и облик С++, рассказано о дизайне недавно добавленных в язык средств: шаблонов, исключений, идентификации типа во время исполнения и пространств имен. Автор анализирует решения, принятые во время работы над языком, и демонстрирует, как правильно применять «реальный объектно-ориентированный язык программирования».

Преимущества:

  • Описана идеология, структура, философия языка.
  • Становятся понятными конструкции языка: почему сделано так, а не иначе.
  • Для людей с большим опытом в разработке на C++ читается как захватывающая художественная книга.

Недостатки:

  • Мягкая обложка.
Больше информации о книгах про C++ вы найдете на нашем телеграм-канале «Библиотека C/C++ разработчика».
***

Если вы не увидели любимую книгу в десятке, пожалуйста, не стесняйтесь порекомендовать ее в комментариях. Если вы читали перечисленные книги, дополните наши описания – какие преимущества и недостатки отметили бы вы.

Библиотека программиста любит язык C++. Вот три последних публикации:

МЕРОПРИЯТИЯ

Комментарии

ВАКАНСИИ

Добавить вакансию
Go-разработчик
по итогам собеседования
Java Team Lead
Москва, по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ