ТОП-10 книг по C++: от новичка до профессионала
Книги по C++ на русском языке с лучшими оценками. Расставлены в порядке возрастания сложности, обобщены указанные читателями преимущества и недостатки.
Книги по C++ начального уровня
Герберт Шилдт. С++ для начинающих. Шаг за шагом
Самоучитель, который шаг за шагом расскажет об основных понятиях языка C++: переменные, инструкции управления, функции, типы и массивы данных, классы и объекты. Рассказано о перегрузках, управлении исключениями, наследовании, виртуальных функциях, полиморфизме, вводе/выводе.
Достоинства:
- Необходимый объём для начинающих.
- Доступный язык повествования.
- Есть вопросы для самопроверки.
- Хорошее качество печати.
Недостатки:
- Блеклый шрифт листингов программ.
- На обратной стороне книги говорится о многопоточном программировании и работе в сети, но читатели такой информации в самоучителе не нашли.
- Мягкая обложка.
Стивен Прата. Язык программирования C++. Лекции и упражнения
Книга в оригинале в сообществе Книги для программистов
Эта классическая работа по вычислительной технике обучает принципам программирования, среди которых структурированный код и нисходящее проектирование, а также использованию классов, наследования, шаблонов, исключений, лямбда-выражений.
Достоинства:
- Подробное изложение.
- Множество примеров кода.
- Задания после каждой главы.
- Вопросы для самоконтроля.
- Хорошее качество переплета.
Недостатки:
- Не затронуты стандарты C14, C17.
- Встречаются опечатки.
Роберт Лафоре. Объектно-ориентированное программирование в С++
Книга в сообществе Книги для программистов
Принципы языка, готовые полномасштабные приложения, небольшие примеры, поясняющие теорию, и множество полезных иллюстраций. Книга пользуется стабильным успехом в учебных заведениях благодаря тому, что содержит более 100 упражнений, позволяющих проверить знания по всем темам.
Достоинства:
- Хорошая база для освоения языка.
- Легко читается.
- В каждой главе разбираются примеры.
- Есть контрольные вопросы и упражнения.
- Твердый переплет, белые страницы.
Недостатки:
- Встречаются опечатки и ошибки.
- Рассматривается старый стандарт языка.
Страуструп. Программирование. Принципы и практика с использованием C++
Хотя автор книги одновременно является и автором языка, С++ играет сугубо иллюстративную роль. Автор задумал книгу как вводный курс по программированию. Описан широкий круг понятий и приемов программирования, необходимых для того, чтобы стать профессиональным программистом.
Если вы решили стать программистом, и уже знакомы с азами C++ – эта книга для вас, в первую очередь потому, что программирование – это не только, и не столько знание инструмента (языка программирования), сколько понимание самого процесса.
Достоинства:
- Книга учит программированию, язык – инструмент.
- Качественный перевод и оформление книги.
Недостатки:
- Большой объем, было бы удобнее, если бы выходила в двух томах.
Средний уровень владения C++
Роберт Седжвик: Алгоритмы на C++. Анализ структуры данных. Сортировка. Поиск. Алгоритмы на графах
Эта книга не про сам язык, а про алгоритмы с примерами реализации на С++. В частях I—IV рассматриваются фундаментальные алгоритмы, структуры данных, сортировка и поиск. В них приведено подробное описание фундаментальных структур данных и алгоритмов для сортировки, поиска и сопутствующих приложений. В части V рассматриваются алгоритмы на графах, которые играют все более важную роль во множестве приложений, таких как сетевая связность, конструирование электронных схем, составление графиков, обработка транзакций и выделение ресурсов.
Преимущества:
- Раскрыты все темы, указанные в оглавлении книги.
- Много примеров и упражнений.
- Качественный перевод.
- Хорошее оформление издания, белая бумага, четкий шрифт.
Недостатки:
- В сравнении с книгами Кормана или Кнута раскрыты не все типы алгоритмов.
Мейерс Скотт. Эффективный и современный С++: 42 рекомендации по использованию C++11 и C++14
Книга в сообществе Книги для программистов
Эта книга посвящена возможностям языка, появившимся в C++11 и C++14. Рассказано, как эффективно использовать новые особенности, почему ту или иную задачу следует решать именно так., чтобы создаваемые программы были корректны, эффективны и переносимы.
Преимущества:
- Написано доступно, но без воды.
- Хорошее качество переплета.
Недостатки:
- Редко, но встречаются неточности перевода и опечатки.
Яцек Галовиц. С++17 STL. Стандартная библиотека шаблонов
Книга в оригинале в сообществе Книги для программистов
90 реалистичных примеров, которые демонстрируют всю мощь STL и станут базовыми кирпичиками для решения более универсальных задач. Описана работа с контейнерами, вспомогательными классами и лямбда-выражениями.
Достоинства:
- Стандарт C++17.
- Создается хорошее понимание современного подхода к использованию C++.
- Много примеров с пояснениями без лишней воды.
Недостатки:
- Мягкий переплет, низкое качество печати и обрезки страниц.
Энтони Уильямс. Параллельное программирование на С++ в действии. Практика разработки многопоточных программ
Книга в оригинале в сообществе Книги для программистов
В наши дни стали нормой компьютеры с многоядерными процессорами. Современные стандарты языка C++ предоставляют поддержку многопоточности. Вдумчиво читая книгу Уильямса, вы научитесь писать надежные и элегантные многопоточные программы на С++.
Преимущества:
- Большое количество примеров.
- Не требуются предварительные знания по теме.
- Рассмотрены все тонкости многопоточного программирования и типов синхронизации, подробно описаны lock-free-паттерны проектирования.
Недостатки:
- Старый, хотя и достаточно актуальный стандарт (С11).
- Ужасное качество переплета для такого объема книги.
Продвинутый уровень C++
Роберт C. Мартин. Гибкая разработка программ на Java и C++. Принципы, паттерны и методики
Как и указано на обложке, примеры есть и на C++, и на Java, для лучшего понимания желательно знать оба языка. Рассматриваются ООП, UML, паттерны, приемы гибкого и экстремального программирования, а также приводится детальное описание полного процесса проектирования для многократно используемых программ на C++ и Java.
Преимущества:
- Легко читается.
- На простых примерах дается введение в архитектурное проектирование.
- Рассматриваются ошибки традиционных примеров «хорошего» проектирования кода.
- Подробно обсуждаются принципы SOLID.
- Чувствуется опыт автора.
Недостатки:
- Затянутое введение.
Бьерн Страуструп. Дизайн и эволюция С++
Книга в оригинале в сообществе Книги для программистов
В книге, написанной создателем языка С++ Бьерном Страуструпом, представлено описание процесса проектирования и разработки языка программирования С++.
Изложены цели, принципы и практические ограничения, наложившие отпечаток на структуру и облик С++, рассказано о дизайне недавно добавленных в язык средств: шаблонов, исключений, идентификации типа во время исполнения и пространств имен. Автор анализирует решения, принятые во время работы над языком, и демонстрирует, как правильно применять «реальный объектно-ориентированный язык программирования».
Преимущества:
- Описана идеология, структура, философия языка.
- Становятся понятными конструкции языка: почему сделано так, а не иначе.
- Для людей с большим опытом в разработке на C++ читается как захватывающая художественная книга.
Недостатки:
- Мягкая обложка.
Если вы не увидели любимую книгу в десятке, пожалуйста, не стесняйтесь порекомендовать ее в комментариях. Если вы читали перечисленные книги, дополните наши описания – какие преимущества и недостатки отметили бы вы.
Библиотека программиста любит язык C++. Вот три последних публикации: