Skip to content

Latest commit

 

History

History
112 lines (111 loc) · 7.84 KB

Index.md

File metadata and controls

112 lines (111 loc) · 7.84 KB

Зміст

  1. Вступ
    1.1. Підходи до вивчення програмування
    1.2. Приклади на мовах JavaScript, Python та C
    1.3. Моделювання: абстракції та повторне використання
    1.4. Алгоритм, программа, синтаксис, мова
    1.5. Декомпозиція та поділ відповідальності
    1.6. Огляд спеціальності інженер-програміст
    1.7. Огляд парадигм програмування
  2. Базові концепти
    2.1. Значення, ідентифікатор, змінна та константа, літерал, присвоєння
    2.2. Типи даних, скалярні, посилання та структурні типи
    2.3. Контекст та лексичне оточення
    2.4. Оператор та вираз, блок коду, функція, цикл, умова
    2.5. Процедурна парадигма, виклик, стек та куча
    2.6. Функція вищого порядку, чиста функція, побічні ефекти
    2.7. Замикання, функції зворотного виклику, обгортки та події
    2.8. Винятки та обробка помилок
    2.9. Мономорфний код у динамічних мовах
  3. Стан застосунку, структури даних та колекції
    3.1. Підходи до роботи зі станом: stateful and stateless
    3.2. Структури та записи
    3.3. Масив, список, множина, кортеж
    3.4. Словник, хеш-таблиця та асоціативний масив
    3.5. Стек, черга, дек
    3.6. Дерева та графи
    3.7. Проекції та відображення наборів даних
    3.8. Оцінка обчислювальної складності
  4. Розширені концепції
    4.1. Що таке технологічний стек
    4.2. Середовище розробки та налагодження коду
    4.3. Ітерування: рекурсія, ітератори та генератори
    4.4. Структура додатку: файли, модулі, компоненти
    4.5. Об'єкт, прототип та клас
    4.6. Часткове застосування та каррування, композиція функцій
    4.7. Чейнінг для методів та функцій
    4.8. Домішки (mixins)
    4.9. Залежності та бібліотеки
  5. Поширені парадигми програмування
    5.1. Імперативний та декларативний підхід
    5.2. Структуроване та неструктуроване програмування
    5.3. Процедурне програмування
    5.4. Функціональне програмування
    5.5. Об'єктно-орієнтоване програмування
    5.6. Прототипне програмування
  6. Антипатерни
    6.1. Загальні антипатерни для всіх парадигм
    6.2. Процедурні антипатерни
    6.3. Об'єктно-орієнтовані антипатерни
    6.4. Функціональні антипатерни
  7. Процес розробки
    7.1. Життєвий цикл ПЗ, аналіз предметної областіи
    7.2. Угоди та стандарти
    7.3. Тестування: модульне, системне та інтеграційне тестування
    7.4. Перевірка коду та рефакторинг
    7.5. Оцінка ресурсів, план та графік розвитку
    7.6. Аналіз ризиків, слабкі сторони, нефункціональні вимоги
    7.7. Координація та корегування процесу
    7.8. Безперервна інтеграція та розгортання
    7.9. Багатоаспектна оптимізація
  8. Розширені концепції
    8.1. Події, таймери та EventEmitter
    8.2. Інтроспекція та рефлексія
    8.3. Серіалізація та десеріалізація
    8.4. Регулярні вирази
    8.5. Мемоізація
    8.6. Фабрики та пули
    8.7. Типізовані масиви
    8.8. Проекції
    8.9. I/O(введення-виведення) та файли
  9. Архітектура
    9.1. Декомпозиція, іменування та зв'язування
    9.2. Взаємодія між компонентами ПЗ
    9.3. Зв'язування через простори імен
    9.4. Взаємодія за допомогою викликів та колбеків
    9.5. Взаємодія за допомогою подій та повідомлень
    9.6. Інтерфейси, протоколи та контракти
    9.7. Цибулева (onion) або багатошарова архітектура
  10. Основи паралельних обчислень
    10.1. Асинхронне програмування
    10.2. Паралельне програмування, загальна пам'ять та примітиви синхронізації
    10.3. Асинхронні примітиви: Thenable, Promise, Future, Deferred
    10.4. Співпрограми, горутіни, async/await
    10.5. Адаптери між асинхронними контрактами
    10.6. Асинхронна та паралельна сумісність
    10.7. Підхід до передачі повідомлень та модель акторів
    10.8. Асинхронна черга та асинхронні колекції
    10.9. Lock-free структури даних
  11. Додаткові парадигми програмування
    11.1. Узагальнене програмування
    11.2. Програмування на базі подій та реактивне програмування
    11.3. Автоматне програмування: скінченні автомати (машини станів)
    11.4. Спеціалізовані мови для предметних областей (DSL)
    11.5. Програмування на потоках даних
    11.6. Метапрограмування
    11.7. Динамічна інтерпретація метамоделі
  12. Бази даних та постійне зберігання
    12.1. Історія баз даних та навігаційні бази даних
    12.2. Ключ-значення та інші абстрактні структури даних
    12.3. Реляційна модель даних та ER-діаграми
    12.4. Безсхемні, об'єктно- та документо-орієнтовані бази даних
    12.5. Ієрархічна модель даних та графові бази даних
    12.6. Колонкові бази даних та in-memory бази даних
    12.7. Розподілені бази даних
  13. Розподілені системи
    13.1. Міжпроцесна взаємодія
    13.2. Безконфліктні репліковані типи даних (CRDT)
    13.3. Узгодженість, доступність та розподіленість
    13.4. Стратегії вирішення конфліктів
    13.5. Протоколи консенсусу
    13.6. CQRS, EventSourcing