Economics 101
Take a look at this graph of alternate browser adoption:
Firefox adoption dropped 20% in a year and a half on that chart. What does that tell you about Firefox? Nothing. That's the problem.
Now take a look at this graph from Indeed.com:
What does that tell you about Perl? Nothing. And that's a problem. Though the "Perl is dead/dying" meme seems to be dying (ha!), it still crops up and I heard it again the other day (and they posted that graph as proof). People would laugh themselves silly if you used the first graph to "prove" that Firefox is dying, but they nod sagely when the second graph is presented as "proof" that Perl is dying.
Here's what I wrote in response to someone posting that second graph (they also included a link to TIOBE):
TIOBE isn't taken very seriously. However, the Indeed.com link is great and has a good lesson in basic economics. It works like this:
If a product is very successful, very profitable and has a relatively low barrier to entry, competitors will arise (for example, look at the bewildering array of diet sodas on the market). So when Diet Pepsi does well and Diet Coke is successfully released, Diet Pepsi's market share will fall due to competition. And then when somebody writes an article on their blog about how "Diet Pepsi is dying" and others desperate to look like they're "in the know" will repeat this and soon, everybody will know that there's no future for Diet Pepsi. However, anyone with even a passing knowledge of economics would look at that and see it as a sign of a healthy market, not that Diet Pepsi is dying and that's exactly the behavior we see in the dynamic language space.
Meanwhile, the Diet Pepsi drinkers will sigh and wish everybody else had either taken an Econ 101 class or learned how to apply these lessons to the real world.
Personally, I see no sign that Perl is dying and I still see plenty of new companies adopting it (there's a hot new startup in London right now which is using a Perl stack, but I can't name them). However, Perl is facing stiff competition and it's improving as a result. This is a great thing. If Perl wasn't improving, then you could say it's dying. That being said, there's some opposition from some Perl programmers to Perl's improving (sometimes I want to cry when I read P5P) and they'll gladly strangle the baby rather than let it grow up. If they win, Perl's dead.
Once again I really wish more people would take classes in economics or, better still, applied economics. You can talk about economic theory all you want but if you can't recognize it in action in the real world, it's useless. Any economist worthy of the name who understood technology would have looked at Perl's fantastic success and predict that it could face a massive drop in market share due to competition for its space. At the time, there wasn't a huge amount of competition in dynamic languages and as an immature market, it was crying out for a correction.
For non-dynamic languages such as Java and C++, the market has stabilized more. I still expect to see market shifts. They aren't going to be as dramatic, but they're happening.
One side note: don't disregard TIOBE entirely. Economics isn't just about the efficient allocation of scarce resources; it's also about perception. Just ask anyone in advertising what makes Coke better than that no-name soda sitting on the lower shelf in the super market. If perceptions aren't managed, strange things can happen. That being said, I am tremendously impressed with how the Perl community has rallied together to manage some of the issues that have cropped up with the perception of Perl the past few years. So long as we don't rest on our laurels and say "job well done", things are looking pretty good.
What opposition is this? Is there consensus around the definition of "improving"? Maybe we can address some concerns so we can move on together.
Nice explanation of a complex concept, thank you. :)
Also, i have to say that the indeed graph annoys me because of the arbitrary restrcictions. I can understand cutting out sysadmin jobs because they usually just spam languages for the hell of it. However cutting out scripts and cgi makes no sense to me. These are often legit parts of current jobs.
Actually, to make it more clear:
http://jobs.perl.org/job/16520
That is one of the jobs cut out of the graph by removing "cgi". I think it doesn't need to be demonstrated more clearly how bogus and arbitrary the graph is.
Mithaldu, I was also curious why the person omitted CGI and scripts. (And what's ETL? Extract, Transform, Load? If so, that should be there, also). Adding those back changes the graph.
Maybe because he thinks they're not modern anymore, or because the other languages can't compete as well on those grounds.
It looks to be similar to the admin thing. If you look at the jobs that limiting to ETL turns out: http://www.indeed.com/q-Perl-etl-jobs.html
They all seem to want other things first, and only mention perl in a little side note:
http://careers.unitedhealthgroup.com/careers/data/jobs/consulting-platform/510178-etl-consultant-mn-il.aspx
And to compare and contrast, here is an article in Infoworld
The argument about Firefox is rather silly. The premise is wrong; Firefox is dying. It lost its mojo to Chrome anyway you want to frame it. It was ousted by a better technology that is more stable and feature-full. Can it reinvent itself on the mobile platform? That remains a possibility but the Desktop market is in many ways edged out by Chrome and it is going to take drastic measures by Mozilla to win that market back: the same could be said for Perl.
Softdrinks? Really! The reason for Perl's demise isn't petty "taste" or transient winds. This is a trend; and, you arguing that it's cyclical or that Perl programmers should expect a reversal in this trend is an indicator, to me anyway, of abject delusion.
I'm a CPAN developer (pause: ECARROLL). Moose is great, if it wasn't for Moose I'd have entirely stopped using Perl. The big problem with Perl is more the community than the software. The pressure is constantly on backwards compatibility: that makes corporations and foundations happy, but it doesn't make the platform attractive to new generations. Look at the Unicode "preamble" in the New Perl Unicode Cookbook. The community needs to start talking about how they want to /do/ Unicode (and other new features like mro) then they need to set sensible defaults and roll out and market a new version. You're not going to get people excited about the software if you're constantly making a statement no more ambitious then "the desired effect is still possible if..." That's mighty lackluster this day and age.
Let's start a serious discussion about revamping docs, acknowledging that new programmers don't like procedural-legacy interfaces with supremely awkward declarations, making Moose and namespace::autoclean a default for all Perl modules, rewriting Unicode defaults, utilizing mro, enabling autodie, yanking indirect object invocation. Let's start imagining a Perl5 and optimizing for anything other than backwards compatibility.
Maybe it's time Perl got some new fancy datatypes? I sure like Data.Set in Haskell.
I'm not speaking of implementation, I'm speaking of an attitude that will walk the language into the grave. Perl can do it all, but there is a reason why increasingly people are opting for it to stay away.