Непонятно с async-await в C# - 2
Досмотрел это видео (только английский вариант). Где-то с 20 минуты перестал следить за кодом, что он приводит, и пытаться проверять. Что понял по сути, да и он сам в конце резюмировал - иногда в больших компаниях, типа Амазона, требуется делать сложные вещи и писать десяток асинхронных вызовов один из другого. Ну типа каверзных задачек, где замутят какую-нибудь структуру наследования позаковыристей, а я потом в голове скомпилировать это должен. Ну и таким компаниям тесно со всякими асинками-авейтами - они лезут в потроха и находят там то, что им не нравится. Тогда они начинают на любой чих подменять контексты синхронизации, авейтить события через пачки монад (которые не настоящие монады, а типа самописный фреймворк) и тому подобный лапшекод, который обычному разработчику явно чужд.
Вот он там приводит примеры, что если я сделаю так, а это объявлю так, а потом вызову это через это вот так, то можно поиметь проблемы. По-моему, подобным образом поиметь проблемы можно всегда и везде, а на одних асинках свет клином не сошёлся. Как я уже выше писал - можно и в наследованиях запутаться (потому, кстати, некоторые предпочитают "включения" - так называемое "has a", а не "is a" - та же компонентная система в Unity). Да, асинки не идеальны, но, как он же сам сказал, асинхронного фреймворка идеального нигде нет, а в благословенной джаве только-только якобы задумались, как к проблеме подойти - вот уже три года думают.
По видео этого парня, с асинками нельзя работать нормально, не обвешав их лапшой из тасования контекста синхронизации, самописных монад или костылей для сохранения всех выброшенных исключений, чтобы они не терялись. Печально...
Отдельно умилила фраза про фейсбуковцев, которые переписали строки в С++ и сэкономили на этом 1% производительности. Это якобы сэкономило ресурс сотен (или тысяч? - не помню) машин. Это, наверное, целые миллионы долларов в год, а может и пара десятков. В годовых отчётах Фейсбука подобные числа, наверное, даже не упоминаются, а тут целая команда работала, строки в С++ "ускоряла". Ну явно же парням хотелось премии, и надо было срочно что-то улучшить и отчитаться. А улучшить на 1% всегда найдётся что. Ну нет у ребят другой работы, кроме как по проценту тут или там что-то улучшать. Хорошо устроились. В обычной фирме скажи, что ты тут за месяц-два улучшил что-то узкоспециализированное на 1% - выпнут с работы. )))
Вобщем, как я понял с асинками, есть несколько простых случаев, где их можно использовать легко и приятно, если не выходить за строгие рамки контекста и его ограничений. Шаг влево, шаг вправо, прыжок в потроха фреймворка - лучше расстреляться на месте.