Skip to content

Latest commit

 

History

History
176 lines (157 loc) · 20.9 KB

Async-2024.md

File metadata and controls

176 lines (157 loc) · 20.9 KB

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

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

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

PXL_20231227_190319918 MP

Содержание

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

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

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

Applied 💯 Advanced 🧑‍🎓 System ⚙️ Elective 🧑‍🚀 Legacy ⚠️
callbacks AsyncQueue Thenable compose callbacks Deferred
promises AsyncPool Semaphore async compose function*/yield
async/await AsyncCollector Mutex Observer Async.js
events Chain of responsibility Spin Lock RxJS Metasync
streams Async Generator MessageChannel Future middleware
signals Async Iterator BroadcastChannel coroutines
locks threads Actor Model
processes do

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

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

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

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

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

💳 Сейчас на курс можно записаться по годовой подписке на план «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 чтобы следить за новостями