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

April 19, 2024 · View on GitHub

💡 Объем материала: 10 часов лекций + необязательные материалы, созвоны для ревью кода и ответов на вопросы: 2 часа в неделю в течении года, репозитории с примерами кода, задачи по всем темам.

Те способы писать асинхронный код, которые мы использовали 10-15 лет назад безвозвратно уходят в прошлое и могут быть интересны лишь для поддержки легаси упражнения в глубоком понимании асинхронного программирования. Даже способы 5-7 летней давности уже имеют мало общего с современными практиками, но интернет полон устаревшей информации, даже открытый курс сообщества Metarhia на сегодняшний момент стал слишком громоздким и излишним. Еще нужно упомянуть о том, что в системном и прикладном коде асинхронное программирование должно выглядеть принципиально по-разному. Полностью скрыть от продуктового разработчика сложность асинхронного кода за абстракциями не удастся, потому, что он в любом случае будет работать с таймерами, событиями, стримами, fetch и другими асинхронными API, но его можно писать в десятки раз проще, чем асинхронный код в системном слое. Что касается системного слоя, то нужно вводить в обиход теорию очередей (системы массового обслуживания), модель акторов, часть абстракций из параллельного программирования (семафоры, рандеву, атомарные операции). Конечно, содержать все это в одном курсе сложновато, поэтому, мы отдадим приоритет прикладному коду и сначала полностью подготовим курс для применения асинхронного программирования в продуктовой разработке, а потом будем добавлять необязательные темы из старого курса и много других полезных абстракций, широко распространенных в других языках программирования, но слабо известных в мире JavaScript.

PXL_20231227_190319918 MP

Содержание

Важные аспекты нового курса:

  • Концентрация на практическом применении (примеры кода из реальных проектов)
  • Актуальность и соответствие стандартам по состоянию на 2023-2024
  • Задачи и разбор их решений, семинары, ревью кода (курс это не только видео)
  • Рекомендации к выбору стиля и абстракций асинхронности под задачу
  • Внимание к корректной обработке ошибок во всех стилях асинхронности
  • Упор на надежность, поддерживаемость, тестируемость, снижение зацепления
  • Примеры и задачи по исправлению скрытых проблемных состояний и data races

Для того, чтобы писать прикладной код хватит первого столбика таблицы (а в оглавлении темы помечены 💯). Второй столбик полезен, как дополнительные знания, (углубленное изучение помечено как 🧑‍🎓). Для бекенда на ноде нужно освоить два первых столбика. Третий столбик содержит системные вещи (помечены ⚙️ в оглавлении), которые нужны для разработки инструментов, платформ и библиотек. Четвертый столбик (помечен 🧑‍🚀) это дополнительные абстракции, которые можно осваивать выборочно, они понадобятся не всем, но если вы работаете в проектах, где много функционального и/или реактивного программирования. Пятый столбик - вещи, которые морально устарели и могут рассматриваться как интересный антиквариат (помечены ⚠️).

Applied 💯Advanced 🧑‍🎓System ⚙️Elective 🧑‍🚀Legacy ⚠️
callbacksAsyncQueueThenablecompose callbacksDeferred
promisesAsyncPoolSemaphoreasync composefunction*/yield
async/awaitAsyncCollectorMutexObserverAsync.js
eventsChain of responsibilitySpin LockRxJSMetasync
streamsAsync GeneratorMessageChannelFuturemiddleware
signalsAsync IteratorBroadcastChannelcoroutines
locksthreadsActor Model
processesdo

Условные обозначения: ⭐ новые лекции, ✨ открытые старые лекции, 💯 обязательные, 🧑‍🎓 продвинутые, ⚙️ системные, 🧑‍🚀 по выбору, ⚠️ устаревшее, 🧩 необязательные темы, 💻 примеры кода, 🧑‍💻 задания

Обратите внимание

Что нужно знать и уметь на входе:

Чем это курс не является: это не чтение документации, не курс по библиотекам и фреймворкам, не повторение старого курса, не лайвкодинг и не мастеркласс, не стрим. Новый курс - это максимально сконцентрированная информация и практические задачи как для прикладного, так и для системного программирования со сравнением этих подходов.

Как попасть на курс

💳 Сейчас на курс можно записаться по годовой подписке на план «Async 2024» на Patreon - это полный курс. Матераиалы курса остаются и после завершения подписки (не нужно ее продлять все время, я не забираю доступ).
💳 Второй вариант: вместе с курсом по ноде по плану «Node + Async». Программа курса «Node.js 2024»: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2024.md и вопросы для собеседований, которые мы разберем для ноды: https://github.com/tshemsedinov/NodeJS-Interview-Questions

🎫 Регистрация: https://www.patreon.com/tshemsedinov

🎉 После того, как Вы взяли курс, в течении суток я добавляю вам права на репозиторий в Github, добавляю в календарь на созвоны через google-meet, и придут ссылки на все нужные ресурсы в почту. Может попасть в спам, проверьте.

👉 Новости курса будут в канале: https://t.me/asyncify
👉 Открытая группа курса: https://t.me/asynctalks
👉 Подписывайтесь на https://t.me/metarhia и https://www.youtube.com/@TimurShemsedinov чтобы следить за новостями