А расскажите поподробней чем был обусловлен выбор MongoDB? Я не знаю как устроена адресная книга в Яндекс.Почте, но по сути–то она ложится в реляционную модель, не?
Не совсем. Или совсем нет. Mouse (как и Moose) — это уже готовые реализации объектных систем, в то время как mop — фреймворк для построения подобных систем. Если уж и было брать что–то из готового, то Class::MOP, но в начале статьи объясняется, почему этого делать не стали.
Речь не о том, чтобы просто разрешить разным системам «разговаривать» друг с другом через кучу костылей, а речь о том, чтобы задать стандарт (своего рода интерфейс) и базу для их написания.
Представим, что в версии перла 5.55 mop включили в стандартную библиотеку. Это будет означать, что в этот момент можно будет выкинуть Class::MOP и подобные модули, и переписать Moose, Mouse, и вообще все остальные Mo* модули (и не только) на основе mop. Это должно значительно упростить взаимодействие кода, построенного с помощью разных объектных систем.
Я бы пошел дальше и сказал бы, что в перле конструктор как концепция отсутствует. Вместо конструктора есть устное соглашение, мол давайте будем делать везде метод new (кстати говоря, далеко не все этому соглашению следуют).
bless может вызываться из любого метода, но самое главное, что он может и не вызываться вовсе. Можно создать класс без конструктора. Однако, все равно можно будет создать объект такого класса.
Да что я вам рассказываю? worldmind, вы же пишете на перле. Неужели вам такие вещи неочевидны?
ЗЫ: я, если что, Perl люблю и зарабатываю им на жизнь. Просто еще я знаю, что в перле много чего «не как у людей». Это надо принять и начать получать от этого удовольствие.
Нет, я так не говорю. Где я вообще что–то сравнил с другими языками?
Я говорю, что аргумент, который всегда приводится в спорах, презентациях и т.п., на самом деле… скажем так, производит впечатление ровно до того момента, пока не начнется плотная работа с сипаном.
Абсолютная правда. Все перловики любят похвастаться, что на сипане есть 20к дистрибутивов. А вот что многие из них являются устаревшим и нерабочим говном, это они тактично умалчивают.
Есть относительно небольшая кучка кучка авторов и их модулей, которые делают реально полезные вещи, и делают их правильно. На самом деле, именно вот эта небольшая часть и составляет основную мощь сипана.
Кстати, я не пытаюсь оправдать использование Moose там, где оно не нужно. Просто говорить, что он превращает Perl во что–то другое — неправильно. Из–за этого люди потом его «боятся».
Если вам надо всего–то генератор аксессоров и конструкторов, то да, есть методы попроще.
Стал бы я писать, если бы не проходил. Единственное, что реально достает — «джава–стайл» стектрейсы на два экрана. Остальное вполне терпимо, потому что отладчиком надо проходить не по Moose, а по своему приложению. Moose пусть отлаживают его разработчики.
Точно так же.
Выше писали, что Moose превращает Perl в другой язык. Я считаю это неправильным и сбивающим с толку. Язык старый, базовые принципы — старые. Moose выдает самые обычные блесснутые хеши в виде объектов, просто у них есть несколько «магических» методов.
Никакого «огромного» оверхеда там нет. Если, конечно, писать грамотно.
Не надо абузить проверки типов и модификаторы методов, делайте все классы неизменяемыми (immutable), и будет вам счастье.
Речь не о том, чтобы просто разрешить разным системам «разговаривать» друг с другом через кучу костылей, а речь о том, чтобы задать стандарт (своего рода интерфейс) и базу для их написания.
Представим, что в версии перла 5.55 mop включили в стандартную библиотеку. Это будет означать, что в этот момент можно будет выкинуть Class::MOP и подобные модули, и переписать Moose, Mouse, и вообще все остальные Mo* модули (и не только) на основе mop. Это должно значительно упростить взаимодействие кода, построенного с помощью разных объектных систем.
metacpan.org/module/Regexp::Debugger
Заранее пожалуйста.
В стандарте юникода для этого есть операция case folding, ей и надо пользоваться.
Какая–то хитрая метрика для нахождения коллокаций?
bless может вызываться из любого метода, но самое главное, что он может и не вызываться вовсе. Можно создать класс без конструктора. Однако, все равно можно будет создать объект такого класса.
Да что я вам рассказываю? worldmind, вы же пишете на перле. Неужели вам такие вещи неочевидны?
ЗЫ: я, если что, Perl люблю и зарабатываю им на жизнь. Просто еще я знаю, что в перле много чего «не как у людей». Это надо принять и начать получать от этого удовольствие.
Я говорю, что аргумент, который всегда приводится в спорах, презентациях и т.п., на самом деле… скажем так, производит впечатление ровно до того момента, пока не начнется плотная работа с сипаном.
Абсолютная правда. Все перловики любят похвастаться, что на сипане есть 20к дистрибутивов. А вот что многие из них являются устаревшим и нерабочим говном, это они тактично умалчивают.
Есть относительно небольшая кучка кучка авторов и их модулей, которые делают реально полезные вещи, и делают их правильно. На самом деле, именно вот эта небольшая часть и составляет основную мощь сипана.
Просто подпись «статья написана в рамках конкурса» и копипасченый код (пускай частично) — режут глаз.
без стоп–слов:
с стоп–словами:
Если вам надо всего–то генератор аксессоров и конструкторов, то да, есть методы попроще.
Выше писали, что Moose превращает Perl в другой язык. Я считаю это неправильным и сбивающим с толку. Язык старый, базовые принципы — старые. Moose выдает самые обычные блесснутые хеши в виде объектов, просто у них есть несколько «магических» методов.
Не надо абузить проверки типов и модификаторы методов, делайте все классы неизменяемыми (immutable), и будет вам счастье.