PERL is dead. Long live Perl.

user-pic

Wiki Extras for this post

Welcome to Catalyzed.org.  A site dedicated to sharing with the world what modern Perl looks like, and providing a peek into what's going on in the Perl community.  

As you are no-doubt aware, Perl does not have a flattering reputation. People have called it everything from 'ugly line noise' and 'unmaintainable' to the big favorite: simply 'dead.'   Perl is alive and well, but to those not in the Perl community it can be hard to see that.   

So the question is... If Perl is so lively, how do you reconcile that with it's reputation? How did we get here? And more importantly, how do we make Perl's reputation reflect what we who use it know, namely:

Perl is one of the most powerful and fun languages available with a lively and active community.

Today, we'll take a short stroll down memory lane, to see where this reputation comes from, and catch a glimpse of what modern Perl looks like.

Time:  1995     Where: a barely-known ISP

Scene: 

Young coder furiously typing in a green on black terminal.
Window switches to web browser.  Page Loads: Matt's Script Archive. 


Time:  2003     Where: a little known web development company 

Scene:

Programmer talking with his boss:

Programmer:  "This code is awful, it really needs to be rewritten."

Boss: "Why?  What's wrong with it?  We don't have time to rewrite it, I promised we'd have it done by the end of the day."

Programmer:  "It's written for PERL 4.  It's a complete disaster area.  It looks like it was some half-hacked Matt's script.  Wait, the end of the day today?"

Boss: "Yeah, just make it work."

Programmer: ".... It won't be done today... I'll try to get it done for tomorrow."  

Programmer walks off to try to hack new fields into existing script.  

Boss calls client and says: "No, you can't have it today, it's written in PERL and it will take until Thursday to get it done."


Time:  Today     Where: a small magazine, web site development meeting

Scene:

Executive:  "We need to get this site up and running ASAP.  You have 8 weeks, get it done."

Web Developer:   "We can do that.  If this is the complete feature list, we can get it done no problem."

IT director, stunned at an answer of 'OK':  "I don't think that's realistic.  What are you going to build it on? We don't want an off the shelf CMS."

Web Developer:  "It's not, there's a Perl based web framework called Catalyst that we can use that will make this easy."

IT Director (formerly Boss): "We are not building our new web site on PERL.  I have dealt with PERL before, it's completely unmaintainable." To Executive: "We'll get back to you."



This last scene is probably familiar to you if you have proposed Perl as a solution to a software problem in recent years.  

Perl is a forgiving language, especially compared to the languages commonly available for web development in the mid 90s, which is the reason it was chosen for those initial web projects.  You could get started without the need for a full understanding of pointers and memory management.  If you forgot to initialize something, the result was not a seg-fault or other failure.  Perl required less discipline to get started with and was more tolerant of bad code.

The cowboys of the mid 90s cut their teeth on PERL forum postings and Matt's Script Archive. They have, unfortunately, left a legacy.  That legacy is horrible, unmaintainable code.  Many of those cowboys have gained real skill with development since then. More have simply migrated to other languages to write bad code.   Unfortunately, the names of those cowboys are not visible every time that code is looked at, but in every one of those files, at the very top, is some variation of '/usr/local/bin/perl'  

So Perl as a language gets the reputation for this pile of code left behind by the cowboys of the early Internet.  Fortunately for those of us who develop in Perl, those days are over.  The newer languages such as PHP and Ruby have taken over the 'newcomer to web development' slot as far as the buzz engine goes.  So the cowboys of today are generating horrible unmaintainable code in other languages.  

Because of its reputation as a dead language though, Perl lost its appeal as a buzz-worthy language. This reputation has cost Perl many new adopters and over time has boiled down the Perl community significantly.  

Today, you don't code in Perl because you want blog cred.  You code in Perl because you want to get things done.  This is the reality of Perl development in 2009.  There are a lot of people writing in Perl today who have come through it, who have been around the block and are long-since tired of re-creating the same solutions over and over. These programmers are the ones working in Perl today.  They are the ones uploading modules to CPAN 400+ times per month.  

These developers are people who are excited to do new things, who hate repeating themselves, and who want to do as much as possible in as short a time as possible.  They don't want to waste time solving the same problem again.  They want to create a module that is flexible enough to handle this problem the next time they encounter it, even if it is slightly different, or better yet, use someone else's module.  They want to move on to the next interesting problem, they want to make their software more flexible so they can do more with less.

Projects such as MooseDBIx::Class and Catalyst are evidence of this new life of Perl.  Perl is no longer a language of cut-and-paste unmaintainable line noise.  Today's Perl is a language of great power in a small space.  It is a language whose devotees are focused on getting things done, on exploring new concepts and better methods of doing things.   Today's Perl developers have eschewed the NIH (Not Invented Here) build-it-yourself mentality in favor of a FAI (Find And Improve) mentality.  

The result of all of this is a renaissance in the Perl community.  A vitality which, though not new, is more pervasive, more lively and more externally visible.  It is reinforcing that Perl is a language that is fun and exciting to work in;  that Perl is a language where even those with years of programming experience can learn new things and where new things to all languages are being explored.  Perl's reputation as a bad, dying language has long outlived its time.  It's time we bring a new message about Perl to the world at large.

PERL is dead.  Long live Perl!

So, how do we communicate this message?  The answer is simple - we speak about it.  This is the reason we created Catalyzed.org.  We all know what good Perl looks like.  We know the successes we've had. It's time to share them.  

Drop us a line at ideas at catalyzed.org, add a comment below, or pop over to our ideas site: http://catalyzed.ideascale.com/. Tell us about your successes. Share with us your favorite pet CPAN modules.  Drop a line about a little gem of code that does something amazing.  We'll share it with the world. 

No TrackBacks

TrackBack URL: http://www.catalyzed.org/mt/mt-tb.fcgi/7

8 Comments

| Leave a comment

Nice site Jay. I've commented on your site and the health of Catalyst in my blog post on Catalyst Perl looking good.

Cheers, Peter
http://perl.dragonstaff.co.uk


Good luck with your site! Every addition to the Perl blogosphere and Perl publicity would be appreciated. I think I'll start a page in perl.net.au concentrating Perl blogs.

You may wish to follow my technical blogs where I blog about Perl often, and publish the posts here, if you find them worthy of being mentioned.

People where not using green terminals in 1995. Green terminals were a thing of the 80s. In 1995 everyone was using Pentium or AMD running Windows 95 or Linux for ISP servers.

CDR: I know... I actually used them. :-) I meant a Terminal Window... remember the Windows 95 Terminal window?

I think this is a rose-tinted history. Some people did claim that Perl was easy to learn, but this was a lie unless you were already familiar with Unix shell scripting, languages completely unintuitive to newbies.

The more honest selling points for Perl were always the ones you call contemporary- "There's a gazillion scripts already out there, we don't need to write our thing from scratch" was one. The other was "Perl is open source, the community is friendly and people will help you out." These arguments are increasingly true of Perl's competition (languages with more intuitive syntax) and so going forward I think we can expect to see more programmers gravitating to them.

IMHO you can't fairly blame newbie programmers for the unmaintainable Perl code; Perl is more tolerant of bad programming style more than other languages and this propensity wasn't helped any by programming textbooks which reinforced bad habits. Python and Ruby are going to pick up newbie programmers now faster than Perl and this is where rumors of Perl's death come from.

IMHO Perl went on life support when the Graymatter blog software stopped being maintained and most of Web 2.0 grew up on Perl's competition.

logomachist, I have to respectfully disagree. Perl is not more difficult to learn than any other language. A bit more daunting for those who have not programmed before, I'll agree, but once you get over the fear of sigils, it's really pretty straightforward.

Regarding selling points, note that I did not mention 'a gazillion scripts'. I noted CPAN modules. CPAN modules are packaged, well documented and well tested software components, with a clear purpose and a clear maintainer. The 'gazillion scripts' (aka Matt's Scripts) were exactly what I was indicating as a major cause of Perl's reputation.

Ruby is definitely picking up more newbie programmers now than Perl is, in no small part due to the reputation Perl has garnered due to what I described in the article. Before Ruby, it was PHP (still is to a large degree). I know that Python has it's followers, but I have yet to see it threaten to take the 'new to programming' #1 language spot. Personally, I wouldn't wish that on the language.

In any case, the point of the article is that Perl is alive and well, but unless you are in the Perl world, it can be hard to see that. It's our goal to reveal more of the world of Perl as time goes on. Keep your eyes open, There's more to come.

I'm going to have to disagree as well, logomachist. Have you ever looked at the Graymatter code? I have, and it was a disaster five years ago, an example of a lack of discipline. If it's the standard to which you hold Perl code to judge quality, then you need to seriously reevaluate your standards.

All programming languages (including Perl) are by definition unmaintainable, e.g. without the right tools, without qualified experts, without the will to survive, you can pretty much forget it. What makes Perl an interesting alternative compared with other languages is when one can combine successfully the advanced tools available, eager and top-notch developers, and just as important a healthy mind-set. This unique mix can go along ways when riding the waves of something like Moose, Catalyst or whatever.

Leave a comment

All comments are moderated. Spammers don't waste your time

Sponsored By


Ionzero: Rescue your dev project.
OpenID accepted here Learn more about OpenID

Following

Not following anyone

Note to spammers: all comments are moderated. Don't waste your time