Exceptional C++ — Herb Sutter — обложка книги
240 страниц
C++
PDF
4.5

Exceptional C++

50 инженерных задач и решений на C++

Автор:

Год:

Краткое содержимое:

Введение

Книга «Exceptional C++» (1999) Герба Саттера — это не учебник для новичков, а сборник из 50 инженерных задач, которые заставят вас по-настоящему задуматься о том, как вы пишете код на C++. В мире, где надёжность программного обеспечения ценится выше скорости написания, эта книга остаётся эталоном глубокого понимания языка. Саттер не просто даёт ответы — он учит мыслить категориями исключительных ситуаций, управления ресурсами и проектирования интерфейсов, устойчивых к ошибкам.

Несмотря на то, что книга вышла более 20 лет назад, её идеи (RAII, гарантии исключений, умные указатели) стали фундаментом современного C++ (C++11 и новее). Если вы хотите перестать бояться исключений и начать писать код, который не «падает» в самый неподходящий момент — эта книга для вас.

О чём книга

«Exceptional C++» построена в формате «вопрос-ответ» (проблема — решение — разбор). Каждая глава — это отдельный аспект надёжного программирования:

  • Исключения и безопасность: как писать функции, которые не утекают ресурсы и оставляют объекты в согласованном состоянии даже при возникновении ошибок.
  • RAII (Resource Acquisition Is Initialization): почему это главная идиома C++ и как её применять для управления памятью, файлами, мьютексами.
  • Шаблоны и обобщённое программирование: тонкости инстанцирования, частичной специализации, SFINAE.
  • Наследование и полиморфизм: как правильно проектировать иерархии классов, чтобы не нарушить принцип подстановки Лисков.
  • Управление памятью: операторы new/delete, placement new, перегрузка операторов.
  • Проектирование интерфейсов: как сделать API, который сложно использовать неправильно.

Для кого эта книга

Книга рассчитана на программистов C++, которые уже имеют опыт (минимум 1-2 года активной разработки). Она будет полезна:

  • Разработчикам, которые хотят писать надёжный production-код.
  • Тем, кто готовится к техническим собеседованиям (задачи из книги часто встречаются в Google, Microsoft, Yandex).
  • Преподавателям и менторам, ищущим примеры для разбора на семинарах.
  • Всем, кто хочет понять «почему» за стандартными идиомами C++, а не просто «как».

Что узнает читатель

После прочтения вы сможете:

  • Формулировать и проверять гарантии исключений (базовую, строгую, nothrow) для своих функций.
  • Правильно использовать std::auto_ptr (и его современные аналоги unique_ptr/shared_ptr) для автоматического управления ресурсами.
  • Избегать ловушек при перегрузке операторов (особенно operator= и operator[]).
  • Проектировать классы, которые корректно работают в контейнерах STL.
  • Понимать, когда и как использовать mutable, volatile, const_cast без вреда для архитектуры.
  • Писать шаблонные функции, которые не взрываются при подстановке неподходящих типов (SFINAE).
  • Реализовывать идиому copy-and-swap для безопасного присваивания.

Сильные стороны

  • Глубина и практичность. Каждая задача — это реальная проблема из опыта автора. Вы не найдёте абстрактных примеров вроде «кошка-собака».
  • Формат «вопрос-ответ». Можно читать с любой главы. Идеально для «перекуров» — 15 минут на задачу.
  • Акцент на «почему». Саттер объясняет не только правильное решение, но и мотивацию: почему другие варианты плохи, какие компромиссы существуют.
  • Стиль изложения. Живой, с долей юмора и самоиронии. Книга не похожа на сухой справочник.
  • Вневременная ценность. Даже в эпоху C++20/23 принципы RAII и исключение-безопасности остаются неизменными. Книга учит фундаменту, который не устаревает.

Кому рекомендуется

Я настоятельно рекомендую «Exceptional C++» всем, кто пишет на C++ и хочет перейти от уровня «это компилируется» к уровню «это надёжно работает в production». Особенно:

  • Разработчикам библиотек и фреймворков.
  • Инженерам, работающим с высоконагруженными или встраиваемыми системами.
  • Студентам старших курсов, изучающим системное программирование.
  • Тем, кто готовится к собеседованию в FAANG (задачи на исключения и RAII — классика).

Важно: если вы только начали изучать C++ и ещё не уверенно чувствуете себя с указателями, ссылками и виртуальными функциями — сначала прочтите «C++ Primer» Липпмана или «Язык программирования C++» Страуструпа. «Exceptional C++» — это следующий шаг.

В итоге: это одна из тех редких книг, которую хочется перечитывать. Каждый раз находишь что-то новое. 10/10 для тех, кто серьёзно относится к качеству кода.

Рекомендаций