[Moscow.pm] HTTPD на короутинах

Akzhan Abdulin akzhan.abdulin на gmail.com
Сб Май 26 00:05:38 PDT 2012


Эм, где тут видно, что тут куда уходит?

Для полноты добавим

func1 $x, sub {
  func2 $y, sub {
    func3 $z, sub {
...

Вот тут уже начинается вложенность коллбэков,  а если ветвей выполнения
больше одной, то и полная каша.

Для решения этой проблемы как раз удобнее всего использовать фьючерсы или
сопрограммы.


26 мая 2012 г., 2:57 пользователь Alexandr Gomoliako <zzz на zzz.org.ua>написал:

> > А на счет коро, то мне никаким образом в голову не ложится, как
> > implicit continuation у корутин может быть проще, чем explicit
>
> Приведу примеры, вдруг кто-то поймет.
>
> Корутины, файберы, etc.:
>
>    my $x = 1;
>    my $y = func1($x);
>    func2($y);
>
> Чем отличается func1 от func2? Абсолютно не видно, при этом одна из
> них делает yield, а другая нет. Это очень быстро приводит к
> неправильным предположениям о работе программы. И не видно даже, что
> тестировать. Это те самые последствия сложности кода, которые в итоге
> приведут к ошибкам.
>
> При этом тоже самое с обычным event loop'ом не даст вам сделать
> неправильных предположений, потому что continuation задается явно:
>
>    my $x = 1;
>    func1 $x, sub {
>        my $y = shift;
>        func2($y);
>    };
>
> Т.е. видно, только func1 уходит в event loop. Негде ошибиться. И для
> тестирования нужно просто убедиться, что возвращается в колбэк, а
> func2 уже должна быть покрыта другим тестом.
>
> Надеюсь понятно. Можно смело повторять, что корутины это бред и костыль.
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20120526/d1ded7aa/attachment-0001.html>


Подробная информация о списке рассылки Moscow-pm