Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling

comment on

( #3333=superdoc: print w/replies, xml ) Need Help??

Well, I very much (respectfully) disagree with you, let me explain why.

Why is Perl not considered as awesome as PHP & Ruby? I have a couple theories on this actually ...

First PHP, it has a (very) low barrier of entry which makes it appealing to first time programmers. I am not sure anyone but those who have only ever programmed in PHP (maybe also in Javascript) think it is all that awesome. It does have a lot of nice "off the shelf" applications which are super easy to install (so sysadmins like them). The real killer app of PHP (IMO at least) is that you can write a fully functioning database driven web application, stuff it all in a single .php file, upload it to your $5 a month web host, and thats it, your done! No modules to install, no dependencies to track down, no servers to set up and configure, etc etc etc. It's so simple, it hurts. Perl simply does not have this "feature" 1, which is nice for those consultants which get paid by the hour and for those of us who care about long term maintainability and clean project organization. However this raises the barrier of entry and makes us cost more, two things which non-tech-savvy business folks (a.k.a - the guys writing the checks) care about very much.

Second is Ruby. Ruby, Ruby, Ruby, *sigh*. It's actually a very nice language, and Rails is a decent framework. The really funny thing is though, the killer app for Ruby is not (necessarily) a Ruby app at all, but just blogging software that is most often written in either Perl or PHP (oh the irony). Ruby has been made cool by countless bloggers (some good, a lot bad) who are spewing their love (infatuation) for the language all over the blogosphere. When you combine all this exposure with sites like Digg and Reddit and many thousands of bored and unhappy programmers you get a Hype Bubble that is impossible to burst 2.

But wait, this is not all Ruby has to offer, it's more than just hype. Imagine yourself stuck in a windowless cubicle, flourescent lights bathing everything in a cold, bland shade of blue, a cup of stale coffee next to your keyboard and nothing but Java as far as the IDE can see. Now imagine yourself sitting in a big comfy chair next to the window in your favorite coffee shop, sipping a triple-tall mocha-frapa-spresso with whipped cream 3 and joyfully writing 1 line of Ruby on Rails code for every 20-30 lines of Enterprise Java code. Which would you choose?

Ruby is object oriented all the way down, which appeals to the Java Junkie who has been told that this is the only acceptable way to be. Ruby's OO is clean too, not like that icky line-noisy Perl OO, or that awkward and kinda clunky Python, but clean,... like Java. Ruby also has lots of cool features like blocks, continuations, metaclasses, etc. which are fairly easy to play with and make you feel smart and clever when you use them. In short, Ruby is fun!

Of course the really funny thing about Ruby, outside of the recent wave of startups and larger cities, not really a lot of work is out there. It has not trickled down to the PHBs in Middle America who have small budgets and need to get things done. It's overall market penetration is fairly low compared to PHP, Java and even Perl. Sure it is growing, but the hype still far outstrips the reality on the ground.

So, to recap, we have PHP; low barrier of entry, easy to deploy. We have Ruby; super cool and sexy, easier to write then Java. How can Perl compete?

Perl 6, yeah maybe, when it comes out. Not to be pessimistic, but people will not be switching to Perl 6 on Xmas of 200x (we may need to start saying 20xx soon). I consider myself an early adopter and the earliest I would even consider using Perl 6 in production would be Xmas 200(x + 1). Why? Because it's a new untested language that is running on a new untested VM and $work is what pays the bills, so I will wait till I am convinced it is stable and ready for use (Of course being an early adopter means I will probably help out with that testing too, and I encourage everyone else to do so as well, it will only get us there quicker). And even still, Perl 6 will only give us the "super cool sexy" thing, it won't be any easier to deploy then Perl 5 (probably harder, at least initially), it won't be "easier to write then Java" since it won't have a "Perl 6 on Rails" (at least initially), and it's barrier for entry will be no lower (and maybe even a little higher) then Perl 5. So if we are really honest with ourselves, looking at Perl 6 as our savior is a long term strategy and doesn't really help things in the hear and now (in fact, it could be argued that all the FUD about Perl 6 actually hurts things).

CPAN, well, it is full of much more crap then it is good stuff, and this is hard to sift through for the uninitiated. The CPAN ecosystem is awesome and really has nothing that even comes close to competing with it. But if your not writing Perl code, then is useless to you. If the language itself cannot attract the people, then how will 16,000,000+ lines of code in that language make it any more appealing?

You say that Catalyst, DBIx::Class and Moose aren't exciting enough outside of the community to save us, but I disagree. Catalyst is (IMO at least) far superior to RoR in that it is very much not opinionated, it may be "just another MVC" but so what, it gets the job done. DBIx::Class actually is "something new", it beats every ORM I have looked at in terms of flexibility and robustness, and since it is built on top of DBI, it supports many more database vendors then most other ORMs out there in any language. Moose, well I am biased since I wrote it, but I know for a fact that the object model it provides is unlike anything else out there 4 and I have been told by several people that it is "fun" to program in (and one former Ruby programmer said it was as "fun" if not moreso then Ruby).

So to go back to our list:

  • Low Barrier for Entry (PHP)

    Perl has always been easy to learn, but hard to master. IMO at least, Catalyst, DBIx::Class and Moose help you start writing good code sooner. There is also things like Perl::Critic which can help to catch the bad things early on. We will never be as dumbed down as PHP is, but you know, I don't think that is a bad thing.

  • Ease of Deployment (PHP)

    Actually, I think we are getting closer on this one. Alias and others have been fixing this though their efforts with Strawberry Perl and the push to improve the CPAN toolchain. It seems that PAR has been improving some, making it a viable choice for easing your deployment pains. We still have a long way to go, but there is positive improvement here.

  • Super Cool & Sexy (Ruby)

    I am not sure if Perl will ever be sexy in the "tight-sweater, miniskirt and heels" way that Ruby is, but thats okay cause Perl is sexy in that "random-color dyed hair, black jeans and glasses" kinda way. (Sorry ladies, feel free to substitute the descriptions accordingly)

  • Easier then Java (Ruby)

    Well, we already have this through CPAN and more specifically, modules like Catalyst, DBIx::Class and Moose which promote cleaner code.

So why then is Perl not as popular as PHP and Ruby? Perhaps we just don't have enough people blogging about these new Perl technologies, generating the amount of hype needed to break out beyond this (giant) Perl echo chamber 5. A key feature of all of them is TIMTOWTDI, but with an emphasis on providing a more "correct" way to do things, rather then just creativity-run-wild. This kind of flexibility really can only be found in the Perl community, because it is so key to our culture. We need to get out there and promote this, show them it is a good thing and something they should use.

Okay, now I really need to get back to $work :)

  1. no Vanilla CGI does not count, besides you still have to chase modules and dependencies
  2. yes, Zed Shaw tried, but ultimately failed
  3. and a little cinnamon sprinkled on top, yummy
  4. It borrows from so many different sources (CLOS, Perl 6, Smalltalk, Ruby, Ocaml, BETA, Java, etc.) to produce a combination of features such that it only could be written in a language like Perl. Also, I keep tabs on new languages and technologies and I have yet to see something which is comparable.
  5. Perlmonks and use.perl don't count as "blogging" they are still inside the echo chamber.


In reply to Re: What can bring the excitement back to Perl? by stvn
in thread What can bring the excitement back to Perl? by zby

Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":

  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or or How to display code and escape characters are good places to start.
Log In?

What's my password?
Create A New User
Domain Nodelet?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (4)
As of 2021-07-25 22:20 GMT
Find Nodes?
    Voting Booth?

    No recent polls found