Dyzzet|
C++ Data Science Алгоритмы Темы · Блог · YouTube
Обзоры книг по C++
Учебная литература. Часть IV

Виктор Штерн. Основы C++: методы программной инженерии

880 страниц. Лори, 2003

Victor Shtern. Core C++. A Software Engineering Approach. Prentice Hall, 2000

Название «Core C++» правильнее было бы перевести не как «Основы C++», а как «ядро языка», то есть язык без стандартной библиотеки: отдельной такой главы действительно нет.

Книга с претензией. Первая тема первой главы «Объектно-ориентированный подход» — «Истоки кризиса программного обеспечения». То есть читателя ждут эссе о методах управления разработкой.

Дальше идёт типичное описание C++98, но с парой оговорок. Автор демонстрирует связный список. Но проблема в том, что функции появляются лишь в следующей главе. То есть вся работа со «связным списком» была прямо в функции main().

Когда рассказ поворачивается в сторону ООП, непременно следует описание таких важных вещей, как сильное сцепление (high cohesion), низкая связность (low coupling), инкапсуляция, наследование и агрегирование. Не остаётся в стороне и UML.

К сожалению, код оформлен очень плохо. Откровенно плохо. Перечисли мы здесь всё — получилась бы целая статья.

#include "c:\data\cppbook\ch02\time.h"

В самом конце книги — небольшое эссе о «конкурентах» C++. Среди них называется Visual Basic и, само собой, Java (C♯ появится на два года позже книги).

Брюс Эккель. Философия C++. Введение в стандартный C++

572 страницы. Питер, 2004

Bruce Eckel. Thinking in C++. Volume 1: Introduction to Standard C++. Prentice Hall, 2000

Нормальное изложение C++98, но, к сожалению, без стандартной библиотеки и C-совместимой части (например, в плане ввода-вывода). В самом начале идут разговоры про ООП и UML, немного неуместные именно там, но их можно пропустить.

Приложения: стиль программирования, рекомендации по программированию.

Брюс Эккель, Чак Эллисон. Философия C++. Практическое программирование

608 страниц. Питер, 2004

Bruce Eckel, Chuck Allison. Thinking in C++. Volume 2: Practical Programming. Prentice Hall, 2003

Совершенно великолепная книга.

Различные механизмы безопасности (исключения, assert(), тестирование, отладка и трассировка), стандартная библиотека (строки, потоки ввода-вывода), шаблоны, обобщённые алгоритмы и контейнеры, RTTI, некоторые шаблоны проектирования и многопоточное программирование (по последней теме есть отдельные хорошие книги).

Джефф Элджер. C++

320 страниц. Питер, 1999

Jeff Alger. C++ for Real Programmers. Academic Press, 1998

Не для новичков (о чём прямо сказано). Не совсем понятно, для кого её писали. Книгу открывают эссе «Дао C++» и три «великие идеи»:

косвенные обращения,

гомоморфные иерархии классов,

пространства памяти.

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

Автор сразу предупреждает, что его не интересует оформление кода, ведь плохой код не станет хорошим просто из-за оформления. Конечно, но это не повод писать код как попало.

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

Первое, что рассматривает автор — ключевое слово const, он выносит его в заголовок и всесторонне рассматривает: константные переменные, const и #define, константы в перечислениях, указатель на константу, константный указатель, константный указатель на константу, константные аргументы функций, неконстантные аргументы функций, константные функции классов.

Отсюда следует вывод, что это скорее справочник, а не учебник.

Автор упоминает интересную аббревиатуру в контексте компиляторов: DWIMNIS, то есть Do what I mean, not what I say («Делай то, что я подразумеваю, а не то, что я говорю»).

Какие-то заявления слишком неточные, например, что «шаблоны — это усовершенствованные макросы». В книге излагается устаревшая спецификация исключений (что естественно) и очень много «велосипедов» на тему умных указателей и сборщика мусора. Небольшое замечание: сомнительный перевод названия статических переменных специального типа, которые следят, чтобы никто не разыменовал NULL: screamer — «стукач».

На страницах книги слишком много автора с его неповторимыми пассажами.

«Если вам когда-нибудь захочется сделать нечто похожее, встаньте с кресла, медленно прогуляйтесь вокруг дома, сделайте глубокий вдох, сядьте за компьютер и придумайте что-нибудь другое».

«Представьте себе удивление вашей программы, когда ей сообщат, что объект имеет размер 20 байт, хотя на самом деле он равен 220 байтам! Разработчики компиляторов C++ любят похвастаться подобными проделками за кружкой пива после работы».

«Во время долгих ночных отладок мне часто хотелось создать оператор с именем #$%^&, но C++ на этот счёт неумолим».

«Интересно, почему у нас так много предложенных стандартов и ни одного реального? Скорее всего, дело в том, что наша экономика не может вместить всех безработных членов комитетов стандартизации».

Приложение: Java против C++.

Алекс Эллайн. C++. От ламера до программера

480 страниц. Питер, 2015

Alex Allain. Jumping into C++. Cprogramming.com, 2012

В самом начале автор показывает, как установить Code::Blocks, XCode и g++ (для разных операционных систем). Со скриншотами. Где-то в середине книги есть ещё пара глав со скриншотами, в том числе глава про отладку.

Код местами оформлен очень плохо и совершенно непоследовательно. Местами встречаются неточности, например, «оператор» #include (это директива препроцессора).

В конце каждой главы — тест и практические задания.

Автор знакомит с STL и совершенно игнорирует часть языка, совместимую с C. В качестве бонуса — пишет связный список и двоичное дерево. В целом изложение слишком поверхностное, но вполне подошло бы для студентов колледжа.

13 марта 2021
C++ книги
Зарегистрируйтесь и войдите, чтобы оставлять комментарии и голосовать.

Книги по C++
Книги Бьерна Страуструпа
Учебная литература. Часть I / Часть II / Часть III. Книги Герберта Шилдта / Часть IV
Русскоязычная литература. Часть I / Часть II / Часть III / Часть IV
Стандартная библиотека шаблонов
Структуры данных, алгоритмы, решение задач
Что выбрать? (Обновляется)
Также может быть интересным
© MMXI—MMXXIII. RSS. Поддержать сайт
Светлая тема / тёмная тема