Skip to content

Latest commit

 

History

History
121 lines (112 loc) · 8.46 KB

Proposal-2023.md

File metadata and controls

121 lines (112 loc) · 8.46 KB

Мультипарадигмене програмування

  1. Імперативний та декларативний підхід
  2. Структуроване та неструктуроване програмування
  3. Процедурне програмування
  4. Функціональне програмування
  5. Програмування на базі подій та реактивне програмування
  6. Об'єктно-орієнтоване програмування
  7. Прототипне програмування
  8. Узагальнене програмування та дженеріки
  9. Автоматне програмування, скінченні автомати (машини станів)
  10. Модель акторів
  11. Спеціалізовані мови для предметних областей (DSL)
  12. Програмування на потоках даних
  13. Метапрограмування
  14. Динамічна інтерпретація метамоделей
  15. Мультипарадигмене програмування та поєднання декількох парадигм
  16. Контрактне прорамування
  17. Компонентний підхід
  18. Паралельне та асинхронне програмування

Веб програмування для бекенд та фронтенд

  1. Базові концепції, синтаксис та семантика мов JavaScript та TypeScript
  2. Стан застосунку, структури даних та колекції
  3. Підходи до роботи зі станом: stateful and stateless
  4. Структури даних у JavaScript: стек, черга, дек, дерева та графи
  5. Проекції та відображення наборів даних
  6. Оцінка обчислювальної складності та оптимізація виконання у v8
  7. Що таке технологічний стек та огляд стеків для веб
  8. Середовище розробки та налагодження коду
  9. Ітерування: рекурсія, ітератори та генератори
  10. Структура додатку: файли, модулі, компоненти, системи модульності
  11. Об'єкт, прототип та клас
  12. Часткове застосування та каррування, композиція функцій у JavaScript
  13. Чейнінг для методів та функцій, домішки (mixins), мемоізація, фабрики
  14. Залежності та бібліотеки, зачеплення та зв'язність коду
  15. Антипатерни, ревью коду та рефакторинг
  16. Угоди та стандарти, контракти
  17. Тестування для бекенд та фронтенд
  18. Події, таймери, лісенери
  19. Регулярні вирази та BNF
  20. Інтроспекція та рефлексія, серіалізація та десеріалізація

Асинхронне програмування

  1. Огляд паралельного програмування, загальна пам'ять та примітиви синхронізації
  2. Асинхронність на колбеках (функції зворотнього виклику)
  3. Блокуючі та неблокуючі операції, I/O (введення-виведення)
  4. Паттерни EventEmitter та AsyncEmitter
  5. Асинхронні примітиви: Thenable, Promise, Future, Deferred
  6. Співпрограми, горутіни, async/await
  7. Адаптери між асинхронними контрактами: promisify, callbackify, asyncify
  8. Асинхронна та паралельна сумісність
  9. Підхід до передачі повідомлень та модель акторів
  10. Асинхронна черга та асинхронні колекції
  11. Асинхронні коллектори даних
  12. Асинхронні генератори та ітератори
  13. Обробка помилок та відміна асинхронних операцій
  14. Асинхронна композиція функцій
  15. Паттерн відкритий конструктор (Revealing Constructor)
  16. Паттерн спостерігач (Observer + Observable)
  17. Async hooks для Node.js
  18. Shared memory у режимі багатопоточності Node.js
  19. Асинхронний pool для worker thread у Node.js
  20. Lock-free структури даних

Архітектура програмних систем

  1. Декомпозиція, іменування та зв'язування
  2. Взаємодія між компонентами ПЗ
  3. Зв'язування через простори імен
  4. Взаємодія за допомогою викликів та колбеків
  5. Взаємодія за допомогою подій та повідомлень
  6. Інтерфейси, протоколи та контракти
  7. Цибулева (onion) або багатошарова архітектура
  8. Аналіз ризиків, слабкі сторони, нефункціональні вимоги
  9. Координація та корегування процесу
  10. Безперервна інтеграція та розгортання
  11. Багатоаспектна оптимізація
  12. Основи паралельних обчислень
  13. Бази даних та постійне зберігання
  14. Ключ-значення та інші абстрактні структури даних
  15. Реляційна модель даних та ER-діаграми
  16. Безсхемні, об'єктно- та документо-орієнтовані бази даних
  17. Ієрархічна модель даних та графові бази даних
  18. Колонкові бази даних та in-memory бази даних
  19. Розподілені системи
  20. Міжпроцесна взаємодія
  21. Безконфліктні репліковані типи даних (CRDT)
  22. Узгодженість, доступність та розподіленість
  23. Стратегії вирішення конфліктів
  24. Протоколи консенсусу
  25. CQRS, EventSourcing

Корпоративні інформаційні системи

  1. Введення в технологію Node.js, огляд вбудованого API
  2. Асинхронне програмування в Node.js
  3. Робота з файлами, буферами та файловими потоками в Node.js
  4. Спостереження за файловою системою в Node.js
  5. Структура та архітектура додатків
  6. Модулі ECMA, Common.js, Module API
  7. Модулі та пакети, використання package.json та node_modules
  8. Міжпроцесна взаємодія (IPC), воркер-треди
  9. Domain Driven Design для інформаційних систем
  10. Фреймворк-агностік та транспорт-агностік підходи 11: Ізоляція коду та впровадження залежностей 12: Застосування принципів GRASP, SOLID, DDD, LoD, GoF
  11. Розробка серверів додатків і API на Node.js
  12. Клієнт-сервер на Node.js, протоколи TCP і UDP, DNS
  13. Сервер HTTP, HTTP/2, HTTP/3: маршрутизація, кластер, IP sticky
  14. HTTP сесії і файли cookie, fetch API, WebSocket, віддача статики
  15. Скаффолдинг для API, UI та даних
  16. Високонавантажені та розподілені додатки
  17. Робота з базами даних, шар доступу до даних, курсор, транзакція
  18. Memory leaks в Node.js і JavaScript, збірка мусора і профілювання
  19. Atomics, SharedArrayBuffer, worker_threads в Node.js
  20. Безпека, надійність та управління інфраструктурою
  21. Тулінг: логування, graceful shutdown, CI, CD
  22. Serverless хмари (FaaS) та ізоляція контекстів