Why in The World Would Anyone Use Perl 6?

I mean, can you get it any more WRONG?! The juvenile logo and awful color scheme of the website. The Christmas release that isn't all release-like. Version 6.c? Why not 6.0? What's with the whole "language" and "compiler" distinctions no one cares about? Why is the first stable release of the compiler not optimized to the max? And why is it called "Perl" in the first place? They should rename it!!

Too little, too late. Is there a need for a new Perl? No, of course not. What is it good for? Nothing. What is its business case? None! What's Perl 6's "Killer App"? Non-existent. Why in the world would anyone use Perl 6?!

In the three short months since I joined the Perl 6 community, those are some of the criticisms and attacks I had to endure—and sometimes respond to—on blogs, HackerNews, IRC, and Twitter.... I don't mind it at all, since there's little substance in those attacks. At the end of the day, I'm just writing my Perl 6 code. Enjoying it a lot, too.

Am I not meant to?

Must I look for logos tailored to the 50-something CIOs and not logos aiming to discourage misogyny in the community, before I even try the language? Must I demand the first stable release of something to perform better than other things that had a couple of decades of optimization? Must I demand from volunteers they spend the Holidays making a picture-perfect release instead of enjoying rest with their families? Must I hold every open-source tool I use to such standards? A solid, clear business case or GTFO?

cowsay.png

English isn't my native language. That language is something else and I can barely speak it now. Don't have much use for it. In fact, I dislike it. It's nothing major—some of the most famous literature in the world is written in that language, after all—but... well... it's the little things.

Maybe it's having too many letters or weird letters that aren't usually present on a keyboard. Maybe there are too many rules and too many special cases for them too! Maybe... Ugh, the language is just ugly, you know? I want results and not a language.

Of course, the same applies to programming languages too. It's the little things. Like having to write foo(1, 2, 3) instead of foo 1, 2, 3; or writing some_var instead of some-var; importing a lot of functionality instead of having it available from the get-go; perhaps writing if 5 < x and x < 100 instead of the much clearer if 5 < $x < 100; or how about checking a set contains only valid elements? In Perl 6, it's just a set operator away: if @given ⊆ @valid; or use subsets and junctions! I want results and not a language.

Omited parentheses and fancy operators are little things, I know. But they add up. Some programs that I converted to Perl 6 are nearly half the original size. In a 100,000-line program, that's 50,000 lines you don't have to write, and, especially, read later.

And it's things like these that make me enjoy programming in Perl 6. It's this that makes me feel—once again—the wonder I experienced 16 years ago, when I wrote my first program: writing something simple and getting the result, as if by magic. It's hackers like me who will nurture Perl 6 and help her grow. The trailblazers. The unabashed. We stare in the face of critique without flinching. We use the tools with value, not ones with solely a marketing campaign. We'll build the ecosystem and the killer apps. And should you decide to give our tool a spin and should you like it, we'll welcome you with open arms.

Why in the world would anyone use Perl 6? Well... it's the little things.

9 Comments

Thank you!
This is one of the little things that make me happy, and Perl 6 has many little things that are making people happy.

I wrote a blog post today which also lightly discusses the name and logo grumbling. Maybe you will like it: http://virtualsue.blogspot.co.uk/

Zoffix,

As a working Perl5 programmer I often feel that Perl6 is the worst possible idea we could have had. But I have pledged myself to try to put aside frustration and anger in dealing with Perl6, at least for now. I think it would help if the Perl6 community could be more understanding of where some negative feelings are coming from, rather than being dismissive (or feeling that way to me, when reading your blog and some of the other interactions I've been in over the past years). Since Perl6 was announced as a project (like back in the last century, although wikipedia is saying 2000 so I'm not sure...) Perl5 programmers have had to enduring a long but constant decline in our career opportunities. At the same time we are have to endure mocking from out peers in other languages, and seeing Perl support always coming last, if at all when new APIs and systems are developed. Its hard not to draw some relationship from the long process Perl6 and taken and the state of Perl5 today. If the Perl5 leadership had chosen to continue to iterate and improve Perl5, we'd have a language today that would better compete with other popular choices in dynamic languages. You might think that is not fair for me to say, but before dismissing it, try to put yourself in our position over the past 16 years. I enjoy Perl, but its clear to me my career would have been smoother if I'd chosen to concentrate more on another language earlier on. I'd never have to explain to all those bosses I've had that Perl5 isn't dead because Perl6 isn't finished... For all that trouble we had, Perl6 is honestly underwhelming, today. I figure that is annoying to you to hear, but Perl6 has had 16 years so when I say, "Its slower than Perl5 for a lot of stuff I do" you shouldn't dismiss that. When I say "Inline::Perl5 doesn't work at all for most of my code", that's a big deal. When Perl6 was announced we all bought into it because we were specifically promised Perl5 code would definitely work (there was some hedging on code that used XS, but we could understand that). When we read Perl6 is finished, and its clearly not, thats annoying. Because I have to explain that to my boss. Again. Before you blow off all the working Perl5 programmers that have feelings similar to mine, please keep in mind your most natural base of new users is probably us. Lets shoot for love and acceptance together by listening hard to each other, rather than arguing why how someone feelings are silly.

I truly believe that Perl usage would have declined anyway with or without the lengthy development period for version 6. The reasons have already been discussed at length on various forums. I'm saying this as someone who was concerned about the 5 to 6 reboot in approx 2001 and not overly interested in the new version for quite a long time after that. I'd already written off the idea that Perl 6 would ever appear, like many others, by the mid 2000s. Do not get me wrong, I never once wished the Perl 6 project ill, it just seemed unlikely that it would ever appear. Despite all that I just don't think Perl would occupy the pedestal it sat on for a time in the 1990s. That was luck as much as due to whatever special qualities that "Classic" Perl possesses.

> Lets shoot for love and acceptance together by listening hard to each other

Indeed. ♡ :)

I was particularly struck by:

> When I say "Inline::Perl5 doesn't work at all for most of my code", that's a big deal.

Have you already figured out why it doesn't and what if anything can be done to get it to work? If not, would you be willing to work with Perl 6 folk to try figure that out?

Raiph,

I only yesterday figured out how to run tests on Perl6 so once I have some rational bugs to report I will give them. I just hate to go on IRC and say "It doesn't work." However now I can see its something to do with subroutine attributes. Most of my applications use Catalyst, which makes heavy use of sub attributes, but I guess that isn't straightforwardly translated to Perl6. Looks like Perl6 has a version of Attributes but they do something totally different. Catalyst uses attributes as tagged metadata on a subroutine, seems like Perl6 version of this is more like decorators. maybe we could do something like 'sub action is_metadata(CATALYST_ATTRS) { ... } in translation. But I think that would need to get hacked into Inlin::Perl5 and I am nowhere near that level.

raiph,

Looks like I forget to hit send or something, I had a longer response but the short version is I don't know enough to give a rational but report, but I think it has something to do with Catalyst subroutine attributes and how Perl6 attributes are totally different. When I figure out more I will definitely say something because web applications that want async would be a great reason to port stuff from Perl5 to Perl6 but if I can't make an existing Catalyst application run thats a totally no go. Thanks for the reply -jnap

Leave a comment

About Zoffix Znet

user-pic I blog about Perl.