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

А. Фридман, Л. Кландер, М. Михаэлис, Г. Шилдт. C/C++. Архив программ (2001)

В этой части обсуждаются только книги Герберта Шилдта на русском языке. У этого автора также есть книги по другим языкам — C, C♯ и Java. Герберт Шилдт был членом комитета ANSI/ISO по стандартизации языка C++.

Герберт Шилдт. Самоучитель C++

688 страниц. БХВ, 2006

Herbert Schildt. Teach Yourself C++. McGraw-Hill, 1998

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

По какой-то причине шаблоны и исключения попали в одну главу. Ещё более причудливое сочетание — «Пространства имён и другие темы» (операторы преобразования, статические и константные члены класса, дополнительный материал о конструкторах, спецификаторы сборки, ассемблерные вставки, массивы в качестве объектов ввода-вывода).

Описывается стандарт C++98, изложение недостаточно глубокое.

Приложения: отличия C и C++ (одна страница), ответы и решения (больше 180 страниц), список английских технических терминов, описание дискеты.

Герберт Шилдт. C++. Базовый курс

624 страницы. Вильямс, 2015

Herbert Schildt. C++ from the Ground Up. McGraw-Hill, 2003

Книга начинается с истории языка, компиляции в консоли, базовых конструкций (c блок-схемами) и операций. Массивы, указатели, структуры, функции, классы — обычный минимум для университетов. Материалу не хватает глубины, не раскрыты многие детали. Стандартная библиотека описана плохо.

Книга ориентирована на C++03, но по третьему изданию рассыпаны предупреждения о каких-то доисторических вещах, например, overload для перегрузки функций. Автор безо всяких оговорок использует kbhit() из музейного <conio.h>.

Приложения: C-ориентированная система ввода-вывода, использование устаревшего C++-компилятора, .NET-расширения.

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

640 страниц. ЭКОМ Паблишерз, 2013

Herbert Schildt. C++ A Beginner's Guide: Step by Step. McGraw-Hill, 2004

Книга похожа на издание «C++. Базовый курс», но без совсем уж устаревших вещей. Есть много совпадений, но в целом это разные книги. Здесь с первых страниц упоминаются С♯, Java и ООП.

Книга такая же поверхностная. Показательный пример — глава «Исключения, шаблоны и кое-что ещё» (выделение памяти, пространства имён, статические члены класса, RTTI, операторы приведения типов).

Приложения: препроцессор, использование устаревшего C++-компилятора.

Герберт Шилдт. Полный справочник по C++

800 страниц. Вильямс, 2019

Herbert Schildt. C++: The Complete Reference. McGraw-Hill, 2003

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

А всякого рода перечисления и таблицы (с классами и функциями) часто устаревают, когда выходит очередной стандарт (не говоря уже о ключевом слове overload, функции kbhit() и прочем). Такая информация в современном мире должна быть на специальных сайтах.

В части «Приложения на языке C++» автор решает две задачи. Первая — разработать класс для работы со строками, который поддерживает ряд операций, к примеру, удаление подстроки с помощью оператора -.

StrType x("like C++"), y("like");
StrType z;
 
z = x - y; // Объект z будет содержать строку "I C++".
 
z = x - "C++"; // Объект z будет содержать строку "I like ".

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

Приложения: расширение языка C++ для платформы .NET (ужасная вещь), язык C++ и робототехника (несколько страниц с рассказом о двух роботах, которых автор собрал и запрограммировал).

Герберт Шилдт. Искусство программирования на C++

496 страниц. БХВ, 2005

Herbert Schildt. The Art of C++. McGraw-Hill, 2004

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

Сборщик мусора. Классическая задача — написать обёртку для управления памятью. Когда вышел стандарт C++11, необходимость в своих обёртках отпала.

Многопоточность. До C++11 многопоточности в C++ не было, для этого приходилось использовать библиотеки. В этом конкретном случае — WinAPI.

Расширение C++. Автор проектирует «пре-препроцессор», чтобы реализовать вещи, которых нет в языке: цикл foreach, оператор cases (case 1-4:), оператор typeof и цикл repeat/until (последний также демонстрируется с помощью макросов). Дополнительные задания для читателей: оператор breakon, который прерывает цикл, если выполняется какое-то условие; оператор breakto, передающий управление за пределы цикла или конструкции switch на заданную метку; оператор ignore, преждевременно завершающий очередную итерацию цикла, если обнаружено некое значение, например, ignore(n == 12).

Загрузчик файлов из интернета. Два приложения — консольное и с графическим интерфейсом — главным образом с помощью библиотеки WinINet.

Финансовые расчёты в C++. Скучная глава с точки зрения программирования: регулярные выплаты по ссуде; будущая величина инвестиции; первоначальное вложение денег, необходимое для получения в будущем заданной суммы; сумма вложения, необходимая для получения заданного аннуитета.

Решение задач методами искусственного интеллекта. Даны расстояния между городами из некоторого множества, требуется найти кратчайший путь между городами при заданном наборе ограничений (например, если клиент хочет летать только самолётами определённой авиакомпании). Показаны поиск в глубину, поиск в ширину, метод «восхождения на гору» (hill-climbing) и метод наименьшей стоимости (least cost).

Разработка пользовательского контейнера STL. Сперва идёт краткий обзор STL, затем автор перечисляет требования к пользовательским контейнерам: аллокаторы, поддержка ряда типов, разного рода конструкторы, функции итератора и ещё ряд операций. Цель главы — реализовать динамический массив с настраиваемым диапазоном индексов (range-selectable dynamic array), к примеру, от –10 до 10.

Интерпретатор Mini C++. Самая большая глава, в которой автор разрабатывает небольшой интерпретатор (а это именно интерпретатор) языка, чем-то похожего на C++.

Вот список возможностей: параметризованные функции с локальными переменными, вложенные области видимости, рекурсия, операторы if, switch, break, циклы do-while, while, for, локальные и глобальные переменные типов int и char (который преобразуется в int), параметры функций тех же типов, целые и символьные константы, константы типа string (с ограничениями), некоторые библиотечные функции, оператор return со значением и без, операции +, - (бинарные и унарные), *, /, %, <, >, <=, >=, ==, !=, ++, --, функции, возвращающие целые значения, однострочные и многострочные комментарии, cin и cout.

У интерпретатора есть ряд ограничений: блоки обязательно должны быть в фигурных скобках, все функции возвращают только int, не проверяются типы параметров, нет перегрузки функций, нет default в switch.

Код интерпретатора больше напоминает C (char*, strcmp() и т. д.), но в целом интересная затея.

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

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