Программирование. Введение в профессию. Том 3: Парадигмы

Программирование. Введение в профессию. Том 3: Парадигмы

Программирование. Введение в профессию. Том 3: Парадигмы
Автор: Столяров Андрей Викторович
Дата выхода: 2025
Издательство: Самиздат
Количество страниц: 227
Размер файла: 3,2 МБ
Тип файла: PDF
Добавил: Aleks-5
 Проверить на вирусы

Программирование. Введение в профессию том 9. Парадигмы в мышлении программиста....6

9.1. Загадочное слово <<парадигма>>....6

9.1.1. Терминологические трудности ....7

9.1.2. Парадигмы вне программирования ....7

9.1.3. Обзор основных стилей ....9

9.2. Рекурсия как пример парадигмы....15

9.2.1. Пример с обходом дерева ....15

9.2.2. Виды рекурсии ....16

9.2.3. Редукция (свёртка) последовательностей ....17

9.2.4. Остаточная рекурсия ....19

9.2.5. Рекурсивное мышление ....21

9.3. Парадигмы и языки программирования....22

9.3.1. О роли языка программирования ....22

9.3.2. Концептуальное отличие Си от Паскаля ....23

9.3.3. Два подхода к сравнению языков ....27

9.4. Примеры частных парадигм....28

9.4.1. Callback-функции ....28

9.4.2. Программирование в терминах явных состояний ....28

9.4.3. Метапрограммирование ....30

10. Язык Си, ООП и АТД....31

10.1. От Си к Си....31

10.2. О выборе подмножества Си....32

10.3. Методы, объекты и защита....32

10.3.1. Функции-члены (методы) ....32

10.3.2. Неявный указатель на объект ....33

10.3.3. Защита. Понятие конструктора ....33

10.3.4. Зачем нужна защита ....34

10.3.5. Классы ....35

10.3.6. Деструкторы ....35

10.4. Абстрактные типы данных в Си....36

10.4.1. Перегрузка имён функций; декорирование ....36

10.4.2. Переопределение символов стандартных операций ....38

10.4.3. Конструктор умолчания. Массивы объектов ....39

10.4.4. Конструкторы преобразования ....39

10.4.5. Ссылки ....39

10.4.6. Ссылки на константы ....40

10.4.7. Ссылки как семантический феномен ....41

10.4.8. Константные методы ....41

10.4.9. Операции работы с динамической памятью ....42

10.4.10. Конструктор копирования ....43

10.4.11. Временные и анонимные объекты ....43

10.4.12. Значения параметров по умолчанию ....44

10.4.13. Описание метода вне класса. Области видимости ....45

10.4.14. <<Подставляемые>> функции (inline) ....45

10.4.15. Инициализация членов класса в конструкторе ....46

10.4.16. Перегрузка операций простыми функциями ....46

10.4.17. Дружественные функции и классы ....47

10.4.18. Переопределение операций присваивания ....48

10.4.19. Методы, возникающие неявно ....48

10.4.20. Переопределение операции индексирования ....49

10.4.21. Переопределение операций и -- ....50

10.4.22. Переопределение операции -> ....51

10.4.23. Переопределение операции вызова функции ....51

10.4.24. Переопределение операции преобразования типа ....52

10.4.25. Пример: разреженный массив ....52

10.4.26. Статические поля и методы ....54

10.5. Обработка исключительных ситуаций....55

10.5.1. Ошибочные ситуации и проблемы их обработки ....56

10.5.2. Общая идея механизма исключений ....56

10.5.3. Возбуждение исключений ....57

10.5.4. Обработка исключений ....57

10.5.5. Обработчики с многоточием ....58

10.5.6. Объект класса в роли исключения ....58

10.5.7. Автоматическая очистка ....59

10.5.8. Преобразования типов исключений ....59

10.6. Наследование и полиморфизм....60

10.6.1. Иерархические предметные области ....60

10.6.2. Наследование структур и полиморфизм адресов ....60

10.6.3. Методы и защита при наследовании ....61

10.6.4. Конструирование и деструкция наследника ....62

10.6.5. Виртуальные функции ....62

10.6.6. Чисто виртуальные методы и абстрактные классы ....64

10.6.7. Виртуальность в конструкторах и деструкторах ....65

10.6.8. Наследование ради конструктора ....65

10.6.9. Виртуальный деструктор ....66

10.6.10. Ещё о полиморфизме ....66

10.6.11. Приватные и защищённые деструкторы ....66

10.6.12. Перегрузка функций и сокрытие имён ....67

10.6.13. Вызов в обход механизма виртуальности ....67

10.6.14. Операции приведения типа ....68

10.6.15. Иерархии исключений ....68

10.7. Шаблоны....69

10.7.1. Шаблоны функций ....70

10.7.2. Шаблоны классов ....70

10.7.3. Специализация шаблонов ....72

10.7.4. Пример: свёртка последовательностей ....73

10.7.5. Константы в роли параметров шаблона ....75

10.8. Снова о парадигмах....77

10.8.1. Спектр парадигм в Си ....77

10.8.2. ООП и АТД ....77

10.8.3. Полиморфизм без мистики ....77

10.8.4. Наследование как сужение множества ....78

10.9. Особенности оформления кода на Си....78

10.9.1. Соглашения об именах ....78

10.9.2. Форматирование заголовков классов ....79

10.9.3. Форматирование заголовка конструктора ....79

10.9.4. Тела функций в заголовке класса ....80

10.10. Пример: TCP-сервер....80

10.11. О графических интерфейсах пользователя....85

10.11.1. Знакомимся с библиотекой FLTK ....85

10.11.2. Простые кнопки и реакция на них ....87

10.11.3. Другие виды кнопок ....88

10.11.4. Виджеты для ввода текста ....90

10.11.5. Обрамление и метки ....92

10.11.6. Виджеты для вывода ....94

10.11.7. Окна, допускающие изменение размера ....94

10.11.8. Обработка аргументов командной строки ....96

10.11.9. Обзор нерассмотренных возможностей ....97

10.11.10. FLTK и парадигма ООП ....98

10.11.11. () Если нужен свой главный цикл ....100

Си: что дальше....100

11. Неразрушающие парадигмы....102

11.1. Язык Лисп и его S-выражения....102

11.1.1. Немного истории ....102

11.1.2. SBCL, GCL и ECL ....103

11.1.3. S-выражения: гетерогенная модель данных ....106

11.1.4. Вычисление S-выражений ....107

11.1.5. Пользовательские функции ....109

11.1.6. Разрушающие функции ....110

11.1.7. Функция eval ....112

11.1.8. Функции как объекты обработки ....113

11.1.9. Фунарг-проблема и лексическое связывание ....114

11.1.10. О фунарг-проблеме в других языках ....117

11.1.11. Редукция списков ....119

11.1.12. Груз устаревших парадигм ....120

11.1.13. Возможности, которых лучше бы не было ....121

11.1.14. Ввод-вывод ....122

11.1.15. Неутешительное заключение ....126

11.2. Scheme: Лисп, но не совсем....127

11.2.1. Chicken Scheme ....127

11.2.2. Видимые отличия Scheme от обычного Лиспа ....128

11.2.3. Ввод-вывод в Scheme ....129

11.2.4. Континуации (продолжения) ....131

11.2.5. () Continuation-passing style ....134

11.3. Об оформлении кода на лиспоподобных языках....134

11.4. Логическое и декларативное программирование....135

11.4.1. Язык Пролог и его история ....136

11.4.2. SWI-Prolog ....136

11.4.3. Модель данных в Прологе ....138

11.4.4. Операция унификации термов ....141

11.4.5. Отношения, предикаты и факты ....141

11.4.6. Правила и процедуры ....143

11.4.7. Обращения к процедурам, прототипы и инверсия ....144

11.4.8. Отрицание и отсечение: убийцы логики ....147

11.4.9. Арифметика ....149

11.4.10. Ввод-вывод ....151

11.4.11. Анализ атомов и термов ....153

11.4.12. Списки решений ....154

11.4.13. Работа с базой данных ....155

11.4.14. Оформление кода на Прологе ....156

11.5. Ленивые вычисления....157

11.5.1. Две возможные стратегии вычисления выражений ....157

11.5.2. Хоуп и другие <<ленивые>> языки ....157

11.5.3. Интерпретатор Hopeless ....158

11.5.4. Лексика и синтаксис языка Хоуп ....159

11.5.5. Модель данных и система типов ....159

11.5.6. Функции в Хоупе ....160

11.5.7. Операции if и let ....161

11.5.8. Полиморфные функции ....162

11.5.9. Безымянные функции и функционалы ....163

11.5.10. Операция letrec ....164

11.5.11. Редукция списков ....165

11.5.12. Бесконечные структуры данных. Примеры ....166

11.5.13. Ввод-вывод в Хоупе ....167

11.5.14. Карринг ....168

11.5.15. Комбинатор неподвижной точки ....169

12. Компиляция, интерпретация, скриптинг....172

12.1. Характерные особенности скриптовых языков....172

12.2. Язык Tcl....173

12.2.1. Интерпретатор и простейшие программы ....173

12.2.2. Переменные и их значения ....174

12.2.3. Ветвления, циклы... и строки ....175

12.2.4. Процедуры и видимость переменных ....178

12.2.5. Обработка особых ситуаций ....180

12.2.6. Файлы, потоки и внешние команды ....181

12.2.7. Ассоциативные массивы ....183

12.2.8. Если сравнить Tcl с Лиспом ....183

12.3. Интерпретатор Tcl и язык Си....184

12.3.1. Встраиваемый Tcl ....184

12.3.2. Расширение набора команд tclsh ....187

12.4. Графические интерфейсы на TclTk....187

12.4.1. Библиотека Tk и интерпретатор wish ....187

12.4.2. Взаимодействие с оконным менеджером ....189

12.4.3. Основные виджеты ....190

12.4.4. Положение и размеры ....192

12.4.5. Управление шрифтами ....194

12.4.6. Обработка событий ....195

12.4.7. <<Ресурсы>> и русификация ....196

12.5. Стратегии выполнения как парадигмы....197

12.5.1. И всё же что такое скрипт ....197

12.5.2. Дихотомия Оустерхаута и её противники ....198

12.5.3. И всё же что такое <<интерпретация>>? ....200

12.5.4. Интерпретация как парадигма ....201

12.5.5. Зависимости и самодостаточность ....203

12.5.6. Миф о переносимости ....205

12.5.7. Когда интерпретация всё же допустима ....205

12.5.8. () Размышления о чистой компиляции ....207

Приложения....209

Приложение 5. Сравнение файлов и наложение изменений....209

Приложение 6. Системы контроля версий....211

Система CVS....212

Система git....215

Заключение....220

Список литературы....221

Предметный указатель....223

Учебник «Программирование: введение в профессию» ориентирован на самостоятельное изучение и предполагает использование систем семейства Unix (в т.ч. Linux) в роли сквозной среды для обучения.


Похожее:

Список отзывов:

Нет отзывов к книге.