Today's Perl problem is popularity, not power

Today's Perl problem is popularity, not power


The best thing for a programming language is to be powerful and popular at the same time. Perl was like that some time ago, but over the years it has slowly lost its appeal, even while retaining and increasing its power. And Perl 6 has just come too late to save the day.

Perl is a great tool for my job. Period. Small quick-and-dirty one-liners, “glue” scripts, complex automation tools... there is no area of my job where it hasn’t helped me doing my job better and solve problems that would have taken too long otherwise (with other tools or programming languages).

Nevertheless, despite its great power, the language has lost much of its popularity over the last decade. The effort that led to starting the Perl6 project aimed, beyond other things, at improving the strengths of the language (i.e. its power) while, at the same time, attempting to regain some of its former popularity.

Seven years have just passed. Maybe, at least as far as popularity is concerned, it’s just too late.

Let’s talk about popularity

When I started using Perl more than a decade ago, it was quite popular. No other language seemed to be more appropriate for server-side web programming, and since the web was in its “boom”, so was Perl. And that was Perl version 4.

Today, with version 5.10 near to release and a huge number of very good modules and tools on CPAN, Perl is much more powerful and useful than before. Nevertheless, its popularity is in a constant decline. With PHP (which started as a Perl project in the beginning), Java and Microsoft’s junk on the web server side, Java and Javascript on the web browser side, and Java again for the applications (with Python gaining popularity and strength day after day), Perl’s appeal is a fraction of what it had in its golden age.

It would be tempting to complain about Sun feeding Java with marketing and money while Perl has no paying sponsor, but that would be too easy. What would we say about PHP and Python then?

In the middle of year 2000, the community perceived that the wind was changing, and fired up the Perl 6 project. It was a kind of democratic process, where a number of people proposed how they would have liked the new version of the language to be in some aspects.

The process went on, and goes on today. The last Apocalypse document from Larry Wall, the inventor of Perl, dates April 13th, 2004 and was last revised on May 25th, 2006.

The last Exegesis document dates February 26, 2004.

Synopses date back in 2004, with some recent revision (October 2007), showing a sign of activity there.

And it’s recent news that the Perl Foundation and Mozilla Foundation granted a new Perl 6 Development Grant.

Nevertheless, after seven years, the design is still incomplete and the current implementation of “Perl 6 engines” is far from being complete (and how they could be considered complete, since some aspects of the language are not yet covered in the design phase?).

And it’s pointless to ask for an estimate, where the process is, how long it will take to complete... You can do that, I did it myself. You’ll get many answers, like “you can use Pugs/Parrot”, or “look at the Perl6 namespace on CPAN, you can already use Perl6 code in your Perl5 programs”, but the real question (i.e. “When will Perl6 be released?”) simply can’t be answered.

Now let’s talk about power

With all this depressing talk you might be discouraged from trying Perl.

Don’t be.

I could now sit here and enumerate a great list of reasons for you to use Perl today, but, if I did, as though I was the holder of a religious-like truth, it might cause too much controversy. And I don’t want that.

Therefore, here are the reasons why I personally use Perl. I don’t mean in any way that they are absolute values, I just hope they will fire up enough curiosity in you for you to give the language a try.

Perl is understanding

I assume that you are a good car driver: you always take the time to fasten your seat belt before even starting the engine, you respect the speed limits, the traffic lights, the road signs and so on.

Nevertheless, I expect that if you were rushing to take one of your loved ones to the hospital, you would be quite upset if the car wouldn’t move unless you fastened the seat belt, or would force you to respect the speed limit even if you needed to go as fast as you could. You are a good and rule-abiding citizen, but there are times when you simply can’t.

Perl works the same way.

When you need to build a big, composite, complex application, Perl gives you all the tools you need to do the job the right way (e.g.: it forces you to declare variables, it gives you the chance to use the Object-oriented paradigm, it comes with a bundle of ready-to-use, high-quality modules for the most common needs...).

But if you just need a quick hack, it doesn't get in the way. E.g. if you don’t ask it to be strict with variables, it won’t be; if you just need two or three subroutines and a few lines of procedural programming, it won’t force you to be perfect.

It’s up to you to decide how tight your leash will be. You can even decide not to have any leash at all.

Perl is flexible

As its creator says, “Perl was made to make easy things easy and hard things possible”. Whether you need to parse a full-fledged, huge XML file or the simple output of a UNIX command, whether you are creating a complex client-server system or a peer-to-peer application, a command-line interface or a graphical user interface, a program that will run just on one operating system or a multiplatform application, you can do that, and much more, with Perl.

Perl is powerful

With a rich library of core modules bundled with the distribution (and with many others available from CPAN), and a wide range of powerful tools and features (just think of the power of regular expressions, that were extended in Perl and later ported to a number of other programming languages and tools), Perl is always a powerful tool for a wide range of problems. In particular, it is a must for System Administrators.

Perl speaks your language

With all the advantages and disadvantages that it may bring, with Perl there is always more than one way to do anything (Perl’s motto is “There is more than one way to do it”). If you have sufficient knowledge of the language you’ll find concise and expressive ways to do the job with a touch of elegance. If you just know a few constructs, no problem: Perl won’t complain about your “baby talk” as long as it will do the job.

In conclusion...

Powerful, flexible, programmer-friendly... are you sure you don’t want to give it a try?

References

  1. State of the Onion 2000
  2. Perl6 development site
  3. Perl6 Apocalypses
  4. Perl6 Exegeses
  5. Perl6 Synopses
  6. Patrick Michaud awarded Perl 6 Development Grant as a joint initiative by The Perl Foundation and Mozilla Foundation
  7. How much Perl6 have we got?
  8. How much Perl6 have we got? (take 2)

Post Scriptum

Sorry for being away for such a long time, due to health problems. Nothing grave, just serious.

Category: 
Tagging: 

Comments

Roland Lammel's picture

Very nice article.

Although very subjective on the topic, the article expresses an undispiteful truth that perl lost momentum in popularity some years ago. This was also addressed in an inspiring lightning talk on YAPC::Europe 2007.

No perl is not dead, it probably never will be. Very recent results from the perl survey (http://perlsurvey.org/) show that perl is still alive and well, but loosing ground for the younger programmers. But...

In today's IT decision for projects are not based on "the right tool for the job", but rather on the "most popular tools for the job". Therefor IT managers and project leaders tend to decide for the big players, backed by big companies like Java, C#. On the other hand, away from commercial interest, people tend do decide on tools for easy development and deployment. So many decided to go for the PHP and in the later years python route, perl is not popular enough, that mod_perl is installed on every host, nor are the pitfulls in developing mod_perl application easy to grasp.

This mostly results in people outside of the very active perl community, to not even consider perl for their project. Of course reducing the chance of actually being chosen to 0.

But let's not forget, Perl is not facing a problem with it's power, but more with the popularity. This is also one of the things that the community starts to realise. It is not enough the we, how know perl, like it... we have to get the word out for perl. Focus at least in a marketing context to reduce choices and flexibility but on the other hand make perl more accessible to newcomers and managers.

Recent efforts like perlbuzz.com are the first signs of getting there.

fragglet's picture
Submitted by fragglet on

It's easy to assume that picking a programming language based on its popularity is just an arbitrary choice, something done by managers without any real logic. The fact is that there are real world reasons why it is a very good idea to use popular programming languages.

Firstly, the more popular a programming language is, the more libraries there are likely to be for that language. A programming language by itself isn't very useful; often there is some specific external library that you need to use. If you want to process XML, you need an XML library, for example. Even if you think it has all the libraries you need, you might need to extend your program in the future.

Secondly, as with any piece of software, the more popular it is, the better tested it is. This extends to the libraries as well as the interpreter/compiler; it's all very well having an XML library but if it's just something a teenager hacked together in a few days and doesn't work very well, then it's next to useless.

Finally, maintainability is a key issue. If you pick an obscure language for writing a piece of software, and get hit by a bus tomorrow (or leave the company) then the company is screwed. Suddenly they don't have anyone who can maintain the software crucial to the business any more. In contrast, it's much easier to find Java or C developers.

Anonymous visitor's picture
Submitted by Anonymous visitor (not verified) on

I'd like to add that the Moose framework (http://search.cpan.org/~groditi/Moose-0.29/) has added a whole new spirit and dimension to Perl5 which is great since it's inspired by the Perl6 meta object model. I'd really encourage anyone to explore it!

Anonymous visitor's picture
Submitted by Anonymous visitor (not verified) on

Would you please cite numbers to back your claim that Perl popularity is declining? Thank you.

Marco Marongiu's picture

Hello everybody

I am replying to this comment to reply to all others. Moreover, since this post is quite similar to the ones posted by chromatic on the "use Perl;" site (see http://use.perl.org/~bronto/journal/34907), I am posting a slightly modified version of the reply I posted there, leaving it to you to go and read the full thread.

Yes: I think that Perl6 is not going to gain a sensitive audience compared to what Perl5 has. That's what I wrote, it's my own, personal opinion, and in fact it is in my blog on FSM (no, it was not an article).

Let me stress again that I am not scorning what the developers are doing to make Perl6 finally dock. Being into the "free software movement" (for whatever it means) for many years I know that people does what they can, when they can, and unless some "external intervention" comes up, no one can tell when a certain piece of software will be released (Debian GNU/Linux, my favourite distribution, is one good example of that).

I am not saying that Perl6 is going to fail. No, not at all. Go back, read it again. I'm not saying that.

I'm not criticizing the amount of effort developers are putting into Perl6. No. My opinion is that you will succeed in improving the language and empower the people that are currently using Perl5 and all those that will want to give Perl a try. Nobody's questioning Perl5 power (not me), and nobody is saying that Perl6 would be worse than Perl5 (not me, again). I am talking about my personal feelings on the matter, that are shared by someone (like larsen on Perl.it or Roland Lammel here on FSM...), and not shared by others (like chromatic on use.perl.org).

About the point that popularity was not a goal for Perl6, which arose here on FSM, I remember an article I read years ago that I can't find again (if someone has a pointer that would be greatly apreciated). That article told of a meeting about Perl's future held at OSCON2000, with Larry Wall and all other Perl's "core people" of that time. In that meeting someone (maybe brian d foy?) strongly said that if something didn't change, Perl was not going to succumb to Java and all the other emerging languages of the time. From that one could deduce that along the goal of making Perl better than Perl, there was also the goal to make Perl more popular.

I'm sure the objective of making Perl6 better than Perl5 will be achieved.

What I am questioning is that Perl6 is not going to make Perl more popular than before. And no metrics exist for that (as well as there probably aren't to measure whether Perl6 will be better than Perl5). These are opinions. If we talk about a "measurable" demonstration of an opinion, we are not talking about an opinion anymore, but about a truth. That's why I am not sure it does make sense to discuss the matter this way (in fact, I think this could be more spoiling for Perl6 thank my opinion alone).

But since you ask for numbers and facts, I'll do my best to bring them. Done that, I'm not going to discuss anymore unless the discussion cools a bit.

If you take the "State of the Onion" of 1999, Larry Wall showed a little statistic based on the job offers in dice.com (see http://www.perl.com/1999/08/onion/talk.html). Not finding any detail about that research anymore, I did my own little research a few hours ago for the following keywords:

* java
* c++
* c#
* Visual Basic
* Javascript
* perl
* PHP
* python
* cobol
* ruby
* smalltalk

Note I: c#, PHP ruby are newcomers compared to 1999 research;
Note II: the following numbers for Visual Basic are the sum of the research for "VB" and "Visual Basic"

This is what came out at around 15:30 GMT+1 on Sunday, November 18th:

1. java 17169
2. c++ 8424
3. c# 7656
4. Visual Basic 7228
5. Javascript 6771
6. Perl 5768
7. PHP 2384
8. python 1335
9. cobol 1146
10. ruby 672
11. smalltalk 68

So we have Perl at 6th place, 5th if you leave the C# newcomer out. Compared to the 1999 research, this is a -3/-2 places.

If we take the newcomers into account, perl has 9.84%; it's difficult to tell from the graphs how much it had in 1999 precisely, but it doesn't look that bad. If we don't take newcomers into account and we limit ourselves at the 1999 competitors, we have a 12.04%.

Now, every statistic should be interpreted. My interpretation is that Perl is less requested than more other languages, which means to me that it is less popular than before. By the way, it is almost keeping its market share, which means to me that he's keeping its old audience while the other emerging languages are competing between them for the top of the chart.

Now you have numbers, but you had opinions again -interpreting a statistic is giving an opinion, isn't it?

There could be more things to say, but this comment is too long already.

Ciao
--bronto

PerlPilot's picture
Submitted by PerlPilot (not verified) on

The effort that led to starting the Perl6 project aimed, beyond other things, at improving the strengths of the language (i.e. its power) while, at the same time, attempting to regain some of its former popularity.

That's strange. I don't recall it ever being a goal to "regain perl's popularity". Perl 6 has always been an effort to take the lessons learned from Perl 5 and other languages and build a better tool. If that makes it "more popular", great! If it doesn't, oh well. Useful tools will be used though.

Flavio Camus's picture
Submitted by Flavio Camus (not verified) on

As system administrator, i only can express teh joy of program in perl. Easy, short, powerful. Iv been using it since 8 years, and i never been disappointed. Its the swiss army chainsaw at last.
I think other projects like python can left behind perl only for simplicity or fancy code, but the complete set of modules still in the hearts of the old fashioned 'nix system administrators.
Good article.

ricegf's picture
Submitted by ricegf on

I used Perl exclusively for my dynamic language until around 2004, when I transitioned (for the most part) to Python. The biggest driver for changing was the growing size of the apps I was creating - Perl's object-oriented support just seemed primitive next to Python's elegance, or maybe my brain was just shaped wrong for OO Perl. I even came to love Python's significant indentation, to my surprise.

That said, I still return to Perl when I just want to shred a few text files and produce a report. It's unmatched at quick-and-dirty text processing.

I've watched Perl 6 rising from afar, rather disappointed at the "slow" pace but generally approving of the design. It shows great promise.

Once it's "finished", I hope that Python-on-Parrot becomes a major Python alternate implementation (like Stackless, Jython, IronPython, or PyPy - the BDFL is very approving of alternate implementations...). I would love to be able to mix Python, Perl and Ruby in the same app with a common set of libraries on a widely-ported virtual machine. It might even replace CPython as my favorite dynamic language environment.

So though I haven't said it in a while - Go, Perl! :-)

fragglet's picture
Submitted by fragglet on

I programmed in Perl for a while because at the time it was the best tool for the job. It's really useful and important to know a high-level scripting language, as low level languages like C simply aren't appropriate for many things.

However, I always hated it. It has an inconsistent and confusing syntax, and once you get beyond the simplest of operations, higher level programming concepts like OOP are simply hacked in to the language in the most horrible way. To top it off, it doesn't even have a proper garbage collector.

I was hugely glad when Python and Ruby became popular enough to be as useful as Perl, and for me, they have now completely replaced it. It's been several years since I needed to write a Perl script now; I have no need to do so and I would never choose to do so. I can think of no real reason to recommend learning Perl nowadays. Everything that it is useful for can be done in other languages, and those languages are simpler, more consistent and, frankly, much less painful to use.

darkat's picture
Submitted by darkat on

I agree with the author about the qualities of Perl. I wrote in Perl for over 10 year and still do, from time to time.
I loved Perl but I moved away from it due to new and more consistent languages that appeared on the scene. These languages incorporated many of the strong points of Perl and left off the weaknesses. Knowing Perl could be still useful but it is not mandatory as 15 year ago.

Author information

Marco Marongiu's picture

Biography

Born in 1971, Marongiu graduated in applied mathematics in 1997; he's now a full-time system administrator for a well known software company in Oslo, Norway. He's also a Perl programmer and technical author and lecturer by passion.
Marongiu has been a Debian User since version 1.1.10 and he helped found the GULCh Linux Users Group (Gruppo Utenti Linux Cagliari), the first one in Sardinia.