Асинхронне програмування (повний курс)

Асинхронне програмування (повний курс)

Асинхронне програмування останнім часом стало більш розвиненим напрямом, ніж класичне паралельне програмування, а світі JavaSript, як у браузерах, і у Node.js, розуміння його прийомів зайняло одне з центральних місць у формуванні світогляду розробників. Пропоную до вашої уваги цілісний і найбільш повний курс з поясненням усіх широко поширених методів асинхронного програмування, адаптерів між ними та допоміжних прорізів. Зараз він складається з 23 лекцій, 3 доповідей та 28 репозиторіїв з безліччю прикладів коду на github. Всього близько 17 годин відео: посилання на плейлист.

Пояснення до схеми

На схемі (вище) показано зв'язок між різними способами роботи з асинхронністю. Кольорові блоки відносяться до асинхронного програмування, а ч/б показані методи паралельного програмування (семафори, м'ютекси, бар'єри тощо) та мережі петрі, які, як і асинхронне програмування та модель акторів, є різними підходами до реалізації паралельних обчислень (вони дано на схемі лише щоб точніше визначити місце асинхронного програмування). Модель акторів пов'язані з асинхронним програмуванням оскільки реалізація акторів без многопоточности теж має право існування і служить для структурування асинхронного коду. Пунктирними лініями події та конкурентна черга пов'язані з колбеками тому, що ці абстракції базуються на колбеках, але все ж таки формують якісно нові підходи.

Теми лекцій

1. Асинхронне програмування (огляд)
2. Таймери, таймаути та EventEmitter
3. Асинхронне програмування на callback`ах
4. Неблокуюче асинхронне ітерування
5. Асинхронність із бібліотекою async.js
6. Асинхронність на промісах
7. Асинхронні функції та обробка помилок
8. Асинхронні адаптери: promisify, callbackify, asyncify
9. Асинхронні колектори даних
10. Необроблені помилки у промісах
11. Проблема асинхронного стектрейсу
12. Генератори та асинхронні генератори
13. Ітератори та асинхронні ітератори
14. Скасування асинхронних операцій
15. Асинхронна композиція функцій
16. Thenable та легковагий await
17. Конкурентна асинхронна черга
18. Паттерн відкритий конструктор (Revealing Constructor)
19. Future: Асинхронність на ф'ючерах без стану
20. Deferred: Асинхронність на диферах зі станом
21. Модель акторів (Actor Model)
22. Паттерн Спостерігач (Observer + Observable)
23. Асинхронність на RxJS та потоки подій

Під кожним відео є посилання на репозиторії з прикладами коду, які розуміються на відео. Я постарався показати, що не треба зводити все до однієї абстракції асинхронності. Універсального підходу до асинхронності не існує, а для кожного випадку можна підібрати ті методи, які дозволять писати код природніше для цієї конкретної задачі. Звичайно ж, цей курс доповнюватимуться і я прошу всіх пропонувати нові теми і контриб'ютити в приклади коду. Основне завдання курсу — показати як будувати абстракції асинхронності зсередини, а не просто навчити ними користуватися. Практично всі абстракції не беруться з бібліотек, а дано у найпростішій їх реалізації та покроково розібрано їхню роботу.

Тільки зареєстровані користувачі можуть брати участь в опитуванні. Увійдіть, будь ласка.

Ваше ставлення до курсу?

  • Подивлюся весь курс

  • Подивлюся вибірково

  • Мені вистачає одного підходу

  • Контриб'ють в курс

  • Не цікавлюся асинхронністю

Проголосували 8 користувачів. Утримався 1 користувач.

Джерело: habr.com

Додати коментар або відгук