Skip to content

Latest commit

 

History

History
231 lines (210 loc) · 20.6 KB

File metadata and controls

231 lines (210 loc) · 20.6 KB

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

💻 Для JavaScript и TypeScript, бекенд и фронтенд
⏱️ 9 часов основных материалов и более 45 часов дополнительных
🌍 Два языка лекций: русский и украинский
🛠️ Практика на живых оупенсорс проектах и библиотеках, а не на синтетических задачах
👥 Семинары каждую неделю, постоянные ревью кода (курс это не только видео)
🔄 2 года обновления материалов: все, что выйдет в 2026 + обновления 2027
♾️ Все материалы остаются навсегда
📜 Курсу уже 15 лет, ежегодно обновляется
💼 Примеры кода из реальных проектов, концентрация на практическом применении
🌐 Онлайн-формат
🏃‍♂️‍➡️ Скорость обучения выбираете себе сами
📦 Исходный код всех примеров и практических заданий
👨‍🏫 Обратная связь от преподавателя на семинарах и ревью
❓ Возможность задавать вопросы в сообществе курса
✅ Актуальные материалы, соответствующие современным стандартам по состоянию на 2026
🎯 Подходит для разработчиков разных уровней: от джуна до архитектора, от прикладного до системного программирования

Этому курсу уже 15 лет, я обновляю его каждый год и за это время он стал самым крупным и полным сборником знаний про асинхронное программирование. Интернет полон устаревших материалов по JavaScript, даже то, как люди писали асинхронный код 5-7 лет назад уже имеет мало общего с современными практиками. В открытом виде есть все материалы, записанные до 2020 года: открытый курс сообщества Metarhia по асинхронному программированию. Старый курс стал слишком громоздким, но его материалы тоже включены сюда, как дополнительные и исторические, потому что поддержку легаси никто не отменял.

🗓️ Материалы разделены на самое актуальное (что можно освоить за 1 месяц, если тратить по 2-3 часа в неделю) и огромную библиотеку всевозможных асинхронных абстракций и подходов, какие только есть в JavaScript для выборочного освоения

🎫 До 7 января 2026 (включительно) можно купить за $200 на Patreon
🎫 До 14 января 2026 (включительно) за $250
🎫 Далее, в течение всего 2026 года: $300
🎫 Можно купить через Paypal и Payoneer: [email protected]

PXL_20231227_190319918 MP

👉 Обзор контрактов и абстракций
👉 Огляд українською асинхронного програмування
👉 Обзор параллельного программирования

Еще нужно упомянуть, что в системном и прикладном коде асинхронное программирование должно выглядеть принципиально по-разному. Полностью скрыть от продуктового разработчика сложность асинхронного кода за абстракциями не получится, потому что он в любом случае будет работать с таймерами, событиями, стримами, fetch и другими асинхронными API, но его можно писать в десятки раз проще, чем асинхронный код в системном слое. Что касается системного слоя, то нужно вводить в обиход теорию очередей (системы массового обслуживания), модель акторов, часть абстракций из параллельного программирования (семафоры, рандеву, атомарные операции).

Краткое содержание

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

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 Future Metasync
streams Async Generator MessageChannel coroutines middleware
signals GoF pattern Iterator BroadcastChannel Actor Model RxJS
locks Actor pattern threads do
iterators Disposable processes

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

🎫 До 7 января 2026 (включительно) можно купить за $200 на Patreon
🎫 До 14 января 2026 (включительно) за $250
🎫 Далее, в течение всего 2026 года: $300
🎫 Можно купить через Paypal и Payoneer: [email protected]

Содержание

  • 💯 Контракты асинхронности на базе callback
    • ⭐ Контракты Callback и Callback-last-error-first
    • 💻 Примеры кода
    • 🧑‍💻 Задания по колбекам и созвон с разбором заданий
    • 🕰️ Функции высшего порядка, колбеки, события на JavaScript
    • 🕰️ Асинхронное программирование на callback`ах в JavaScript
    • 💡 V8: оптимизируем возврат из функции в JavaScript через return, resolve, callback — Деми Мурыч
  • 💯 Минимально необходимое понимание рантайма: event loop, I/O, таймеры
    • ⭐ Фазы Event-loop в V8 и Node.js
    • 🗃️ Стрим с разбором Event loop и асинхронности
    • 💻 Примеры кода
    • 🧑‍💻 Задания по таймерам
    • ✨ Event loop, асинхронность, таймеры, колбеки, промисы, async/await
    • 💡 Асинхронное программирование в JavaScript, Node.js: callback, promise, thenable, async/await
  • 🧑‍🎓 Паттерны Actor, Reactor, Proactor
    • ⭐ Actor + Actor Compose (композиция актора и состояния)
    • ⭐ Паттерн Reactor (реактор): как устроен Event Loop в Node.js
    • ⭐ Паттерн Proactor
    • 💡 Семинар Паттерны Actor, Reactor, Proactor для JavaScript и TypeScript
  • 💯 Контракты на базе событий
    • ⭐ События: EventTarget, EventEmitter
    • ⭐ GoF Pattern Observer
    • 💻 Примеры кода по событиям
    • 🧑‍💻 Задания по событиям
    • ✨ EventEmitter из старой лекции
    • 💻 Примеры кода из старой лекции по EventEmitter
    • 💡 Code review: Observable, EventEmitter, EventTarget
  • 💯 Абстракция потоков Stream
    • ⭐ Стримы Readable, Writable, Transform, открытый конструктор, буферизация, backpressure
    • ⭐ Web Streams — браузерное API для потоков событий
    • 💻 Примеры кода
    • ✨ Паттерн открытый конструктор (Revealing Constructor)
    • 💻 Примеры кода
    • ✨ Потоки (Streams) в Node.js
    • ✨ HTTP сервер в Node.js, req, res, сокеты и потоки (streams)
  • ⚙️ Контракт Thenable
    • ⭐ Контракт Thenable
    • ✨ Thenable из старой лекции
    • ✨ Thenable и легковесный await
    • 💻 Примеры кода
    • 🧑‍💻 Задания по Thenable и созвон с разбором заданий
  • 💯 Контракт Promise
    • ⭐ Promise: then/catch/finally и методы класса all, allSettled, race, any
    • ✨ Асинхронность на промисах из старой лекции
    • 💻 Примеры кода
    • 🧑‍💻 Задания по Promise и созвон с разбором заданий
  • 💯 Контракт асинхронных функций async/await
    • ⭐ Асинхронные функции
    • ✨ Асинхронные функции из старой лекции
    • 💻 Примеры кода
    • 🧑‍💻 Задания по async/await
  • 💯 Контракт сигналов Signals
    • ⭐ Сигналы: signal, computed, effect
    • 💻 Примеры кода
    • 🧑‍💻 Задания по сигналам
  • 💯 Обработка ошибок, их выявление и решение проблем со стектрейсом
    • ⭐ Обработка ошибок, логирование и агрегирование
    • ⭐ Семинар: Errors, exceptions, operational, soft, hard, recovery, logging
    • 💡 Реализация Graceful shutdown в Node.js, unhandled exceptions, async stack trace
    • ✨ Обработка ошибок из старой лекции
    • 💻 Примеры кода
    • 🧑‍💻 Задания по обработке ошибок
  • 🧑‍🎓 Асинхронная очередь AsyncQueue
    • 💡 Семинар: Асинхронная очередь — AsyncQueue, ConcurrentQueue
    • 💡 Node.js Queue optimized for JavaScript V8: Circular Buffer, Unrolled List, Unrolled Queue
    • ✨ Конкурентная асинхронная очередь из старой лекции
    • 💻 Примеры кода
  • 🧑‍🎓 Асинхронный пул AsyncPool
    • ⭐ Паттерн Factory Method
    • ⭐ Паттерны: Object Pool, Factory
    • ⭐ Асинхронный Pool
    • 💡 Семинар: Creator, Factory, Factory Method, Object Pool
    • ✨ Асинхронный пул для worker thread pool в Node.js
    • ✨ Фабрики и пулы объектов в JavaScript, factorify, poolify
    • 💻 Примеры кода
  • 🧑‍🎓 Асинхронная коллекция Collector
    • ⭐ Асинхронные коллекции (собираем значения до готовности)
    • ✨ Асинхронные коллекторы данных
    • 💻 Примеры кода
  • 🧑‍🎓 Паттерн "цепочка ответственности"
    • ⭐ Pattern: Chain of responsibility
    • 💻 Примеры кода
  • 🧑‍🎓 Конвертеры контрактов asyncify, callbackify, стыковка кода в разных стилях
    • ⭐ GoF Patterns: Adapter
    • ⭐ Асинхронные адаптеры
    • 💡 Семинар по адаптерам для Node.js и асинхронного программирования
    • 💡 Node.js ревью кода promisify — Тимур Шемсединов и Деми Мурыч
    • ✨ Асинхронные адаптеры из старой лекции
    • 💻 Примеры кода
  • 🧑‍🎓 Предотвращение состояния гонки по данным и управлению в асинхронном коде
  • 🧑‍🎓 Отмена асинхронных операций
    • ⭐ AbortController, AbortSignal
    • 💻 Примеры кода
  • 🧑‍🎓 Async Generator и Async Iterator
    • ⭐ Generator, iterator, iterable
    • ⭐ Async generator, Async iterator, Async iterable
    • ✨ Генераторы и асинхронные генераторы из старой лекции
    • ✨ Итераторы и асинхронные итераторы из старой лекции
    • 💻 Примеры кода
  • ⚙️ Абстракции портированные из параллельного программирования в асинхронное
    • ✨ Семафоры и мьютексы в JavaScript и Node.js
    • 💻 Асинхронные абстракции: Semaphore, Mutex
    • 💻 Блокировки WebLocks API
    • 💻 Блокировки Lock, Spin Lock
  • ⚙️ Абстракции параллельного программирования: процессы и потоки
    • ⭐ Многопоточность в Node.js
    • ⭐ Web Locks API in Node.js and browser
    • ⭐ Потоки и процессы в JavaScript, асинхронное и параллельное программирование на Node.js и в браузере
    • ⭐ Потоки та процеси українською для Web та Node.js, Atomics/CAS, шарена пам'ять, блокування
    • ✨ Межпроцессовое взаимодействие в Node.js
    • ⭐ Межпроцессовое и межпотоковое взаимодействие, MessageChannel, BroadcastChannel
    • ⭐ Корутины coroutines
  • 🧑‍🚀 Асинхронная композиция compose callbacks & async compose
    • ⭐ Асинхронная композиция: compose, pipe — функциональное программирование
    • ✨ Асинхронная композиция функций
    • 💻 Примеры кода
  • 🧑‍🚀 Асинхронность на потоках событий RxJS
    • ✨ Асинхронность на RxJS из старой лекции
    • 💻 Примеры кода
  • 🧑‍🚀 Модель акторов actor model
    • ✨ Модель акторов
    • 💻 Примеры кода
  • 🧑‍🚀 Функциональное асинхронное программирование, контракт Future
    • ⭐ FP Async Pattern — Future
    • ✨ Асинхронность на фьючерах без состояния
    • 💻 Примеры кода
  • 🕰️ Асинхронность на синхронных генераторах function*/yield
  • 🕰️ Мидлвары middleware как антипаттерн
    • ✨ Node.js Middleware – никогда больше!
    • 💻 Примеры кода
  • 🕰️ Контракты семейства Deferred
    • ✨ Deferred: Асинхронность на деферах с состоянием
    • 💻 Примеры кода
  • 🕰️ Async.js
    • ✨ Легаси код на библиотеке Async.js
    • 💻 Примеры кода
  • 🕰️ Коллекция асинхронных абстракций Metasync
  • ⚙️ Трекинг асинхронных контекстов
    • ⭐ AsyncLocalStorage, AsyncResource
    • 💻 Примеры использования AsyncLocalStorage и AsyncResource
  • ⭐ Принципы и паттерны с адаптацией для JavaScript, TypeScript, Node.js и асинхронного программирования
    • 💡 Принципы SOLID
    • 💡 Паттерны GRASP
    • ✨ Контрактное программирование

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

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

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

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

🎫 До 7 января 2026 (включительно) можно купить за $200 на Patreon
🎫 До 14 января 2026 (включительно) за $250
🎫 Далее, в течение всего 2026 года: $300
🎫 Можно купить через Paypal и Payoneer: [email protected]

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