Pull to refresh

Comments 7

Наверное, это круто (перешёл с плюсов на шарп много лет назад, и там уже был yield и пр.). Но оценить не могу. Язык становится все более похожим на язык пришельцев. Наверное, на нем хорошо писать матрицу или патчи для мироздания, но от обычного человека язык удаляется все дальше. Конечно, есть немало людей, для которых чем сложнее — тем лучше, код ради кода, и вот это всё… ладно) это уже холивар, пусть выскажутся те, кто пишет на плюсах.

просто тренд сейчас в асинхронщине, а в С++ её не было, решили быть в тренде. Сколько сейчас страниц в последнем стандарте С++, кажись около 2000. Саттер уже подумывает о новом C++ NewLang на замену С++, я его понимаю.

Откуда Вы почерпнули информацию, что "Саттер уже подумывает о новом C++ NewLang на замену C++"?

А C# стал похожим на язык для пришельцев от добавления async/await, или асинхронный код написанный с async/await проще и понятнее, чем писали до этого (сколько там парадигм было 3 или 4, я не помню)?

C# был спроектирован с учётом накопленного в C++ и Java опыта, и стартовал с новой страницы, без бремени совместимости, поэтому его синтаксис всё же полегче, мягко говоря. Одни лямбды чего стоят (в сравнении с плюсами). Жаль, что ниша C# — это скучный Enterprise, писать на нем — одно удовольствие (конечно, имхо, пробовал языков 5).

С тем что синтаксис C# пока что полегче я не спорю, и лямбды отличный тому пример. Но синтаксис корутины не усложняют.

         bool success = timer != nullptr;
         SetThreadpoolTimer(timer, (PFILETIME)&relative_count, 0, 0);
         return success;
    }

    void await_resume() {}

Не нравится мне что-то отсутствие обработки ошибок в этом коде. Если не удалось создать таймер — надо кинуть исключение, а не просто немедленно продолжить выполнение!


Как-то так должно быть:


    void await_resume() {
        if (!await_ready()) return;
        if (!timer) throw …;
    }

Ну или success надо делать полем, тогда будет проще:


    void await_resume() {
        if (!success) throw …;
    }

Еще лучше будет сохранить в поле GetLastError()


АПДЕЙТ: код был изменен на основе отзывов. Смотрите комментарии.

Что-то я не вижу этих комментариев на Хабре. Вы уверены что эту строчку надо было переводить?

Sign up to leave a comment.