Pull to refresh
29
0
Алексей @ksurent

User

Send message
Последний пример сломан же, не? Скорее всего имелось в виду что–то типа:
*{$symbol} = sub {
    if(is_auth()) {
        goto &$referent;
    }
    else {
        require Carp;
        Carp::croak "nope";
    }
};
А расскажите поподробней чем был обусловлен выбор MongoDB? Я не знаю как устроена адресная книга в Яндекс.Почте, но по сути–то она ложится в реляционную модель, не?
Не совсем. Или совсем нет. Mouse (как и Moose) — это уже готовые реализации объектных систем, в то время как mop — фреймворк для построения подобных систем. Если уж и было брать что–то из готового, то Class::MOP, но в начале статьи объясняется, почему этого делать не стали.
Речь не о том, чтобы просто разрешить разным системам «разговаривать» друг с другом через кучу костылей, а речь о том, чтобы задать стандарт (своего рода интерфейс) и базу для их написания.
Представим, что в версии перла 5.55 mop включили в стандартную библиотеку. Это будет означать, что в этот момент можно будет выкинуть Class::MOP и подобные модули, и переписать Moose, Mouse, и вообще все остальные Mo* модули (и не только) на основе mop. Это должно значительно упростить взаимодействие кода, построенного с помощью разных объектных систем.
Кто заинтересовался виртуальной машиной, гуглите человека и просите у него слайды с последнего FOSDEM–a.
Типичный пример: для сравнения двух подстрок на естественных яызках обычно обе подстроки приводят к одному регистру.

В стандарте юникода для этого есть операция case folding, ей и надо пользоваться.
научили выявлять из всего набора фраз действительно устойчивые словосочетания

Какая–то хитрая метрика для нахождения коллокаций?
Я бы пошел дальше и сказал бы, что в перле конструктор как концепция отсутствует. Вместо конструктора есть устное соглашение, мол давайте будем делать везде метод new (кстати говоря, далеко не все этому соглашению следуют).
bless может вызываться из любого метода, но самое главное, что он может и не вызываться вовсе. Можно создать класс без конструктора. Однако, все равно можно будет создать объект такого класса.

Да что я вам рассказываю? worldmind, вы же пишете на перле. Неужели вам такие вещи неочевидны?

ЗЫ: я, если что, Perl люблю и зарабатываю им на жизнь. Просто еще я знаю, что в перле много чего «не как у людей». Это надо принять и начать получать от этого удовольствие.
Нет, я так не говорю. Где я вообще что–то сравнил с другими языками?
Я говорю, что аргумент, который всегда приводится в спорах, презентациях и т.п., на самом деле… скажем так, производит впечатление ровно до того момента, пока не начнется плотная работа с сипаном.
Второе название книги — Perl Broken Practices ;)
Качество модулей в CPAN лучше не становится

Абсолютная правда. Все перловики любят похвастаться, что на сипане есть 20к дистрибутивов. А вот что многие из них являются устаревшим и нерабочим говном, это они тактично умалчивают.
Есть относительно небольшая кучка кучка авторов и их модулей, которые делают реально полезные вещи, и делают их правильно. На самом деле, именно вот эта небольшая часть и составляет основную мощь сипана.
На YAPC::Europe был блиц–доклад по теме — «brackets versus comma by Damien Krotkine». Просите слайды у автора.
Ок, погорячился в выборе слов. Извиняюсь.
Просто подпись «статья написана в рамках конкурса» и копипасченый код (пускай частично) — режут глаз.
Кстати говоря, если немного потюнинговать алгоритм, то можно добиться лучшего результата:
без стоп–слов:
[INFO]	Accuracy: 0.829000

с стоп–словами:
[INFO]	Accuracy: 0.827000
Код один в один содран из стэнфордского курса NLP. Хоть бы опечатки в комментариях оригинала поправили:
def crossValidationSplits(self, trainDir):
    """Returns a lsit of TrainSplits corresponding to the cross validation splits."""
</code>
Кстати, я не пытаюсь оправдать использование Moose там, где оно не нужно. Просто говорить, что он превращает Perl во что–то другое — неправильно. Из–за этого люди потом его «боятся».
Если вам надо всего–то генератор аксессоров и конструкторов, то да, есть методы попроще.
Стал бы я писать, если бы не проходил. Единственное, что реально достает — «джава–стайл» стектрейсы на два экрана. Остальное вполне терпимо, потому что отладчиком надо проходить не по Moose, а по своему приложению. Moose пусть отлаживают его разработчики.
Точно так же.
Выше писали, что Moose превращает Perl в другой язык. Я считаю это неправильным и сбивающим с толку. Язык старый, базовые принципы — старые. Moose выдает самые обычные блесснутые хеши в виде объектов, просто у них есть несколько «магических» методов.
Никакого «огромного» оверхеда там нет. Если, конечно, писать грамотно.
Не надо абузить проверки типов и модификаторы методов, делайте все классы неизменяемыми (immutable), и будет вам счастье.
1
23 ...

Information

Rating
Does not participate
Date of birth
Registered
Activity