[Moscow.pm] HTTPD на короутинах
Alexandr Gomoliako
zzz на zzz.org.ua
Пт Май 25 15:57:58 PDT 2012
> А на счет коро, то мне никаким образом в голову не ложится, как
> 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