Современным разработчикам, чтобы совершенствовать профессиональные навыки, требуется постоянно заниматься самообразованием. Как говорила Алиса из небезызвестной книги Льюиса Кэрролла: «Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее». И это действительно так — останавливаться не стоит.
Один из самых распространённых инструментов самообразования — книги. Сегодня поговорим о полезных для разработчиков С++ изданиях, часть которых — просто must have. Всего в подборке пять вариантов, некоторые из них, вероятно, покажутся читателям необычным выбором. Но все они полезны для программистов. Если у вас есть собственные предпочтения, которые в подборку не попали, пишите о них в комментариях, с удовольствием ознакомимся.
![](https://habrastorage.org/getpro/habr/upload_files/8a8/be7/e3b/8a8be7e3b4ed25a89f0f25820b4b901c.png)
«Дизайн и эволюция С++»
![](https://habrastorage.org/getpro/habr/upload_files/4a6/5dd/649/4a65dd64942199a835861678a6c377a0.png)
Автор: Бьёрн Страуструп
Для кого: для всех, кто прямо или не очень связан с С++
Написал эту книгу сам создатель языка программирования С++. Он рассказывает о многих нюансах: описывает историю создания ЯП, помогает понять, почему он получился именно таким. Книга даёт ответ на массу вопросов, которые могут возникать относительно С++ не только у новичков, но и у профессионалов. Почему что-то работает именно так, а не иначе? А что могло бы получиться, если бы автор не изменил взгляд на ход разработки?
Страуструп раскрывает подробности каждого языкового средства, погружает в моменты добавления в язык шаблонов, исключений, виртуальных функций и других элементов. Несмотря на то, что тема достаточно сложная, автор описывает многие важные моменты простым и понятным языком. Книга может быть интересна не только C++-разработчикам, но и специалистам других направлений.
Плюсы книги:
простой и понятный язык
юмор, который делает чтение интереснее и помогает запомнить многие факты
исчерпывающая информация об истории программирования и самого языка
Недостатки:
лишь один — некоторые моменты описываются излишне подробно, но это уже вкусовщина
Философия дизайна программного обеспечения
![](https://habrastorage.org/getpro/habr/upload_files/1d0/f76/5d2/1d0f765d2aee38bf80e3d96b25ec6312.png)
Автор: Джон Оустерхаут
Для кого: для разработчиков любого уровня
Книга написана с целью раскрыть нюансы проектирования программного обеспечения. Она предназначена в первую очередь для новичков, но и профи могут найти много интересного для себя. Оустерхаут отлично разбирается в оптимизации программных проектов и их кастомизации под определённые цели и задачи.
Есть, конечно же, кейсы, которые показывают, как теоретические основы, изложенные в книге, можно применить на практике. Одному из авторов Хабра книга помогла структурировать знания, накопленные за 3 года работы программистом, исправив многие пробелы в понимании хорошего дизайна кода.
Каждую из тем, которые затрагивает автор, он разбирает весьма подробно, приводя несколько примеров для разных ситуаций. Благодаря этому книга крайне полезна для практического применения во время работы.
Плюсы книги:
небольшая, но ёмкая
есть действительно хорошие советы, которые помогают в работе
Минусы:
для некоторых кейсов стоило бы указать больше примеров с кодом. Но объём книги, вероятно, не позволил автору этого сделать
Инженерия требований
![](https://habrastorage.org/getpro/habr/upload_files/03f/726/b30/03f726b301e63680ee4580d4901fcb76.png)
Авторы: Элизабет Халл, Кен Джексон, Джереми Дик
Для кого: как для студентов начальных курсов, которых знакомят с основами инженерии требований, так и для специалистов
Книгу стоит использовать в качестве настольной не только С++-разработчикам, но и специалистам по другим языкам. Авторы подробно и наглядно объясняют роль системной инженерии в решении разного рода задач по созданию систем.
Книга — must have для специалистов по инженерии, поскольку требования — это обязательная часть процессов разработки как программных, так и аппаратных систем. Издание даёт возможность понять главные принципы современной инженерии требований.
Вот главные моменты, которые раскрываются в «Инженерии требований»:
усиление внимания к разъяснению важности системной инженерии для эффективного решения проблем, связанных с созданием систем
подробное описание основных представлений, используемых при моделировании систем, включающее краткое и ёмкое описание языка UML2
анализ взаимосвязи между требованиями и моделированием
описание типового, многоуровневого процесса инженерии требований, включая особенности этого процесса в области проблем и решений
подробное разъяснение важной концепции глубокой прослеживаемости
актуализация обзора инструмента управления требованиями DOORS
Плюсы книги:
практически нет «воды», всё изложено чётко и понятно
информации много, практически вся она полезная
Минусы:
для неискушённого читателя и начинающего разработчика книга может показаться сложной
Идеальный код. Как научиться видеть красоту в программировании
![](https://habrastorage.org/getpro/habr/upload_files/4f6/cfb/27d/4f6cfb27d330712316286343d406d331.png)
Редакторы: Энди Орам, Грег Уилсон
Для кого: для разработчиков любого уровня
Книга написана профессионалами, за плечами которых много лет работы над самыми сложными проектами. Авторы рассказывают об этих проектах и методах, которые помогали в реализации задач.
Показанные в книге статьи отобраны Грегом Уилсоном, редактором журнала Dr. Dobb's Journal, который является одним из самых авторитетных IT-изданий в мире, а также редактором издательства O'Reilly Энди Орамом. Среди профессионалов, которые оказались в числе соавторов, — Чарльз Петцольд, Джон Бентли, Тим Брэй, Брайан Керниган и ещё 34 эксперта в области программирования.
Плюсы книги:
раскрываются разные проблемы, книга даёт возможность посмотреть на них глазами опытнейших разработчиков
попадаются очень неординарные кейсы
Минусы:
практически нет
Жемчужины программирования (2-е издание)
![](https://habrastorage.org/getpro/habr/upload_files/e0e/5af/06e/e0e5af06e4f5fa7f1ef6cea29850657f.png)
Автор: Джон Бентли
Для кого: для начинающих разработчиков и опытных специалистов
Книга написана программистом для программистов. Лучшие проекты разработчиков сравниваются с жемчужинами, которые попали внутрь раковины и раздражают мантию моллюска. Программист пытается решить возникающие сложности и проблемы, которые его раздражают, и постепенно выращивает «жемчужину».
Но хватит лирики. Главная особенность — издание даёт возможность прокачаться алгоритмически на реальных задачах, несмотря на то, что вышло оно давно.
Рассматриваются:
методы разработки алгоритмов
методы оценки производительности
методы оптимизации программ и экономии памяти
задачи сортировки, выборки, поиска
Плюсы книги:
подробно раскрываются многие нюансы программирования
книга написана доступным языком
Минусы:
вышла в 2002 году — возможно, для кого-то это минус
Конечно, подборка получилась субъективной, поэтому, если знаете стоящие издания по теме, укажите их в комментариях, пожалуйста. Комментарии на Хабре нередко оказываются полезнее даже самих статей, так что давайте обсудим другие книги по С++, многим из нас эта тема интересна.