(микро)сервисы внедрили в мэйнстрим такое заблуждение, что дескать async в них более удобны, чем sync. Служба A может принять запрос, но если служба B недоступна (и при этом необходима для выполнения запроса конечного пользователя -- см.мои материалы СильныхИдей про 9 видов зависимостей) , async никак не поможет.
Модно ещё реактивное программирование -- это когда мы хотим писать асинхронный код аки синхронный, не особо парясь. Такая нативная поддержка асинхронщины в языке, можно назвать её "point-free фп-стиль на стероидах", тут же и генераторы, и async, и корутины (в котлине)... но по большому счёту, это просто классическая семантика продолжений (callcc). Теоретически вы можете переписать вообще все свои функции в стиле cps даже в обычной программе ("Уничтожаем императивность CPS-трансформацией"), но, по понятным причинам, это сложновато для программистов мэйнстрима.
Потому что есть такая глобальная проблема, что много "асинхронных" разработчиков не понимают самой сути async. Rust например прививает ошибочный стиль.
Зачем вообще нужна асинхронщина?
Для хорошей масштабируемости параллелизма (concurrency), и всё.
(ну ок, она нужна ещё в js :)
Post #1183
1.18K


- 👍 45
- 🤔 11
- ✍ 5
- 💯 3
- ❤ 1