Полезное программирование. Уникальное руководство к действию
Покупка
Новинка
Основная коллекция
Тематика:
Программирование и алгоритмизация
Издательство:
СОЛОН-Пресс
Автор:
Комлев Николай Юрьевич
Год издания: 2021
Кол-во страниц: 256
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Профессиональное образование
ISBN: 978-5-91359-340-5
Артикул: 848917.01.99
Уникальное руководство к действию, опыт и практика, сконцентрированные на двух сотнях страниц. Книга для тех, кто умеет программировать и уже готов этим зарабатывать. Курс молодого, но профессионального программиста. Практические советы. Что пригодится вам из пройденного и сданного. Что вы будете программировать сначала, а что позже, когда наберётесь опыта. К чему ещё можно применить ваш программистский талант, чтобы руководство одобрило и поощрило. Кратко, доступно, убедительно.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 00.03.03: Информатика
- ВО - Специалитет
- 00.05.03: Информатика
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Комлев Н. Ю. Полезное Программирование Москва СОЛОН-Пресс 2021
УДК 681.3 ББК 32.973-18 К 63 Комлев Н. Ю. Полезное программирование. — М.: СОЛОН-Пресс, 2021. — 256 с.: ил. ISBN 978-5-91359-340-5 Уникальное руководство к действию, опыт и практика, сконцентрированные на двух сотнях страниц. Книга для тех, кто умеет программировать и уже готов этим зарабатывать. Курс молодого, но профессионального программиста. Практические советы. Что пригодится вам из пройденного и сданного. Что вы будете программировать сначала, а что позже, когда наберётесь опыта. К чему ещё можно применить ваш программистский талант, чтобы руководство одобрило и поощрило. Кратко, доступно, убедительно. КНИГА — ПОЧТОЙ Книги издательства «СОЛОН-Пресс» можно заказать и оплатить в издательстве с пересылкой Почтой РФ. Заказ можно оформить одним из перечисленных способов: 1. Оформить заказ на сайте www.solon-press.ru в разделе «Книга — почтой». 2. Заказать книгу по тел. (495) 617-39-64, (495) 617-39-65. 3. Отправив заявку на e-mail: kniga@solon-press.ru (указать наименование издания, обратный адрес и ФИО получателя). 4. Послать открытку или письмо по адресу: 123001, Москва, а/я 82. При оформлении заказа следует правильно и полностью указать адрес, по которому должны быть высланы книги, а также фамилию, имя и отчество получателя. Желательно указать дополнительно свой телефон и адрес электронной почты. Через Интернет вы можете в любое время получить свежий каталог издательства «СОЛОН-Пресс», считав его с адреса http://www.solon-press.ru/katalog. Интернет-магазин размещен на сайте www.solon-press.ru. Оптовые закупки ООО КТК «Галактика» 115487, г. Москва, проспект Андропова, д. 38 Телефоны: (499) 782-38-89 E-mail: books@alians-kniga.ru, http://www.alians-kniga.ru © Комлев Н. Ю., 2021 ISBN 978-5-91359-340-5 © «СОЛОН-Пресс», 2021
Посвящается всем людям, которые хотят получить пользу от программирования
СОДЕРЖАНИЕ Вступление . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Почему Полезное Программирование? И кому полезное?. . . . . . . . . . . . . . . . . . . . .7 А на каком языке писать? А какая разница? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9 Что должен знать читатель . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9 Уточнения и ограничения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 Предупреждения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 Что ещё можно почитать, кроме меня? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12 Самореклама. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15 Это сладкое слово — халява . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15 Глава 1. Всё-таки учебная. Но в хорошем смысле . . . . . . . . . . . . . . . . . . . . . . . . . 17 Вступление в предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17 С высоты птичьего полёта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20 Теперь о главном . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24 Продолжение вступления в предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26 Практическая часть. Просто сортировка. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27 Зачем нам сортировка Шелла?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30 И факториал! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31 Глава 2. Не совсем учебная. Графики . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Немного о графиках . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34 Немного о графиках. Продолжение. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38 Немного о графиках. Финиш. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41 Совсем всё. Финиш . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48 Есть ли жизнь после финиша? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .54 Глава 3. С чего начинается работа. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 О чём речь? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61 Что-то длинное. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61 Очень просто – массив. Свёртка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62 Массив. Меняются значения. И меняется длина . . . . . . . . . . . . . . . . . . . . . . . . . . .63 Похожие задачи, но для файлов. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64 Похожие задачи для списков.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66 Объекты, вид сбоку . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69 Задача напоследок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71 Глава 4. Как продолжается работа. Что-то ветвистое . . . . . . . . . . . . . . . . . . . . . . 80 Преамбула. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80
Содержание 5 Что-то посложнее. Короткий раздел . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82 А теперь о главном. Важное . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .83 Что делать? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87 Глава 5. Системы контроля версий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 О чём эта глава . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .94 Скучное. Предмет и терминология . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95 Лирическое отступление, или а зачем это вообще надо?. . . . . . . . . . . . . . . . . . . . . .97 Какие они вообще бывают? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .98 А теперь о главном . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99 А теперь всё вместе и разом!. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100 Вася один на ландшафте . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .101 Вспомогательное счастье . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .103 Подтянулась и компания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .108 Как всё сделать хорошо . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111 Про Одну Кнопку. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115 То, что называется «Бинарные файлы» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .124 Как НЕ НАДО работать с VSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .126 Глава 6. О скучном — динамические библиотеки . . . . . . . . . . . . . . . . . . . . . . . . . 131 Что это такое, а также историческая справка, которую можно не читать. . . . . . . .131 А как с этим теперь? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133 Сначала мы её создадим! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .134 Статическая загрузка и как это может пригодиться . . . . . . . . . . . . . . . . . . . . . . . .137 Динамическая загрузка и расширение возможностей. . . . . . . . . . . . . . . . . . . . . . .139 Польза от динамического вызова. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141 Библиотеки – технические подробности. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .146 Реализация проекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .147 Глава 7. Мелкие технические подробности. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 Легко ли быть жадным? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151 А что делать?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .152 Теперь конкретно об эффективности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .154 Оптимизируем на самом нижнем уровне. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .156 Улучшаем алгоритм . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160 Меняем алгоритм . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .162 Глава 8. Техника программирования, или Это вы обязательно должны знать. . . 164 Абстрактные рассуждения или а оно нам надо? . . . . . . . . . . . . . . . . . . . . . . . . . . .164 Кратко о предмете обсуждения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .166 Рядом лежащие вопросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .167 Подумаем конкретно, на примерах. Первый пример . . . . . . . . . . . . . . . . . . . . . . .168 Пятый способ, бессмысленный и бесполезный . . . . . . . . . . . . . . . . . . . . . . . . . . .173
Содержание То же самое, вид сбоку. Второй пример. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175 Всё не так и всё разное. Третий пример. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .176 Глава 9. Что должен знать программист? Как он должен себя вести? . . . . . . . . 178 Нет, не всё . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .178 О чём я вообще? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .179 Математика. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .180 Информатика (Computer Science) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .183 Глава 10. Для дома, для семьи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 Зачем это надо?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .185 Несложный бредогенератор. Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . . . .186 Бредогенератор. Сначала немного о ЛИСПе. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .191 Бредогенератор. Реализация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .192 Бредогенератор. Доработка напильником и планы на будущее . . . . . . . . . . . . . . .199 Искатель тайного смысла. Обсуждение. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .201 Искатель тайного смысла. Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . .203 Искатель тайного смысла. Подготовка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .203 Искатель тайного смысла. Реализация в первом приближении . . . . . . . . . . . . . . .210 Искатель тайного смысла. Развитие темы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214 Расстояние между словами. Введение в тему. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .219 Расстояние между словами. Реализация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .221 Приложения. Справочник обо всём . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 Приложение A. Всё о данных. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .224 Приложение B. Всё об организации программы на нескольких страницах . . . . . .228 Приложение C. Всё о процедурах и функциях . . . . . . . . . . . . . . . . . . . . . . . . . . . .231 Приложение D. Всё продвинутое программирование на нескольких страницах. .235 Приложение E. Всё о списках. Или почти всё… . . . . . . . . . . . . . . . . . . . . . . . . . . .240 Приложение F. Всё Объектно ориентированное программирование . . . . . . . . . .242 Приложение G. Простенький модуль для работы со строками. Простой, но очень полезный . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .247 Задания для самостоятельного развития. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
ВСТУПЛЕНИЕ Почему Полезное Программирование? И кому полезное? Чем эта книга отличается от других? Когда я говорю «от других», я, само собой, имею в виду — чем эта книга отличается от других моих книг. Отличается она именно тем, что книга эта посвящена именно полезному программированию. Есть книги для начинающих, для тех, кто ничего, или почти ничего, не умеет (читайте мой нетленный «Самоучитель игры на Паскале»). Есть книги для профессионалов (читайте моё искрящееся неподражаемым юмором «Объектно Ориентированное Программирование»). По логике, где-то между ними должна находиться книга для тех, кто что-то кое-где уже порой знает, но ещё далеко не профессионал. И я тоже так сначала думал. И даже почти написал две книги — «Школа игры на (Турбо) Паскале» и «Очень маленькое Delphi». Готовы они были на восемьдесят процентов, и это были неплохие книги, поверьте мне. Потом я решил, что мыслю одномерно и плоско, и пришёл к выводу, что книги эти ненужные. Почему? С книгой по Турбо Паскалю объяснение простое. Я нисколько не сомневаюсь, что это была бы лучшая книга по программированию на Паскале, не только моя, но и вообще в мире. Это не потому, что я такой скромный и умный, а потому, что это была бы последняя книга по программированию на Турбо Паскале в мире. А тот кто пережил всех конкурентов, дотянул до финиша, и выключает за остальными свет — лучший по определению. Конечно, Паскаль никуда не делся. Он превратился в язык Object Pascal, который потом незатейливо переименовали в Delphi. Вокруг языка Delphi выросла среда программирования Delphi. Об этом я мог бы написать много полезного, проблема в том, что до меня уже написано много полезного. Число книг по этой теме на русском языке исчисляется десятками. Ну и зачем мне писать сто первую книгу? Да, она будет лучше предыдущих ста, но кто это заметит и оценит? Поскольку книги я пишу не ради денег — таки разве это деньги? — а из чистого незамутнённого удовольствия, то я выкинул всё мною почти написанное и начал с чистого листа. — Способны ль вы кого-нибудь убить? — Вы шутите, такой как я готов убить любого
Вступление — Вы знаете графиню де Бель Флёр? — Да, в этом доме кое с кем я дружен. — Вы можете убить её слугу? — Готов убить всех слуг, и всех служанок, и даже лошадей её кареты. — Ну, если так, убейте Теодоро. — Тут надо взяться чуточку иначе. © Лопе де Вега, Собака на сене Это всё к тому, что я такой же добрый и трудолюбивый, как и персонаж пьесы. Если что, могу всех, включая лошадей её кареты. Но, в нашем случае, для начала, действительно надо взяться чуточку иначе. Сейчас модно на обложке программистских книг рисовать горизонтальную диаграмму. Слева абсолютный ноль в программировании, справа барельеф «Билл Гейтс убивает Стива Джобса, не сумевшего запрограммировать Тетрис». На этом пустом горизонтальном прямоугольнике отображается, для кого предназначена книга. Если прямоугольник закрашен слева — для самых начинающих. Если справа — для профессионалов. Посредине — понятно. А теперь воспарим над плоскостью вверх и возьмёмся чуточку иначе. На левом конце интервала у нас те, кто ничего не знают, на правом конце — те, кто знают почти всё. А теперь поглядим по другому, не с точки зрения объёма знаний, а с точки зрения цели. Слева у нас те, кто хочет научиться программировать, чтобы после этого уметь программировать. Справа те, кто программировать давно умеют и зарабатывают этим на жизнь, и хотят зарабатывать ещё больше. А между ними Сумрак. Серая зона. Нейтральная полоса. И мотивация для программировании и чтения программистских книжек у всех этих категорий совсем разная. Вот эту Серую Зону я желаю окучить. Объясняю. Между теми, кто только что научился программировать, и между теми, кто программирует за деньги, есть некоторый неохваченный промежуток, и там живые люди. И вот им я хочу помочь, и могу им помочь, потому что я все эти стадии давно прошёл. Эта книга не учит программированию, я предполагаю, что читателя этому научили. К сожалению, школьникам она не подойдёт. Студентам — да, может быть даже тем, что пишут курсовые и не знают — как? Но и это вряд ли. Студент старших курсов, который уже полдня где-то работает, причём даже за деньги — это да. Но основной читатель этой книги, которому от неё будет наибольшая польза, всё-таки не студент в процессе обучения, даже при этом работающий, а программист, только что начавший исполнять нелёгкие обязанности программиста. Да, конечно, он в себе абсолютно уверен, он всё знает, но по приходу на работу его почему-то приходится переучивать. Я хочу объяснить, почему одни студенты при приёме на работу оказываются лучше других. Чего от студента, извините, уже программиста, на работе хотят. Какую работу ему, скорее всего, поручат. В конце концов, я хочу показать (на
А на каком языке писать? А какая разница? примерах), как пишется программа. Причём программа не по заданию из учебника — хотя мы с этого непременно начнём. И не программа, которую мы пишем неведомо для кого за бешеные деньги по странному ТЗ (Техническому Заданию). Заодно вы узнаете, что такое Техническое Задание, и почему его никогда не бывает. Ещё раз повторю — я знаю, как надо. Сначала меня учили. Потом я был маленьким программистом под руководством маленьких начальников. Потом я сам учил других и стал маленьким начальником. Поэтому я знаю. Не всё, но почти всё. А на каком языке писать? А какая разница? На каком языке программирования буду я объяснять и приводить примеры — в целом это важно, но не очень важно, потому что книга не об этом. Но, поскольку из всех языков я лучше всего знаю Паскаль, переходящий в Delphi, то почти все примеры на нём и будут. Можно рассматривать Паскаль в основном тексте книги в качестве псевдокода, в качестве чего он, Паскаль, массово использовался раньше и часто используется сейчас. Для тех, кому интересно, или полезно, весь Паскаль, ныне Delphi, будет на немногих страницах изложен в приложении, то, что я нём считаю важным, разумеется. Ещё надо обдумать, не следует ли написать главу о C#, или сразу книгу. Разумеется, все знают, что C# изобрела та же команда, что раньше изобретала Delphi, поэтому сейчас наблюдается массовая миграция программистов с Delphi на C#, точно так же как и миграция с C++ на C#. Что должен знать читатель Ещё раз вернёмся к вопросу, кого я предполагаю читателем этой книги. Перед моим внутренним взором встаёт только что закончивший Университет специалист, или магистр, приступивший к своей первой работе. В реальности это скорее будет специалист или магистр, приступивший к своей второй работе, потому что на первой работе он трудился ещё в Университете. Но та работа не вполне считается, она была не вполне настоящая. Не потому что он, магистр, был плохим программистам, а потому, что студентам как-то не до конца доверяют, и причины этому есть. Помню, однажды пришёл к нам на практику юноша, серьезно пришёл, даже принёс кружку, чай пить. На следующий же день с утра позвонил, и сказал что задержится, потому что ему срочно надо зайти в военкомат… Больше мы его не
Вступление видели и не слышали. Искренне верю, что его немедленно призвали и послали. Врать не буду, кружка до сих пор с нами. Кроме того, студенты всё время бегают, туда-сюда, туда-сюда, работа, университет, военкомат, обследование… Никакому, даже самому маленькому и терпеливому начальнику это не понравится. И ещё студенты всё время хотят поступить в аспирантуру, это тоже не прибавляет к ним симпатий, даже если аспирантура заочная. Так что пусть лучше Нашим Читателем будет человек, разорвавший все связи со своим Высшим Учебным Заведением и пришедший на работу просто работать. // Уточнение Всё вышесказанное о недостатках студентов касается в первую очередь их ненадёжности как работников, а совсем не их ума. Бывают и невообразимо тупые, но чаще всё-таки наоборот. Один из бывших у нас студентов позже состоял в команде, выигравшей то ли чемпионат, то ли олимпиаду России по программированию. Занудства ради, на тот момент он был ещё студентом колледжа, бывшего индустриального техникума. Наберите в Google ‘колледж имени Коняева хакер’ . Нет, это не он. // конец Уточнения Читатель должен уметь программировать. От слова вообще. Я не буду объяснять, что такое цикл, массив, процедура, функция. Я даже не буду объяснять, что такое класс и что такое — экземпляр класса. Но, поскольку я очень добрый, я это объясню. Но, поскольку я не только очень добрый, но ещё и очень честный, то, чтобы не увеличивать объём книги, я объясню все понятия программирования в Приложении, очень коротко. Единственное, что я буду объяснять подробно в основном тексте, это использование указателей, В отличие от переменных, условных операторов, циклов и массивов, указатели никак нельзя назвать интуитивно понятными. Сегодня указатели не все могут понимать. Вернее, понимать могут не только лишь все, мало кто может это делать. Кстати, раньше многие учёные (Дейкстра) и типа учёные работали в области формального доказательства правильности программ, но указатели при этом стыдливо игнорировались. Ещё, как выяснилось, не все могут сегодня понимать и файлы. Хотя все примеры в книге на Delphi (в девичестве Pascal), программистам на C++ беспокоится нечего. Как всем известно, Дельфи гораздо проще и примитивнее чем C, так что они (сишники) поймут всё просто с полпинка.