What to respond to "Perl 6 isn't Perl any more"

| 23 Comments

Now that Rakudo Star is out, and people are able to easily install and work with an early implementation of Perl 6, the pundits and cranks have to put aside their tired Duke Nukem jokes and talk about how different Perl 6 is from Perl 5. They gripe that everything is different and scary, "it shouldn't be called Perl any more." I'm tired of it, and it makes no sense.

I bet none of those cranks remember Perl 4 and the shift to Perl 5.

  • Perl 4 didn't have lexical (my) variables
  • and there were no scalar filehandles
  • and you couldn't pass filehandles as parameters to functions except with typeglobs
  • and the package separator was ', not ::
  • and really nobody used packages anyway
  • and there was no object support whatsoever
  • and that meant no modules to speak of
  • and you couldn't pass around regexes as scalars (qr// operator)
  • and on and on.

Even with all those differences, we survived. In fact, we thrived.

The Pink Camel, first edition of Programming Perl, covering Perl 4, was only 450 small pages long, and a third of that was a section called "Real Perl Programs." (Imagine! Actual programs!) The Blue Camel, the 2nd edition, covering Perl 5, was over 600 bigger pages.

You know what I thought when I got my copy of the Blue Camel? It wasn't "Boy, this sure isn't Perl any more." No, I thought "Holy shit, look at all the stuff I can do." I couldn't even read the book straight through, because I kept skipping around, my mind amazed at the possibilities in front of me.

There are those who will read this and say "Yeah, but Perl 5 could still pretty much run any Perl 4 program, but Perl 6 won't be able to run Perl 5." And that's true. And it's irrelevant.

Perl 6 is still Perl, and is still called Perl, for many reasons, but only one that matters.

Larry Wall says that Perl 6 is still Perl.

Larry has his reasons. Some he's mentioned in past State of the Onion addresses. Maybe you don't agree with his reasons, or his decisions. But it doesn't matter one damn bit what you think. It's his decision. All arguments are a waste of time and brain cycles.

So when someone says "Perl 6 should have been named something else," I suggest a response of "OK, whatever you say. Now, isn't it cool that you can use list reduction to say my $sum = [+] @list;?"

23 Comments

With greatest respect to everyone who's worked on Perl 6 for the last ten years, it's not the cranks' fault that the references to Duke Nukem forever are "tired"...

Also, anyone who says it's not Perl is clinically insane. It's Perl on steroids, Venom, the Super Soldier Serum, the metagene, a radioactive spider byte, gamma radiation, a rack full of chemicals hit by lightning, a glowing green rock from an exploded planet, and Jolt. With teeth. I love it!

Yes, yes it is.

Now isn't it cool that you don't have to worry about dependencies to use a great object system?

With greatest respect to everyone who's worked on Perl 6 for the last ten years, it's not the cranks' fault that the references to Duke Nukem forever are "tired"...

Of course it's their fault. They're the ones who make the comments, and continue to. Doesn't matter how long Perl 6 has been in development.

Yes, perl6 looks nifty but it will be a long time before it's as *useful* as perl5.

What makes perl really special among all other languages is CPAN. CPAN is the crown jewels of perl, the envy of other languages. The fact that the perl community, in their infinite wisdom, did not just build applications (like is so prevalent in PHP and ruby) but wrote functional libraries that can be assembled together to create powerful apps very quickly *was genius*.

Now the fact that perl6 can not take advantage of the 15 calendar years (10's of thousands of man years) of CPAN development, is a major hurdle for general acceptance.

At least for me...

...is a major hurdle for general acceptance.

Yes, we know. Everyone knows.

Perl 6 allows you to refer to subroutine arguments both positionally and by name, with defaults.

It would appear that you don't remember the Perl 5 transition very well either, because the qr// operator was introduced in 5.005, not 5.000.

Anyway, this comparison betrays a key item in the nature of the changes in Perl 5 and Perl 6: Perl 5 was mostly backwards compatible.

Even now I can check out the test suite for perl-1.0.16 and run it with 5.13.2. It passes 264 of those tests (most of them), Python, Ruby and Rakudo pass 0.

That's generally what people mean by "not the same language", i.e. that the source code isn't (mostly) compatible anymore, and that you need some sort of FFI to go between the two. Other examples of this include MacLisp and Emacs Lisp, C and C++ etc.

Anyway, having said that this whole argument is mostly a semantic difference in how a "language" is defined. It's like people arguing over whether Chinese is really multiple languages, and if it's not whether that doesn't mean by extension that e.g. German and Dutch are the same language.

It would appear that you don't remember the Perl 5 transition very well either, because the qr// operator was introduced in 5.005, not 5.000.

So what?

No, really, so fucking what?

Here's another awesome use of reductions:

my $is_sorted = [

No, really, so fucking what?

Your posting is pointing out things that changed between Perl 4 and the introduction of Perl 4. One item in that list didn't belong, and it was worth pointing that out, if only so that that factual inaccuracy wouldn't be propagated.

my $is_sorted = [

I suspect that got cut off.

Anyway, to get to the heart of the matter, I think your proposed reply to "Perl 6 isn't Perl any more" misses the point. Some people don't think Perl 6 is Perl anymore because presumably their definition of what a language is differs from yours.

The right reply to that isn't that we argue in perpetuity past each other what definition of language is right. That'll never get anywhere.

Without going into the actual issue, behaviour like calling people "cranks," "clinically insane," or responding to people's view's with "so what?" is the sort of thing that drove me away from Perl 6. Do with this information what you want, but Perl 6 won't be "ready" for me until the community is ready. And that means being able to take some criticisms, even if they don't like them.

I was more referring to:

It would appear that you don't remember the Perl 5 transition very well either,

Your discussion of it is exactly my point. It doesn't matter when qr// was introduced. It doesn't matter what the definition of a language is.

Larry says it's Perl 6. Therefore, it's Perl 6.

And the code is:

my $is_sorted = [<=] @list;

I am gonna use "Perl6 is Perl on Super Soldier Formula" from now on! :-)

Perl 6 won't be "ready" for me until the community is ready.

That's fine. I understand and respect that. My point is that discussing it with you (or anyone) is a waste of time. We spend far too much time discussing at the expense of doing.

Does doing it require rudeness?

I found brian d foy's article at http://blogs.perl.org/users/brian_d_foy/2010/08/how-to-write-about-perl-6.html to be a very good read, and it gave me some hope.

I like the syntactic sugar that comes with Perl 6, but I first got interested in Perl 6 because you could sanely (and in a specified manner) extend the sugar. There's lots of places where extending Perl 5 is harder than it could be, or where it is impossible at all. From my understanding the grammar should fix that. This will allow a completely new ease and flexibility for API design, that's what I'd be interested to see how it's supposed to be done. Or rather, what the Perl 6'ish way to do it is.

I hope reading this didn't waste too much time for anybody.

Does doing it require rudeness?

Absolutely not, and I'm sorry if I'm coming off that way. Not my intent.

My point is that discussing unchangeable decisions like what Perl 6 should be named is a negative use of time.

I agree that the ship has sailed on that one. But nonetheless, various people have expressed this as an opinion, and often received rather harsh response. Even if nothing will be changed at this point (and for good reason), acknowledging that the opponent in an argument does have a valid point usually won't hurt.

Think of this out of the context of a Perl community site, and imagine which response will be more productive: "Because Larry wants to call it that." or "While the difference in the languages might indeed qualify it as a language separate to the historical Perl version timeline, since it was a community effort it gradually changed in that direction. It started out as Perl 6, but became much more, and the name was stuck already."

Both statements are true, but if I didn't know the answer already I don't think the first one would not really help me understand anything.

I just think, and this doesn't only count for Perl 6, but for Perl 5 as well, that a smaller number of thought-out responses that respects the others point of view (if it isn't a simple troll, but the grey line on that is very wide on the internet) is worth more than trying to repeat the same short catch-phrases-like answers.

I like your longer version, with one addition. "And it's not going to change."

The people who want to argue and debate are a negative pull on us all.

I'm sorry, but I totally understand why people want to call Perl6 a different language. As a perl programmer that learned perl in the mid 90s and has been actively coding in it ever since, I can't read and understand perl6 code.
When I was first learning perl I had to maintain a large amount of perl4 code. Where the transition between perl4 and perl5 definitely felt like the same language with a ton of awesome added features, the transition from perl5 to perl6 feels like a complete overhaul. Which, from my following of the development, it is. Over the years I've repeatedly tried to get into understanding perl6 code, but it seemed to be a constantly moving target.

Anyhow, perhaps you're too close to it to see it, but perl6 is incredibly confusing and overwhelming for even the most experienced perl5 programmer.

It's only a negative pull if you turn the conversation in a negative direction. I believe most people won't have a problem with the reasoning as long as they feel they're opinions are heard and respected. Compatibility with a language isn't only based on technicalities, the community and the user have to be compatible as well. If one wants to be welcoming, you'll have to accept that people will have different opinions.

If I can't even say that I think at some point a new brand name would have helped both the Perl 5 and 6 communities without being labeled a "crank" or "clinically insane", how long before I have another opinion that's not compatible? There's nothing negative in that opinion, and it contains no judgement. I'm not even saying I would've done it differently where I in that place. It's just that without reflecting on our past, how should we learn from it?

If your intention was not to be rude, how did you think the word "cranks" would be understood?

You know, I really think everyone would benefit if we dropped the sequential numbering scheme and adopted RakudoPerl as the new official name for "Perl 6".

Then we could have ClassicPerl, which is the current Perl 5 as we know it. And so the regular Perl name would be freed to allow for, say, making Modern Perl modules a core feature in 5.14.

"Perl 6" would still be Perl while at the same time it also had a new name, so everyone could be happy.

You know, I really think everyone would benefit if we...

This is exactly the sort of discussion that I was referring to in the original article. There is zero benefit in this discussion. It's not going to happen.

Perl 6 is the language.

Rakudo is an implementation of the language.

Perl 5 will never not be almost 100% backwards compatible with Perl 1, so "freeing up a version number" is a silly discussion.

And isn't it great that Perl 6 grammars have proper scoping and encapsulation and core support, such that external tools can use them directly for things like syntax highlighting and parse tree transformations?

I think if parrot will be able to run Perl5 code, this discussion will be pointless. And, of course, having the ability to mix code... but I suposse this it's not achievable

Leave a comment

Job hunting for programmers


Land the Tech Job You Love, Andy Lester's guide to job hunting for programmers and other technical professionals, is available in PDF, ePub and .mobi formats, all DRM-free, as well as good old-fashioned paper.

Contact