|No such thing as a small change|
Comment onby gods
|on Feb 11, 2000 at 00:06 UTC||Need Help??|
Let me tell you why I see a lot of Perl hate everywhere I go.
First of all, Perl 5 really has been left behind in terms of modern language features (for example decorators).
You can refer to the article about the increasing age of people writing Perl in the YAPC study which was recently published. I'm not going to link it here, you can google for it.
As a result of increasing age, there are a lot of people writing Perl who are really left behind in terms of how you should write code in 2013. And yes, you get to see people writing globals all over, no modules, no tests, and all that sort of nasty stuff.
A different aspect is that Perl has a very community-driven approach to everything, which is good because there's a lot of effort which goes into CPAN modules and whatnot, yet there's no authority governing anything. It's like a complete mess. Debates like how should I do OO in Perl do not have an easy answer until you are ba**s-deep into the Perl community to find out about things like Mo, Moo, Moose. This is not good, for sure. The fact that OO is still something that's not part of Perl's CORE modules is really a problem, it's a big problem with a big B.
Moose needs to come with Perl(at least, at least getting a damn default OO inside Perl... at least this.. if other things aren't possible)
Even if you look at Moose, it's still a clunky mess really, you can see it has leafs and hairs growing out of it, it's just so obvious it's not a main feature of the language. Sure it works, but that's missing the point. That's a problem.
There are jobs out there which require Perl skills, but a lot of them will be about diving in legacy code. And, nobody wants rewrites, because they're "expensive".
Learning Perl is actually a very good idea, and keeping up to date on what's happening, and using it. But I would say Python and PHP and Ruby are all good choices too, even better choices from many points of view.
It's a strange time we're living now, as there are still big pieces of software around (even in the GNU toolchain) that are written in Perl, but the world is really moving away from it for the most part. Look at how many jobs require you to port some Perl code to a more modern language.
And the argument that you made about Perl coming with base systems in Linux distros.. uhm Python has been coming with base systems of my favorite distros lately so uhm, I don't think this supports Perl as being an awesome thing just because it comes with a base system. I mean, it seems to me that everyone wants to get rid of it, but they're just in a state where they now depend on it, so replacing it is hard.
And QA people should definitely know Perl, I mean yes, Perl is awesome for doing QA on all sorts of projects, but you can do it in Python too, and yeah, I'll say Python to me feels cleaner to maintain. Perl is pretty much like russian if you want to make an analogy to a spoken language(although the analogy is brittle and silly), it has a different alphabet, different structures, grammar, it's really different from regular stuff. So why, why would some people want to learn this language that's spoken just by people in Planet Perl. I mean, why don't you go to Russia and just try to hang around if you don't know russian, you can't talk to anyone, is there any point ? Not really. Maybe if you're forced to live there for some reason.
Going back to QA not knowing Perl, so what ? really.. it's just a bunch of tests, you can rewrite them in something else. It's not a big deal. After all, this is (hopefuly) software engineering, not "Perl engineering". There's no such thing as "Perl programmer", that's like.. saying "I know how to cook omlette and I wanna be a cook". You have to know how to cook some omlette, you have to make some pasta dishes, you have to know how to cook some steaks, some salads, some desert, it's complicated..
But if you look at the bigger picture I think this will always be the same. New languages will emerge fixing the problems the old languages had, and then they become more popular and so forth. It's called evolution I think, and it's unavoidable, it's natural, you can't oppose or stop it, just accept it. So if there's something you should tolerate, it's evolution.
Giving up is always an option. I've given up on Perl a long time ago, but I'm still writing it. Mostly as a form of self-irony. And from this point of view I'm a good comedian.
I've also seen in this thread that it's hard for companies to find good Perl people. Sure it's hard. Perl at this moment is like a historical monument(more so than other languages, that's for sure). There are fragments of legacy ways of doing various things spread all across the language. Obsolete, deprecated features. There's ton of legacy code out there. Perl isn't easy, it's a mess, it's mind-numbing, yet, against all odds it's being used by some people with high efficieny and great results. Using it is living in some sort of paradox each day. People hate, but people love it at the same time. So knowing Perl today, doesn't mean just.. knowing Perl.. it means a lot of other stuff. It's a hard language, and the jobs don't get paid well, and people hate you when they hear you "I write Perl".
Perl is one of those things you have to hate in order to love. It's mind-boggling and mind-numbing and (almost) everywhere I go and write Perl I feel like I'm a foreigner. That's my experience with it.