|
1 | 1 | # Асинхронное программирование 2024
|
2 | 2 |
|
| 3 | +💡 Объем материала: 10 часов лекций + необязательные материалы, созвоны для ревью кода и ответов на вопросы: 2 часа в неделю в течении года, репозитории с примерами кода, задачи по всем темам. |
| 4 | + |
3 | 5 | Те способы писать асинхронный код, которые мы использовали 10-15 лет назад безвозвратно уходят в прошлое и могут быть интересны лишь для поддержки легаси упражнения в глубоком понимании асинхронного программирования. Даже способы 5-7 летней давности уже имеют мало общего с современными практиками, но интернет полон устаревшей информации, даже [открытый курс сообщества Metarhia](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md) на сегодняшний момент стал слишком громоздким и излишним. Еще нужно упомянуть о том, что в системном и прикладном коде асинхронное программирование должно выглядеть принципиально по-разному. Полностью скрыть от продуктового разработчика сложность асинхронного кода за абстракциями не удастся, потому, что он в любом случае будет работать с таймерами, событиями, стримами, fetch и другими асинхронными API, но его можно писать в десятки раз проще, чем асинхронный код с системном слое. Что касается системного слоя, то нужно вводить в обиход теорию очередей (системы массового обслуживания), модель акторов, часть абстракций из параллельного программирования (семафоры, рандеву, атомарные операции). Конечно, содержать все это в одном курсе сложновато, поэтому, мы отдадим приоритет прикладному коду и сначала полностью подготовим курс для применения асинхронного программирования в продуктовой разработке, а потом будем добавлять необязательные темы их старого курса и много других полезных абстракций, широко распространенных в других языках программирования, но слабо известных в мире JavaScript.
|
4 | 6 |
|
5 | 7 | ## Содержание
|
|
16 | 18 |
|
17 | 19 | Темы нового курса:
|
18 | 20 |
|
19 |
| -- Контракты асинхронности на базе callback: Callback-last-error-first |
20 |
| -- Минимально необходимое понимание рантайма: event loop, I/O, таймеры |
21 |
| -- Контракты асинхронности на базе событий: EventEmitter, Streams |
22 |
| -- Потоки событий, паттерн Observer/Observable и RX.js |
23 |
| -- Контракты Promise/Thenable/then/catch/finally и синтаксис async/await |
24 |
| -- Параллельное и последовательное исполнение, all/any/race/allSettled |
25 |
| -- Конвертеры контрактов, стыковка кода в разных стилях |
26 |
| -- Предотвращение состояния гонки по данным и управлению в асинхронном коде |
27 |
| -- Отмена асинхронных операций: AbortController, AbortSignal |
28 |
| -- Обработка ошибок, их выявление и возможные проблемы со стектрейсом |
29 |
| -- Асинхронныек коллекции (собираем значения до готовности) |
30 |
| -- Асинхронная очередь и асинхронный пул |
31 |
| -- Асинхронные генератори и асинхронные итераторы |
32 |
| -- Обзор других контрактов: generators, signals, future, deferred |
| 21 | +Условные обозначения: ⭐ новые лекции, ✨ открытые лекции, 🧩 необязательные темы |
| 22 | + |
| 23 | +- ⭐ Контракты асинхронности на базе callback: Callback-last-error-first |
| 24 | +- ✨ Минимально необходимое понимание рантайма: event loop, I/O, таймеры |
| 25 | +- ⭐ Контракты асинхронности на базе событий: EventEmitter, Streams |
| 26 | +- ✨ Потоки событий, паттерн Observer/Observable и RX.js |
| 27 | +- ⭐ Контракты Promise/Thenable/then/catch/finally и синтаксис async/await |
| 28 | +- ⭐ Параллельное и последовательное исполнение, all/any/race/allSettled |
| 29 | +- ⭐ Конвертеры контрактов, стыковка кода в разных стилях |
| 30 | +- ⭐ Предотвращение состояния гонки по данным и управлению в асинхронном коде |
| 31 | +- ⭐ Отмена асинхронных операций: AbortController, AbortSignal |
| 32 | +- ⭐ Обработка ошибок, их выявление и возможные проблемы со стектрейсом |
| 33 | +- 🧩 Асинхронныек коллекции (собираем значения до готовности) |
| 34 | +- 🧩 Асинхронная очередь и асинхронный пул |
| 35 | +- 🧩 Асинхронные генератори и асинхронные итераторы |
| 36 | +- 🧩 Обзор других контрактов: generators, signals, future, deferred |
33 | 37 |
|
34 | 38 | ## Обратите внимание
|
35 | 39 |
|
36 | 40 | Что нужно знать и уметь на входе:
|
37 | 41 |
|
38 |
| -- [Синтаксис JavaScript, но можно без всяких триков](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals.md) |
39 |
| -- Уверенно владеть git, иметь github аккаунт |
40 |
| -- Желательно docker, иметь рабочую машину на linux или mac |
41 |
| -- Любая среда разработки, IDE или редактор |
| 42 | +- 🔗 [Синтаксис JavaScript без всяких триков](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals.md) |
| 43 | +- 💡 Уверенно владеть git, иметь github аккаунт |
| 44 | +- 💡 Любая среда разработки, IDE или редактор |
42 | 45 |
|
43 | 46 | Чем это курс не является: это не чтение документации, не курс по библиотекам и фреймворкам, не повторение старого курса, не лайвкодинг и не мастеркласс, не стрим. Новый курс - это максимально сконцентрированная информация и практические задачи как для прикладного, так и для системного программирования со сравнением этих подходов.
|
44 | 47 |
|
45 | 48 | ## Как попасть на курс
|
46 | 49 |
|
47 |
| -- Новости будут в канале: https://t.me/asyncify |
48 |
| -- Группа курса: https://t.me/asynctalks |
| 50 | +💳 Сейчас на курс можно записаться по плану «Professional» на 1 год за $102 (+ локальные налоги) на Patreon или аналог в гривнах. Помесячная подписка «Professional» не дает доступа. Матераиалы курса остается и после завершения подписки (не нужно ее продлять все время, я не забираю доступ). Как только план курса будет сформирован и курс стартует в начале 2024, его цена будет выше в 2 раза. |
| 51 | + |
| 52 | +👉 Подписаться: https://www.patreon.com/tshemsedinov |
| 53 | + |
| 54 | +🎉 После того, как Вы взяли курс, в течении суток я добавляю вам права на репозиторий в Github, добавляю в календарь на созвоны через google-meet, и придут ссылки на все нужные ресурсы в почту. Может попасть в спам, проверьте. |
| 55 | + |
| 56 | +👉 Новости курса будут в канале: https://t.me/asyncify |
| 57 | +👉 Открытая группа курса: https://t.me/asynctalks |
| 58 | +👉 Подписывайтесь на https://t.me/metarhia и https://www.youtube.com/@TimurShemsedinov чтобы следить за новостями |
0 commit comments