[Moscow.pm] Coro
Ruslan Zakirov
ruz на bestpractical.com
Пт Янв 20 14:58:22 PST 2012
2012/1/20 Андрей П. Ковбович <akovbovich на gmail.com>:
> Вполне аккуратно и читабельно, без вложенных блоков и анонимным
> функций (в явном виде).
>
> https://gist.github.com/1644790
> https://gist.github.com/1644771
Интересно, но это свойство языка и тут сложно конкурировать.
> Может и на перле можно создать такое синтаксическое расширение.
Может и можно.
Coro выглядит выглядит разумнее и более привычно.
Если подумать, то анонимные функции в событийном программировании
используются из-за отсутствия другого простого механизма сохранить
состояние интерпретатора и потом вернутся в это состояние
(continuations).
В болшинстве програм мы запрашиваем данные и можем реально сделать
что-то только после получения ответа. Вот и получается, что код
выглядит как лесенка из вложенных блоков. Что-то типа: отправим
запрос, по результату отправим еще запрос, по результату соберем
ответ, отправим ответ, далее вызовем колбек, который нам передали в
самом начале.
Мне кажется, что код будет более привычный и читабельный, если
упростить эту ситуацию. Что-то вроде:
sub x {
...
my $w = AE::io $fh, 0, continue;
chomp (my $input = <fh>);
warn "read: $input\n";
undef $w;
}
Я нахожу это более читабельным нежели:
sub x {
...
my $w = AE::io $fh, 0, sub {
chomp (my $input = <fh>);
warn "read: $input\n";
undef $w;
};
return;
}
Если учесть, что внутри колбека будет что-то сложнее чем warn.
Понятно, что это упрощение, но частое должно быть просто, а частное - возможно.
> 20 января 2012 г. 1:56 пользователь Ruslan Zakirov
> <ruz на bestpractical.com> написал:
>> Покажите. Я хочу посмотреть красивый код на любой событийной либе,
>> который будет иметь минимальное количество вложеных блоков, ананомных
>> функций и просто будет аккуратен и читабелен. Я хочу научится.
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
--
Best regards, Ruslan.
Подробная информация о списке рассылки Moscow-pm