|
| 1 | +# Зміст |
| 2 | + |
| 3 | +1. Вступ |
| 4 | + 1.1. Підходи до вивчення програмування |
| 5 | + 1.2. Приклади на мовах JavaScript, Python та C |
| 6 | + 1.3. Моделювання: абстракції та повторне використання |
| 7 | + 1.4. Алгоритм, программа, синтаксис, мова |
| 8 | + 1.5. Декомпозиція та поділ відповідальності |
| 9 | + 1.6. Огляд спеціальності інженер-програміст |
| 10 | + 1.7. Огляд парадигм програмування |
| 11 | +2. Базові концепти |
| 12 | + 2.1. Значення, ідентифікатор, змінна та константа, літерал, присвоєння |
| 13 | + 2.2. Типи даних, скалярні, посилання та структурні типи |
| 14 | + 2.3. Контекст та лексичне оточення |
| 15 | + 2.4. Оператор та вираз, блок коду, функція, цикл, умова |
| 16 | + 2.5. Процедурна парадигма, виклик, стек та куча |
| 17 | + 2.6. Функція вищого порядку, чиста функція, побічні ефекти |
| 18 | + 2.7. Замикання, функції зворотного виклику, обгортки та події |
| 19 | + 2.8. Винятки та обробка помилок |
| 20 | + 2.9. Мономорфний код у динамічних мовах |
| 21 | +3. Стан застосунку, структури даних та колекції |
| 22 | + 3.1. Підходи до роботи зі станом: stateful and stateless |
| 23 | + 3.2. Структури та записи |
| 24 | + 3.3. Масив, список, множина, кортеж |
| 25 | + 3.4. Словник, хеш-таблиця та асоціативний масив |
| 26 | + 3.5. Стек, черга, дек |
| 27 | + 3.6. Дерева та графи |
| 28 | + 3.7. Проекції та відображення наборів даних |
| 29 | + 3.8. Оцінка обчислювальної складності |
| 30 | +4. Розширені концепції |
| 31 | + 4.1. Що таке технологічний стек |
| 32 | + 4.2. Середовище розробки та налагодження коду |
| 33 | + 4.3. Ітерування: рекурсія, ітератори та генератори |
| 34 | + 4.4. Структура додатку: файли, модулі, компоненти |
| 35 | + 4.5. Об'єкт, прототип та клас |
| 36 | + 4.6. Часткове застосування та каррування, композиція функцій |
| 37 | + 4.7. Чейнінг для методів та функцій |
| 38 | + 4.8. Домішки (mixins) |
| 39 | + 4.9. Залежності та бібліотеки |
| 40 | +5. Поширені парадигми програмування |
| 41 | + 5.1. Імперативний та декларативний підхід |
| 42 | + 5.2. Структуроване та неструктуроване програмування |
| 43 | + 5.3. Процедурне програмування |
| 44 | + 5.4. Функціональне програмування |
| 45 | + 5.5. Об'єктно-орієнтоване програмування |
| 46 | + 5.6. Прототипне програмування |
| 47 | +6. Антипатерни |
| 48 | + 6.1. Загальні антипатерни для всіх парадигм |
| 49 | + 6.2. Процедурні антипатерни |
| 50 | + 6.3. Об'єктно-орієнтовані антипатерни |
| 51 | + 6.4. Функціональні антипатерни |
| 52 | +7. Процес розробки |
| 53 | + 7.1. Життєвий цикл ПЗ, аналіз предметної областіи |
| 54 | + 7.2. Угоди та стандарти |
| 55 | + 7.3. Тестування: модульне, системне та інтеграційне тестування |
| 56 | + 7.4. Перевірка коду та рефакторинг |
| 57 | + 7.5. Оцінка ресурсів, план та графік розвитку |
| 58 | + 7.6. Аналіз ризиків, слабкі сторони, нефункціональні вимоги |
| 59 | + 7.7. Координація та корегування процесу |
| 60 | + 7.8. Безперервна інтеграція та розгортання |
| 61 | + 7.9. Багатоаспектна оптимізація |
| 62 | +8. Розширені концепції |
| 63 | + 8.1. Події, таймери та EventEmitter |
| 64 | + 8.2. Інтроспекція та рефлексія |
| 65 | + 8.3. Серіалізація та десеріалізація |
| 66 | + 8.4. Регулярні вирази |
| 67 | + 8.5. Мемоізація |
| 68 | + 8.6. Фабрики та пули |
| 69 | + 8.7. Типізовані масиви |
| 70 | + 8.8. Проекції |
| 71 | + 8.9. I/O(введення-виведення) та файли |
| 72 | +9. Архітектура |
| 73 | + 9.1. Декомпозиція, іменування та зв'язування |
| 74 | + 9.2. Взаємодія між компонентами ПЗ |
| 75 | + 9.3. Зв'язування через простори імен |
| 76 | + 9.4. Взаємодія за допомогою викликів та колбеків |
| 77 | + 9.5. Взаємодія за допомогою подій та повідомлень |
| 78 | + 9.6. Інтерфейси, протоколи та контракти |
| 79 | + 9.7. Цибулева (onion) або багатошарова архітектура |
| 80 | +10. Основи паралельних обчислень |
| 81 | + 10.1. Асинхронне програмування |
| 82 | + 10.2. Паралельне програмування, загальна пам'ять та примітиви синхронізації |
| 83 | + 10.3. Асинхронні примітиви: Thenable, Promise, Future, Deferred |
| 84 | + 10.4. Співпрограми, горутіни, async/await |
| 85 | + 10.5. Адаптери між асинхронними контрактами |
| 86 | + 10.6. Асинхронна та паралельна сумісність |
| 87 | + 10.7. Підхід до передачі повідомлень та модель акторів |
| 88 | + 10.8. Асинхронна черга та асинхронні колекції |
| 89 | + 10.9. Lock-free структури даних |
| 90 | +11. Додаткові парадигми програмування |
| 91 | + 11.1. Узагальнене програмування |
| 92 | + 11.2. Програмування на базі подій та реактивне програмування |
| 93 | + 11.3. Автоматне програмування: скінченні автомати (машини станів) |
| 94 | + 11.4. Спеціалізовані мови для предметних областей (DSL) |
| 95 | + 11.5. Програмування на потоках даних |
| 96 | + 11.6. Метапрограмування |
| 97 | + 11.7. Динамічна інтерпретація метамоделі |
| 98 | +12. Бази даних та постійне зберігання |
| 99 | + 12.1. Історія баз даних та навігаційні бази даних |
| 100 | + 12.2. Ключ-значення та інші абстрактні структури даних |
| 101 | + 12.3. Реляційна модель даних та ER-діаграми |
| 102 | + 12.4. Безсхемні, об'єктно- та документо-орієнтовані бази даних |
| 103 | + 12.5. Ієрархічна модель даних та графові бази даних |
| 104 | + 12.6. Колонкові бази даних та in-memory бази даних |
| 105 | + 12.7. Розподілені бази даних |
| 106 | +13. Розподілені системи |
| 107 | + 13.1. Міжпроцесна взаємодія |
| 108 | + 13.2. Безконфліктні репліковані типи даних (CRDT) |
| 109 | + 13.3. Узгодженість, доступність та розподіленість |
| 110 | + 13.4. Стратегії вирішення конфліктів |
| 111 | + 13.5. Протоколи консенсусу |
| 112 | + 13.6. CQRS, EventSourcing |
0 commit comments