In my last blog post, I posted a graph showing that out of 135 companies at a recent Silicon MilkRoundabout recruitment event, only one said that they were using Perl. That has led to some interesting discussions that I’d like to address here.
I should make it clear that I wasn’t presenting my graph as evidence that Perl is dead. Of course you can’t leap to conclusions like that from what I learned at one recruitment event. I do, however, think that the situation is pretty grim.
But firstly, a few points that people made to me in response to my post.
We know that Perl isn’t used in start-ups
Yes. I think we do know that. But I don’t think we’re as worried about that as we should be. Imagine if that job fair was held fifteen years ago. Or twenty years ago. Perl used to be the language of choice for internet start-ups. What happened to change that? (I have some theories that I’ll cover in another blog post) Can this trend be reversed? (Honestly, I don’t think so – but I’m open to arguments to the contrary)
Every programmer I know uses Perl in some way
I think this might have been true fifteen years ago, but it hasn’t been the case for some time. If it’s really true that all programmers that you know still use Perl, then I think you only know a really bizarre cross-section of programmers.
All companies use Perl, but the HR department or management often don’t know
This is similar to the last point. And, again, I think it’s something that used to be true and hasn’t really been true this millennium. But there’s also the idea of Perl being the programmers “secret weapon” that the suits don’t know about. Even if it’s true (and I don’t think it is), then going underground like that is likely to be harmful to Perl’s popularity in the long term.
I think we should stop fooling ourselves here. Perl usage has been declining for over a decade. To a first level of of approximation, Perl is already a dead language.
Of course, The Perl community has spent a lot of the last few years actively denying that. I’ve been responsible for some of that drum-beating myself. But we need to accept that it’s true. For most people outside of the Perl bubble, Perl is a language that they last considered using back in the last millennium.
So, if Perl is dead, why has everyone spent the last five years demonstrating that this isn’t the case? Have they been lying to us? No, I don’t think they have. I just think that they have been looking at the wrong measures of success. Let’s look at some of the arguments I’ve seen.
CPAN is growing faster than ever
We have regular releases of Perl
Some great new features have been added to Perl
These all essentially boil down to the same argument – “Perl isn’t dead because some part of Perl (or its ecosystem) is improving”. I can’t argue with any of those facts, but do they really say anything useful about the long-term viability of the language. It’s great that Perl is constantly improving, but unless the people who are currently ignoring Perl can be persuaded to investigate these improvements, then they do little or nothing to stop Perl’s decline.
Moose might be the most powerful object system in the world. DBIx::Class might be the most flexible ORM available. Projects like these are great. But they don’t seem to be doing much to bring new people to Perl.
There are more YAPCs and Perl Workshops every year
Perl Mongers groups are starting all the time
We get dozens of people to our meetings every month
These arguments all boil down to “the Perl community is growing”. Again, I can’t argue with those facts (well, to be honest, I think the rate of Perl Monger group creation has slowed over the last ten years) but, again, I don’t think they prove what their proponents think they prove.
There is a difference between the Perl community and Perl programmers. Everywhere that I work, I find people who I already know from the community. But I always find far more people who I don’t know because they aren’t at all engaged with the Perl community. And I think it’s that large, untapped, number of non-community Perl programmers who make up the increased numbers of people attending meetings or conferences. This means that we are getting better at bringing our colleagues along to meetings. It doesn’t mean that more people are using Perl.
The number of Perl jobs is rising
Our company can never find enough Perl programmers
We just started a major new project using Perl
Most of the companies who use Perl continue to use Perl. That’s not really news. And some of those companies have grown really big and therefore need lots of Perl programmers to maintain and enhance their Perl programs. And that’s great. But it’s not really evidence of a grow in Perl usage.
Not all the companies who have historically used Perl continue to do so. Over the last five years I know of at least four big Perl-using companies in London who have started to move away from it for new development.
And one reason why people are always looking for Perl programmers is because many programmers have chosen to move away from Perl. I know plenty of people who were regulars at London Perl Mongers meetings ten to fifteen years ago but who haven’t written a line of Perl for over five years. This means, of course, that there is more work to go round those of us who are left. I could probably go through to my retirement maintaining existing Perl codebases. Those of you who are younger than me might not be so lucky.
So, to summarise, people who say that Perl is thriving point to three things – technical advances in Perl, the vibrant Perl community and the number of unfilled Perl jobs that always seem to be around. All of these things are great and are, of course, necessary for a living and growing language.
But they aren’t sufficient. You also need people outside of the community to take notice. And that’s not happening.
Ask yourself three questions.
- When did you last read a book on general programming techniques that contained examples written in Perl?
- When did you last read documentation for a web site’s API that included examples written in Perl?
- When did you last hear of a company using Perl that you didn’t previously know about?
This is why I published that graph a couple of weeks ago. Looking at that data, it really hit home to me just how badly we’re doing.
I have a couple of theories about why most of the world started ignoring Perl. I’ll get to those in my next blog posts. But, annoyingly, I don’t have any good ideas about how we might reverse the situation.
To be honest, currently my best advice (and the course I’ll be taking) is “brush up your Javascript”.
As a programming language design nerd, I look forward to hearing your opinions on the reasons for the downfall of Perl – be they technical aspects of the language, or social aspects of the community. I (as a Smug Lisp Weenie) always felt that Perl was technically weak, but that its community was tremendous, and more than made up for the failings of the language itself… So I’m interested to hear how that’s failed to keep it going.
But, certainly, from my “outside” perspective, I note that fellow Smug Lisp Weenies I talk to these days don’t complain about Perl any more. Once, it was all the rage to complain about Perl. Now, they complain about PHP, Ruby, and Javascript instead.
I never liked Perl, but I like a lot of people who like Perl, so I still feel saddened by its decline – and I am interested in knowing more about what happened!
And at the same time you are bashing projects like Mojolicious, that actually have reached outside the Perl echo chamber and bring new folks into the community, on IRC. You are a big part of the problem.
I’m flattered, of course, by your estimation of my influence, but I think that Perl’s problems go way beyond my opinion of a particular framework.
And, to be clear here, I have no objections at all to Mojolicious. My wariness towards it is completely down to its author’s previous behaviour on similar projects.
This is nonsense. I don’t see Dave bashing Mojolicious. Mojolicious seems to have such a persecution complex – perhaps due in part to its leadership. It is an example of the kind of app or platform that Perl should be replete with but in fact barely exist. If there were 100 or 1000 mojolicious type apps or frameworks to point to, in heavy use by hobbyists and companies, we wouldn’t be discussing why Perl died, because it wouldn’t be dead.
I’ve managed to flip between Perl and Java projects over the years. I keep seeing established Perlbeing re-written in Java. I see new services which could be implemented as psgi’s using Node instead. I see ops tools (amazing ops tools) being implented in Ruby. I keep seeing teams coding in Perl, where many members no longer ‘want’ to – because there are other more popular and blogged about techs. It saddens me.. Most ppl I’ve worked with didn’t ‘care’ about Perl, PBP or the community. Perl was amazing to them because they could knock up code which would return business value (and keep them in employment.) C’est la vie. Personally, I blame community snobbishness and Perl 6 for the death of Perl >=5.
Interesting point that about Perl 6. I think I know what you mean. I wouldn’t blame it for the (commercial) death of Perl, but it seemed to create confusion and uncertainty somehow…
One of the reasons for reduced numbers coming to perl is that there are no cool things being created in Perl. Where cool means getting hyped on places like HN etc, where the (wannabe) cool kids hang out. The kind of systems / services where people look at them and think/say “hey, this is/looks cool, how’s it created?” Cool things aren’t being created in Perl, so the young guns who want to work on cool things aren’t interested in Perl.
And I think many Perlers aren’t interested in creating cool things, they’re too busy getting things done, or having their own fun. And so it goes.
Look at the hype cycle. The trough of disillusionment came some time in the 2000’s, when Perl 5 development had stalled, and people then realised that Perl 6 wasn’t coming any time soon. Perl lost mindshare, and developers, and at the same time other languages were maturing, and perhaps hitting their peaks.
The slope of enlightenment is when the Perl 5 development engine started running smoothly again, and we’ve hit the current plateau of productivity. But I guess your question is “what’s the gradient on that ‘plateau’?” 🙂
I will finish my career using PHP no matter how great Hack becomes … I just want to be paid for a few more years. IMHO the hard and interesting coding by humans has mostly been done and questions like “is Javascript better than Dart?” are just coke vs. pepsi questions that don’t interest most developpers. Frankly, a lot of languages seem academic and ill suited to the commercial interests of established companies: C# .NET et. al. are likely the future there. Since 99% of the 135 companies you surveyed likely won’t exist in 5 years, who cares if they use Perl or end up inside GOOG, ORCL, or MSFT?
Compared to Javascript, Ruby and Python, Perl (especially Perl6) seems equally well designed and positioned for the future of computing where most “software development” will be done by non compsci domain specialists using slangs and DSL. In fact it seems much more future oriented than even the perl community gives it credit for.
Clearly the Perl problem is marketing.
Let’s think about anyone outside Perl looking for the appropriate language to implement a new project.
What will they see about Perl?
The first thing they will see is that the last version is Perl 6, then they will realize it has been in development for more than 10 years and still is not out. This clearly points out that the language is dead or near to be dead.
If the new possible Perl users doesn’t quit at this point they might go to perl6 to check what is going on. First impression there is that Perl 6 is a language for kids or something like that. How can Perl 6 be taken seriously when the web looks like that?
The Perl 6 problem has a clear solution. Change the name of Perl 5 to Perl 7, or Perl 20, 22, … (removing the 5. part). That way when someone looks for the last version of Perl will see that is Perl 20 and it is active.
(So he won’t run away)
Apart from that problem the new possible users will find places like http://www.perl.org, http://www.perlmonks.org or search.cpan.org, http://www.irc.perl.org... And the impression anyone will receive from those places is that Perl is abandoned, all those places are ugly, really ugly, looks like nobody has maintained them since the 90’s.
They might be great places, but the appearance is clearly telling you “run away”.
Marketing, tons of marketing needed.
Totally agree. I got into programming in general just a few years ago with Java, b/c it was THE language to learn (college CS majors buddies told me so… probably b/c they were CS majors and learned on it). I tinkered with C, picked up HTML/CSS & JavaScript and got excited about front-endy JavaScripty stuff. Then I heard that Python was an “amazing language” and “easy to program, so I picked up a little there. While on that journey, I read an article from 1999 about a guy who built a parser in Python and raved about how much easier it was to pick up than Perl and how many fewer errors he made in the development process. Then I looked around at other commentary on Perl. All this stuff made it sound like Python was so much cleaner a language and that it had already superceded Perl.
Time passes.. I get a job as a Java developer.. Then I’m picking through some log files on the servers at work using grep and sed, so I decide to look at AWK. It’s a nice, declarative language for text munging, but it’s got some serious deficiencies in data structure support.. I learn Larry wrote Perl to supercede AWK, so maybe it’s a better choice. I was amazed by how easy it was to pick up, the power it gave me in text processing.. but more than that, it’s an easy language to think with. Maybe this is just me, but it has been much more of a joy to learn than Python. Yet, I shied away from it for 3 years because I was under the impression it was an old, clunky, out-of-date language like PHP (why the h*ll is PHP so popular?). Total 180. I also love Perl’s philosophy: there’s more than one way to do it (here’s the tools; you’re responsible for what you do with them)
However, it really does bug me that I passed Perl by because there wasn’t enough “cool” Perl stuff around to help me see past the hype. But you know what? It’s a programmer’s language. Not a designer’s language. JavaScript is a designer’s language, well, mostly because it’s the only browser lang everyone could agree on. PHP is popular because the first time you see it when you try to hack your WordPress installation. Java.. write once, run anywhere.. like every other modern language.
But what does Perl give you? There’s more than one way to do it. That’s it? Yeah. It’s great, but that’s what you know about it. For me, this is a dream. My code comes to life at my fingertips.. But when I knew nothing about building software, I wanted to learn the right way to do it. There must have been a right way, and I wanted to learn that. What language does that sound like? Few choices and restricted freedom, but most people out there WANT someone else to tell them what to do and how to do it. So it goes.
What do we Perlers do to reverse this perception that Perl just isn’t in? Probably we start showing off. Probably we start publishing tutorials and github style promo sites that push this or that Perl library as just how such-and-such a thing is done. I just had a guy ask me how I implemented a couple web crawlers: “Did you use Scrapy?” he asked. This guy doesn’t know the first thing about programming, let alone HTML scraping, but he has this idea in his head that Scrapy is just the thing you use to do that. I have to admit, though Mojo::DOM, HTML::TreeBuilder, and HTML::Parser are probably much easier to use, it was pretty tough to figure out that these were the tools to use. Go to scrapy’s website, and you get this little description: “An open source and collaborative framework for extracting the data you need from websites. In a fast, simple, yet extensible way.” I don’t have to be a programmer to know what that means. Well, I guess Python is the language to learn if I want to web scrape.
But why can’t it be this way for Perl? Probably because Perl is a great language for the text enthusiastic. Perl 6 is here. Let’s make it the new “tool to use”.
Having to be aware of dozens of global variables with clueless names like $a, $b, $_, $!, $^wut does not help.
http://perldoc.perl.org/ explanations could be better as well – a wikipedia-like collaboration schema could improve them? As they are now they feel sometimes incomplete, sometimes unstructured, sometimes just unclear.
Perl 6 removes part of the accidental complexity of Perl 5, but introduces a few other completely arbitrary one-char symbols to memorize.
This is not 1970 anymore. It is preferable to have longer function names if that makes them more readable.
I find it sad when you ask for help in Perl and the answers look like a hieroglyphic.
Then, yes, utf8 support in Perl is fine. But very few of us last enough using Perl to realise.
I think the key is making Perl easier to read and write than its competitors as of _today_. Of course Perl is better on 2016 than PHP, Python, and others were on 2006.
Every time I brought those arguments (and more) I got laughed at, yelled at and always got the CPAN growth argument shoved in my face.
Every time when I say why Wikipedia isn’t made on Perl, why Perl didn’t do projects like Vagrant or Docker or why there is no Builbot or Jenkins in Perl I get “I rather provide the modules do people could write it!” Nobody ever does it seems.
Being a pacemaker or participiating in hypes because people are excited? No Perl in the big data hype. That one will go to Python. Like natural language processing and all academia did. And if you’re going to mention PDL now – excellent. Show me the tutorials and the real world usage and the equivalent to rStudio and iPython to use with it.
Szagab has a list of Perl projects. It makes me cry for the most part.. age, code quality, UI and usability, installation.. you name it.
The Perl job market is non existent anymore in many countries, especially outside England. Unless you want to work on a 15 years old mod_perl code base for the rest of your life.
And a vibrant community? Get back to me with “vibrant” or alive when your events are sold out in minutes (JavaScript) or over a 100 women run your weekend coding event over (Railsgirls, Ruby). When 50 kids show up at Coder Dojos (Arduino, Python). That is what “alive” and “vibrant” gets measured by these days. In a city like mine I can attend amazing tech events every evening of the week in amazing locations with very cool people and interesting projects: NONE of it is in Perl. NONE.
But technicians still use Perl I get then and then I have to ask why Perl isn’t the main language to write bindings in anymore, why I don’t have an embed Perl, Perl for microcontrollers and on my smartphone. This realm is going to JavaScript these days. A cute project like the Tessel does not come with Perl.
Perl used to have amazing documentation and books. Is there a great book of.. “Knock yourself out with events and async”? or “Avanced web development in Perl”? No. When I look in the Catalyst tutorial I’m told “how to do stuff with JavaScript is out of the scope of this tutorial” which then moves on explaining installing the vm stuff..
And no matter how great Moose may be – many people don’t like it. That never gets accepted or even dealt with. It’s completely ignored. I get told “it has a better object system than Ruby” – great.
And how many people really NEED that AND are willing to put in the time to learn this great system which they won’t encounter anywhere else or use ever again, because almost nobody does ONLY Perl? The “technical superiority” argument does not work (see Lisp) – especially not if you have to explain it first in great detail. It’s like “worse is better” was never written. The argument is moved onto a plane which is of almost no relevance to the every day programmer. Or beginners. Or newcomers.
I really like Perl. I would found my startup on it. But I really wish it would face reality instead of always putting lipstick on the ugly facts pig.
And getting a hype back.. well. Look at vim, Lisp with Clojure, or recent articles about make. And JavaScript in particular.
We could learn so much of it.
Couldn’t agree more!
The Perl community’s inward-facing echo-chamber effect is indeed a big problem and the major factor in the death of Perl. Not sure that any marketing based on the current dead horse is going to get anywhere.
I dunno, dude. I’ve been using Perl for 22 years, and for at least 18 of them the zeitgeist has been “Perl is a dead language, it was replaced by “. PHP, Visual Basic, Java, Javascript, C++, C#, Python, Matlab, Ruby, and Haskell have all been named as replacements. But somehow Perl continues to grow, to attract very strong talent, and to be *relevant* in the language-design world, despite being ancient by the short-lifetime standards of programming languages.
(Moose is one example of Perl remaining best-in-class despite a large competing community elsewhere. PDL is another — PDL’s development team is 10 people, more or less, and for raw power and flexibility it still outshines what the Mongolian hordes of Numpy/Scipy developers have achieved…)
I think a lot of the hysteria comes from Perl having a small growth time-derivative, and/or not being the default language taught in computer science courses.
I suppose there’s an issue with different definitions of being “dead”. If there’s a thriving, relevant community of coders and new stuff being developed both with a language and in that language, it’s not really fair to call it “dead”. On the other hand, if your definition of “dead” is “not the one language I should choose to learn in school”, then sure, Perl is dead. Always has been.
“I suppose there’s an issue with different definitions of being “dead”. If there’s a thriving, relevant community of coders and new stuff being developed both with a language and in that language, it’s not really fair to call it “dead”. On the other hand, if your definition of “dead” is “not the one language I should choose to learn in school”, then sure, Perl is dead. Always has been.”
Well, then Perl is dead on both metrics. Thriving, relevant community? It’s shrinking and it’s not been “relevant” in any meaningful relation to the wider world of programming for a very long time. New stuff being developed in/with Perl? Not like with Ruby, say, no.
This sort of answer is exactly the inward facing denialism that Dave Cross is highlighting as an issue.
I’ve been using Perl for 9 months now. I still don’t get the advantages of explicit usage of array-arrayref, and hash-hashref, and the dozen of possible sintaxes for acessing them. For me it’s just a source of bugs. Neither Python, JS, PHP expose this thing; they manage that automatically.
This is the only thing that prevents me from recommending Perl to friends.
i totally agree with David above. Marketing. The simple truth is Perl is a nice language. But no one knows it. Name a language which doesnt have ugly features..
great blog post.