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

  • Tutorial

Методы асинхронного программирования


Асинхронное программирование за последнее время стало не менее развитым направлением, чем классическое параллельное программирование, а в мире 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 и потоки событий


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

Only registered users can participate in poll. Log in, please.

Ваше отношение к курсу?

  • 58.2%Посмотрю весь курс176
  • 37.7%Посмотрю выборочно114
  • 0.6%Мне хватает одного подхода2
  • 0.6%Буду контрибьютить в курс2
  • 2.6%Не интересуюсь асинхронностью8
Share post
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 15

    +2
    Спасибо за труд!
      +2
      У Вас великолепные курсы! Спасибо!
        +2
        О мой бог. Редко такое говорю потому, что я очень требовательный к контенту. Но это отличнейший курс, оно еще и бесплатно.
          +7
          Киевский политехнический институт, Факультет информатики и вычислительной техники. Каждый год более 1000 студентов проходят этот курс.
          +1
          Спасибо большое.
            +1
            Огромнейшее спасибо!
              +1
              Ещё не смотрел и не осуждаю, но надеюсь, что оно будет полезно не только в контексте JS.
                0
                А есть в литературном виде? А то не люблю когда лекторы размазывают по времени свою болтовню.
                  +2
                  Есть примеры кода в гитхабе, код иллюстрирует идеи лучше, чем видео и статьи. Я всегда предпочитаю сразу находить и смотреть код, когда читаю статью. Но в виде книги тоже собираюсь сделать в 2020 году весь курс из 100 лекций, который уже точно в 100 не уложится. habr.com/ru/post/434686
                    0
                    Есть на ютубе замечательная вещь — ускорение видео
                    0
                    Поделюсь полученным мною экспериментальным результатом: актор — это переиспользуемый асинхронный вызов процедуры. Поэтому акторы — подвид асинхронного программирования. А корутины — способ реализации акторов.
                      +1
                      Огромная благодарность за курс, Тимур! И не только за этот! Сказать, что я в восторге от таких лекций и курсов — ничего не сказать!)
                        0
                        Такой бы курс да по iOS
                          0
                          В чем не шарю, в том не шарю )
                          +1
                          Смотрятся на одном дыхании. Хорошее качество, отличная подача. 10/10.

                          Only users with full accounts can post comments. Log in, please.