<div dir="ltr">Что касается поддержки mop здесь все написано - <a href="https://metacpan.org/pod/Moo#MOO-AND-MOOSE" target="_blank">https://metacpan.org/pod/Moo#MOO-AND-MOOSE</a><div>Мне кажется в этом преимущество, когда есть выбор обойтись простыми средствами или подключить расширенный функционал.<br>

<div class="gmail_extra"><br>> А что помешает запретить?<br><div class="gmail_quote">Вот такая конструкция $obj->{something} = anything.</div><div class="gmail_quote"><br></div><div class="gmail_quote">> <font><span style="background-color:rgba(255,255,255,0)">Вкратце: везде, где нужно в рантайме оперировать классами - изменять</span></font></div>
<font><span style="background-color:rgba(255,255,255,0)">методы, модификаторы методов, присваивать роли, получать информацию<br>обо всем этом и т.д.</span></font></div><div class="gmail_extra"><font><span style><br></span></font></div>
<div class="gmail_extra"><font><span style>В этом суть meta object protocol, вот на практике кто этим пользуется и в какого рода приложениях, в этом мой вопрос. Если это только разработчикам фреймворков надо, или еще каких-то нишевых вещах, то спрашивается зачем это в общей практике нужно? Поэтому, считаю, в Moo (Mo, Mouse) есть скорее все что нужно, нежели "нет вообще ничерта".<br>
</span></font><div class="gmail_quote"><br></div><div class="gmail_quote">> Мы у себя в проекте вполне успешно используем типы, предоставляемые</div>Moose, созданные на их основе, да и просто вручную.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">Было бы хорошо, если бы поделились успешным опытом. В чем профит?</div><div class="gmail_extra"><div class="gmail_quote"><br></div><div class="gmail_quote">19 марта 2014 г., 2:30 пользователь Ilya Chesnokov <span dir="ltr"><<a href="javascript:_e(%7B%7D,'cvml','chesnokov.ilya@gmail.com');" target="_blank">chesnokov.ilya@gmail.com</a>></span> написал:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">18 марта 2014 г., 23:28 пользователь Андрей П. Ковбович<br>


<<a href="javascript:_e(%7B%7D,'cvml','akovbovich@gmail.com');" target="_blank">akovbovich@gmail.com</a>> написал:<br>
<div>> Глянул что нового в Moo появилось: оказывается MOP там тоже есть, правда<br>
> средствами class::mop.<br>
<br>
</div>=== README:<br>
    There is no meta object. If you need this level of complexity you wanted<br>
    Moose - Moo succeeds at being small because it explicitly does not<br>
    provide a metaprotocol. However, if you load Moose, then<br>
      Class::MOP::class_of($moo_class_or_role)<br>
    will return an appropriate metaclass pre-populated by Moo.<br>
===<br>
<br>
Т.е. Class::MOP используется только если Moose уже загружен (это и по<br>
коду видно - вызовы только вида if ($INC{"Moose.pm"} &&<br>
Class::MOP::class_of(...))).<br>
<div><br>
> Аксессоры генерятся через class::xsaccessor, если он<br>
> доступен.<br>
<br>
</div>Круто :)<br>
<div><br>
> Ну а библиотека типов (MooseX::Types?)<br>
<br>
</div>А также Moose::Util::TypeConstraints.<br>
<div><br>
> это круто конечно, только<br>
> мы же про Перл говорим. А в контексте перла никакая библиотека типов не<br>
> запретит заткнуть круглое квадратным.<br>
<br>
</div>А что помешает запретить?<br>
Мы у себя в проекте вполне успешно используем типы, предоставляемые<br>
Moose, созданные на их основе, да и просто вручную. Туда, где тип<br>
данных круглый, никакое квадратное не влезет.<br>
<div><br>
> Поэтому считаю Moo крайне практичным<br>
> инструментом.<br>
<br>
</div>Никто и не спорит. Весьма практичный в своей области.<br>
<div><br>
> От себя еще пожелание к докладчикам: может про MOP кто-нибудь расскажет, где<br>
> на практике получить от него выигрышь?<br>
<br>
</div>Вкратце: везде, где нужно в рантайме оперировать классами - изменять<br>
методы, модификаторы методов, присваивать роли, получать информацию<br>
обо всем этом и т.д.<br>
Простейший пример:<br>
<a href="https://github.com/ichesnokov/Yandex-Direct-API-JSON/blob/master/lib/Yandex/Direct/API/JSON.pm#L193" target="_blank">https://github.com/ichesnokov/Yandex-Direct-API-JSON/blob/master/lib/Yandex/Direct/API/JSON.pm#L193</a><br>


<br>
В качестве более интересного примера можно посмотреть код Test::Class::Moose.<br>
<br>
В целом это действительно хорошая тема для доклада.<br>
<div><div><br>
><br>
> вторник, 18 марта 2014 г. пользователь Ilya Chesnokov написал:<br>
>><br>
>> 18 марта 2014 г., 21:24 пользователь Андрей П. Ковбович<br>
>><br>
>> <<a href="javascript:_e(%7B%7D,'cvml','akovbovich@gmail.com');" target="_blank">akovbovich@gmail.com</a>> написал:<br>
>> > Почему не use Moo? Если нет зависимостей от moose, то вполне себе<br>
>> > отличная<br>
>> > альтернатива для ОО.<br>
>><br>
>> Потому что в Moo нет вообще ни черта - ни библиотеки типов, ни MOP :)<br>
>> Только аксессоры + роли - впрочем, поэтому он и достаточно легковесный.<br>
>> Плюс его аксессоры медленнее, чем XS-ный Mouse (не смог найти запись<br>
>> того доклада с YAPC, про который говорил выше - но насколько помню,<br>
>> XS-решения, и в частности Mouse, рвали всех на бенчмарках).<br>
>><br>
>> К счастью, есть еще такой проект как mop, который, возможно, окажется<br>
>> в ядре через пару лет: <a href="https://github.com/stevan/p5-mop-redux" target="_blank">https://github.com/stevan/p5-mop-redux</a>.<br>
>> Тогда все, начинающееся на Mo* можно будет переписывать )<br>
>><br>
>> Кстати, довольно забавно - появился Moose для Ruby:<br>
>> <a href="https://github.com/peczenyj/MooseX" target="_blank">https://github.com/peczenyj/MooseX</a><br>
>> --<br>
>> Best regards,<br>
>> Ilya Chesnokov<br>
>> --<br>
>> Moscow.pm mailing list<br>
>> <a href="javascript:_e(%7B%7D,'cvml','moscow-pm@pm.org');" target="_blank">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
><br>
><br>
> --<br>
> Moscow.pm mailing list<br>
> <a href="javascript:_e(%7B%7D,'cvml','moscow-pm@pm.org');" target="_blank">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
><br>
<br>
<br>
<br>
--<br>
Best regards,<br>
Ilya Chesnokov<br>
--<br>
Moscow.pm mailing list<br>
<a href="javascript:_e(%7B%7D,'cvml','moscow-pm@pm.org');" target="_blank">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
</div></div></blockquote></div><br></div></div></div>