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

Татьяна Александровна Павловская. C/C++. Программирование на языке высокого уровня

464 страницы. Питер, 2021

В соавторстве с Юрием Абрамовичем Щупаком Татьяна Александровна выпустила практикумы по структурному (239 с.) и объектно-ориентированному программированию (265 с.). Разделы озаглавлены как «семинары», то есть это методическая поддержка для преподавателя, а не что-то полезное для студента.

Книга по несуществующему языку C/C++. Структурное программирование, ООП и библиотека.

В начале: алфавит, лексема... ну сколько можно. Форматирование, конечно, будет плохим, порой — «стеночкой». С транслитом (sort_vybor).

Терминология местами вольная: то «помеченный оператор» (совсем не оператор), то «метка».

int k;
goto metka; ...
{int a = 3, b = 4;
   k = a + b;
   metka: int m = k + 1; ...
}

20 лет зарабатывают на методичке.

Для операционной системы MS-DOS sizeof (int) даст в результате 2, а для Windows 9X или OS/2 результатом будет 4.

И конечно же, никто не собирается освобождать память сразу после параграфа про это.

Хочу — выбираю стиль C, хочу — C++. new из C++, например, автор показала, но работа с файлами, самописные списки и деревья — будут написаны в стиле C.

В индустрии есть много разных стандартов оформления, весьма сомнительно, что какой-то из них рекомендует классы именовать с маленькой буквы, а объекты — с большой:

monstr Vasia;

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

template <class Data>
   Node * List <Data>::insert(Data key, Data d){
   ...
}

В идеале позицию должен задавать итератор — объект специального класса. В учебном коде это может быть и просто целое число, допустим. И самый сложный «трюк» — константная ссылка для передачи значения (просто передача по значению может привести к лишнему копированию сложного объекта, просто ссылки тоже мало, будут проблемы с простейшими типами, например, int: list.insert(..., 7); не скомпилируется). Про аллокаторы умолчим. Перепишем.

template <typename V>
iterator List<V>::insert(iterator position, const V& value)
{
   ...
}

Учебник содержит много полезных вещей, особенно копипасты документации, но автор не утруждает себя какими-то объяснениями: «Шаблоны методов не могут быть виртуальными». А почему?

Приложения: операции языка C++, printf(), арифметические преобразования типов, заголовочные файлы стандартной библиотеки; константы, макросы и типы стандартной библиотеки; функции стандартной библиотеки, таблицы кодов ASCII.

Александр Павлович Побегайло. C/C++ для студента

528 страниц. БХВ-Петербург, 2006

Конспекты. Можно использовать как справочник. Кое-что устарело.

Автор также выпустил книгу о программировании под Windows.

Вадим Валериевич Подбельский. Язык Си++

560 страниц. Финансы и статистика, 2003

Темы C++03, кажется, освещены многие, если не все. Но отовсюду веет формализмом. Вот характерный пример.

Кроме типов, для объектов явно либо по умолчанию определяются:

  • класс памяти (задаёт размещение объекта);
  • область (сфера) действия, связанного с объектом идентификатора (имени);
  • видимость объекта;
  • продолжительность существования объектов и их имён;
  • тип компоновки (связывания).

Не очень понятно, что с этой информацией делать. Трудно пробираться через все эти области (сферы).

К пущему сожалению, не обошлось без 16-битной древности и <dos.h>.

Приложения: таблицы кодов ASCII, константы предельных значений, библиотека C, графическая библиотека BC++, потоковый ввод-вывод, библиотечные классы.

Марина Игоревна Полубенцева. C/C++. Процедурное программирование

448 страниц. БХВ-Петербург, 2008

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

Когда дело доходит до языка, читателя грузят таблицами с операторами.

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

Что остаётся от C++? Ссылки, new, cout, bool и новые операторы преобразования типов? Давайте поищем книгу получше.

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

Евгений Леонидович Романов. Практикум по программированию на C++

432 страницы. БХВ-Петербург, 2004

Книга начинается, как я понял, с творчества автора:

Спят подружки вредные безмятежным сном,
Снятся мышкам хлебные крошки по столом,
Буратинам — досточки, кошкам — караси,
Всем собакам — косточки, программистам — Си.

Главы книги: «Анализ и проектирование программ», «Программист „начинающий“», «Программист „системный“», «Программист „объектно-ориентированный“». Вот такая классификация.

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

Сергей Викторович Сабуров. Языки программирования C и C++

647 страниц. Бук-пресс, 2006

Главы: C, C++, отладчик Turbo Debugger, Турбо Си++, трюки программирования.

int x = 1;       /* Variable definitions */
int y = 1;
extern int printf(char *,...);/* Function declration */
main ()  /* Function definition
for main function */

int z;    /* Variable declarations */
int w;
z = y + x;      /* Executable statements */
w = y - x;
printf("z = %d \nw = %d \n", z, x);

Даже не спрашивайте.

Где-то в середине затесался справочник по работе с DOS.

Дальше смотреть бессмысленно.

Приложение: средства для разработчиков.

Андрей Викторович Столяров. Введение в язык C++

См. отдельный обзор.

Геннадий Алексеевич Тяпичев. Быстрое программирование на C++

384 страницы. СОЛОН-Пресс, 2017

Очередная книга-оборотень про C++ Builder.

Автор также написал книги: «Компьютер на любительской радиостанции» и «Азбука УКВ. Как построить трансивер».

Михаил Евгеньевич Флёнов. Программирование на C++ глазами хакера

352 страницы. БХВ, 2004

Немного про сети, много про WinAPI. Это книга не про C++, а про логику в обработчиках событий.

Автор также написал: «PHP глазами хакера», «Компьютер глазами хакера», «Web-сервер глазами хакера», «Linux глазами хакера», «Библия Delphi», «Delphi глазами хакера», «Delphi 2005. Секреты программирования».

Михаил Евгеньевич Флёнов. Искусство программирования игр на C++

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

Книга про Direct3D.

Ильдар Шаукатович Хабибуллин. Программирование на языке высокого уровня. C/C++

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

Типичная методичка с типичными проблемами.

Потенциально интересный раздел «Верификация программы» — просто небольшая копипаста.

Александр Анатольевич Чиртик. Программирование на C++. Трюки и эффекты

352 страницы. Питер, 2010

Не первая книга с таким названием. На этот раз «трюки» — это приёмы работы с WinAPI.

Дмитрий Михайлович Якушев. «Философия» программирования на языке C++

320 страниц. Бук-пресс, 2006

Части: введение в C++, Турбо C++, «От теории к практике». Первая часть сумбурная, вторая устаревшая, третья — беспорядочный сборник тем: правило «право-лево», что-то про STL, умные указатели, немного про виртуальность, «чтение исходных текстов», функцию gets(), «свойства», комментарии, веб-программирование, «ошибки работы с памятью» и т. д. (эти темы идут подряд).

Примеров кода мало, это всё больше схемы. Код, само собой, «стеночкой». Для кого это всё и для чего — совершенно не понятно.

Алексей Андреевич Ярошенко. Хакинг на C++

272 страницы. Наука и техника, 2022

Добавлено 27 июля 2023

Автор также написал книги «Хакинг на примерах. Уязвимости, взлом, защита», «Хакинг на Android», «Хакинг веб-сервера».

Содержание:

  1. Программирование глазами хакера
  2. Объектно-ориентированное программирование
  3. Пишем приложение клиент/сервер
  4. Алгоритмы поиска и сортировки
  5. Сканер портов на C++
  6. Шифрование файлов
  7. Файловая система
  8. Разработка malware
  9. Полезные примеры для хакинга
  10. Швейцарский нож хакера

Примерно в начале книги (что-то из синтаксиса языка Perl):

until (слева река)
{
  двигайтесь прямо;
}

Хочется показать класс стека.

#include <iostream>
using namespace std;
 
const int SIZE = 26;
 
class stack {
  char stck[SIZE];
  int tos;
public:
  void init();
  void push(char ch);
  char pop();
};
 
void stack::init()
{
  tos = 0;
}
 
void stack::push(char ch)
{
  if (tos==SIZE) {
    cout << "Стек полон!" << endl;
    return;
  }
  stck[tos] = ch;
  tos++;
}
 
char stack::pop() {
  if (tos==0) {
    cout << "Стек пуст!" << endl;
    return 0;
  }
  tos--;
  return stck[tos];
}

Это трудно даже комментировать.

И уже после класса стека, где используется массив, — идёт глава о массивах. В третьей главе — клиент-серверное приложение. Код — смесь C и C++. Затем написано об этапах развития TCP/IP, хотя конкретики дальше не будет.

Потом снова к программированию: двоичный поиск в массиве. Полностью внутри функции main. Автор по-сишному пишет main(void) и зачем-то объявляет константы истина и ложь. Именно таким образом.

#define TRUE  0
#define FALSE 1
while(bsearch == FALSE && left <= right) {
 middle = (left + right) / 2;
 
 if(number == аrray[middle]) {
  bsearch = TRUE;
  cout << "** Найдено **\n";
 } else {
  if(number < аrray[middle]) right = middle - 1;
  if(number > аrray[middle]) left = middle + 1;
 }
}
 
if(bsearch == FALSE)
 cout << "-- Не найдено --\n";

«Дополнительную информацию по этому методу поиска и дополнительный пример кода вы можете получить в Википедии».

Пузырьковая сортировка. Уже в виде функции.

void bubble_sort(int a[], int size) {
 int switched = 1;
 int hold = 0;
 int i = 0;
 int j = 0;
 
 size -= 1;
 
 for(i = 0; i < size && switched; i++) {
  switched = 0;
  for(j = 0; j < size - 1; j++)
   if(a[j] > a[j+1]) {
    switched = 1;
    hold = a[j];
    a[j] = a[j + 1];
    a[j + 1] = hold;
   }
 }
}

Итераторы begin() и end() «для сортировки» упоминаются вскользь.

Дальше идёт сканер портов. Автор использует библиотеку SFML. Необычный выбор для такого приложения. Некоторые виды шифрования с потоком fstream. Это несколько страниц кода с побитовыми операторами, магическими числами и так далее. Объяснений мало.

Файловые системы, которые поддерживаются операционной системой Linux. Стандартные каталоги Linux. Права доступа. Довольно подробно, но без применения.

«Запутываем код». Алгоритм ROT13 и шифр Цезаря. Код использует WinAPI.

«Полезные примеры хакинга» — это HTML-клинер (убирает теги), кейлогер, генерирование перестановок (подбор пароля). В тексте есть формула, которую, кажется, набирали в Word’е и непропорционально растянули. Много страниц кода без пояснений. Форматирование очень вольное: отступы в несколько десятков символов без причины, несколько выражений в одну строку.

Десятая глава собрала всё самое аппетитное. Некоторые вещи: бесплатные SMS по всему миру (с помощью веб-сервиса), активация архиватора (с помощью готового кода), приватная операционная система Kodachi (просто ссылка для загрузки дистрибутива), плагин для Firefox, конфиденциальная информация о пользователе Facebook (установить какой-то пакет для Debian и скачать репозиторий), местонахождение пользователя Gmail (можно увидеть отзывы пользователя о заведениях по его идентификатору), обход авторизации WiFi (снова какой-то репозиторий), спам в Telegram’е, «Как убить Android-девайс врага», утилита для поиска информации о человеке, DDOS-атака маршрутизатора. По большей части это готовое программное обеспечение. Программировать ничего не нужно.

В главе «Вместо заключения» дают совет: учить сети, операционные системы, языки Python, PHP и SQL.

В сухом остатке. C++ почти нет. Там, где есть, это больше C (или используется std::string как контейнер, а дальше с помощью c_str() содержимое куда-то передаётся). Загадка, как остальное содержимое вяжется с названием книги.

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

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