Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Полезное программирование. Уникальное руководство к действию

Покупка
Новинка
Основная коллекция
Артикул: 848917.01.99
Уникальное руководство к действию, опыт и практика, сконцентрированные на двух сотнях страниц. Книга для тех, кто умеет программировать и уже готов этим зарабатывать. Курс молодого, но профессионального программиста. Практические советы. Что пригодится вам из пройденного и сданного. Что вы будете программировать сначала, а что позже, когда наберётесь опыта. К чему ещё можно применить ваш программистский талант, чтобы руководство одобрило и поощрило. Кратко, доступно, убедительно.
Комлев, Н. Ю. Полезное программирование. Уникальное руководство к действию : практическое руководство / Н. Ю. Комлев. - Москва : СОЛОН-ПРЕСС, 2021. - 256 с. - ISBN 978-5-91359-340-5. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2185097 (дата обращения: 21.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Комлев Н. Ю.
Полезное 
Программирование
Москва
СОЛОН-Пресс
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, так что они (сишники) поймут всё просто с полпинка.