Skip to content

Commit 1619fdb

Browse files
authored
Update Async-2024.md
1 parent 9b88b17 commit 1619fdb

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

Courses/Async-2024.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
Те способы писать асинхронный код, которые мы использовали 10-15 лет назад безвозвратно уходят в прошлое и могут быть интересны лишь для поддержки легаси упражнения в глубоком понимании асинхронного программирования. Даже способы 5-7 летней давности уже имеют мало общего с современными практиками, но интернет полон устаревшей информации, даже [открытый курс сообщества Metarhia](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md) на сегодняшний момент стал слишком громоздким и излишним. Еще нужно упомянуть о том, что в системном и прикладном коде асинхронное программирование должно выглядеть принципиально по-разному. Полностью скрыть от продуктового разработчика сложность асинхронного кода за абстракциями не удастся, потому, что он в любом случае будет работать с таймерами, событиями, стримами, fetch и другими асинхронными API, но его можно писать в десятки раз проще, чем асинхронный код в системном слое. Что касается системного слоя, то нужно вводить в обиход теорию очередей (системы массового обслуживания), модель акторов, часть абстракций из параллельного программирования (семафоры, рандеву, атомарные операции). Конечно, содержать все это в одном курсе сложновато, поэтому, мы отдадим приоритет прикладному коду и сначала полностью подготовим курс для применения асинхронного программирования в продуктовой разработке, а потом будем добавлять необязательные темы из старого курса и много других полезных абстракций, широко распространенных в других языках программирования, но слабо известных в мире JavaScript.
66

7+
![PXL_20231227_190319918 MP](https://github.com/metatech-university/Async-2024/assets/4405297/2d0855a7-18d5-45c2-8fa9-d1e873ba1030)
8+
79
## Содержание
810

911
Важные аспекты нового курса:
@@ -16,7 +18,18 @@
1618
- Упор на надежность, поддерживаемость, тестируемость, снижение зацепления
1719
- Примеры и задачи по исправлению скрытых проблемных состояний и data races
1820

19-
Темы нового курса:
21+
Для того, чтобы писать прикладной код хватит первого столбика таблицы (а в оглавлении темы помечены 💯). Второй столбик полезен, как дополнительные знания, (углубленное изучение помечено как 🧑‍🎓). Для бекенда на ноде нужно освоить два первых столбика. Третий столбик содержит системные вещи (помечены ⚙️ в оглавлении), которые нужны для разработки инструментов, платформ и библиотек. Четвертый столбик (помечен 🧑‍🚀) это дополнительные абстракции, которые можно осваивать выборочно, они понадобятся не всем, но если вы работаете в проектах, где много функционального и/или реактивного программирования. Пятый столбик - вещи, которые морально устарели и могут рассматриваться как интересный антиквариат (помечены ⚠️).
22+
23+
| Applied 💯 | Advanced 🧑‍🎓 | System ⚙️ | Elective 🧑‍🚀 | Legacy ⚠️ |
24+
|:--------------|:--------------------------|:-------------------|:---------------------|:------------------|
25+
| `callbacks` | `AsyncQueue` | `Thenable` | `compose callbacks` | `Deferred` |
26+
| `promises` | `AsyncPool` | `Semaphore` | `async compose` | `function*/yield` |
27+
| `async/await` | `AsyncCollector` | `Mutex` | `Observer` | `Async.js` |
28+
| `events` | `Chain of responsibility` | `Spin Lock` | `RxJS` | `Metasync` |
29+
| `streams` | `Async Generator` | `MessageChannel` | `Future` | `middleware` |
30+
| `signals` | `Async Iterator` | `BroadcastChannel` | `coroutines` | |
31+
| `locks` | | `threads` | `Actor Model` | |
32+
| | | `processes` | `do` | |
2033

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

0 commit comments

Comments
 (0)