|Perl: the Markov chain saw|
After watching all this Moose stuff come out for the last few years, I feel like I Finally Get It.
To those of you who made or have contributed to Moose and its extensions, "Thank You!"
I've been coding Perl for...(forever it seems?) and I have that "WOW - Programming is FUN!" thing as though I just started again. But in a good way.
Picking up Moose now seems to be good preparation for Perl6, as most of what we get in Moose will be there one day in Perl6. The meta model allows me to focus my attention on the attributes and interaction of the code, rather than getting up to my elbows in writing setter/getters, constructors and validating parameters.
Sure, Moose is different than I've been used to. It's a bit like learning a new language, except this *new* language is actually *better* because I can drag in all the things I've already learned and multiply them by the power of Moose. (Moosepower?)
Wary of Moose because I suspected that something so full of features would also be unusably slow and bloated, I tried my hand at rolling my own moose-kinda-thing. Trying every trick I could think of (overly-simplified meta-model, optionally-disabled type-checking, lazy methods, etc) I could only get meager performance gains compared to Moose. Defeated, I resumed my reading about Moose and will be re-releasing a couple of modules, updated to use Moose instead of (well, something else).
If Perl6 is the language of the future, Moose is its precognitive dream.