[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