Perl 6 Gets Beta Compiler, Modules and an Advent Calendar (thenewstack.io)
An anonymous reader writes: A "useful and usable distribution of Perl 6" was released Saturday, a new beta version of the Rakudo compiler to support the coming production release this Christmas. And there's already 467 Perl 6 modules on the new archive at proto.perl6.org (though Perl 6 will also be able to load modules written in other languages). "Perl has a huge community of avid users that continues to thrive in spite of detractors," says one developer, pointing to new applications for big data, in a new article reporting that over one million people have downloaded ActivePerl's own Perl distribution just in 2015. And this week also saw the release of two new "Advent Calendars" of programming tips, one for Perl 5 and one for Perl 6.
As somebody who has used Perl since Perl 3, I've been following the Perl 6 disaster on and off since its very beginning around 15 years ago.
As somebody who also relished the fantastic Perl and CPAN communities of the 1990s, I'm sad to say that I've generally been quite ashamed of the Perl 6 community.
First and foremost is their inability to get anything done. Seriously! They've fucked around with so many incomplete implementations now that I've lost track. Rakudo is just the latest failure in a long string of Perl 6 failures.
Second is the way they've handled criticism of Perl 6. I see people on Reddit and HN make good points about how awfully Perl 6 has been handled, and these people are savagely downvoted by the Perl 6 community.
Third is the way they claim that Python 3 was a disaster, when the opposite is clearly true. Python 3 improved Python 2 in important ways, it's well supported by libraries, it sees frequent updates and improvements, and most importantly they've been able to deliver stable production-usable releases for years! Python 3 has been a resounding success in a fraction of the time it has taken Perl 6 to go absolutely nowhere.
Fourth is the way that Perl 6 isn't actually that much of an improvement over Perl 5, assuming that it actually is an improvement at all. This is difficult to evaluate because of the lack of reliable, complete implementations.
Fifth is the way that they've tarnished the reputation of Perl as a whole. Now when people hear the name "Perl" they think of Perl 6 and its 15 years of screwing up. They no longer thing of the scripting language that, while maybe not the prettiest, was damn expressive and very effective to use. "Perl", which once evoked a sense of pride in many people now evokes a sense of disappointment and shame.
Even if the language does turn out to be better than Perl 5, I don't think I'll even bother using it. I just don't want to have to deal with the people who make up its community!
I've used Perl since the first release, gotten pretty good at it 5-6 times over the years, and loved it for it's capabilities. But I've also become disgusted with the whole idea of There's More Than One Way to Do It. What TMTOWTDI means in the real world is that, if you have to maintain someone else's perl script, you're in for a world of hurt unless you're a guru at it.
I, too, once loved Perl for its capabilities. Then, a couple of years later, I found Python. I haven't looked back. It's remarkable that two languages which are fairly semantically similar (you can do most of the same things in about the same way) have such converse philosophies: Perl has "There's More Than One Way to Do It" and Python has "There should be one-- and preferably only one --obvious way to do it."
Even before I found Python, I became disenchanted with Perl for the fact that I found that I had to a comment on nearly every line of my own code to be able to read it later - much as I had learned to do with assembly language. In contrast, I use comments very sparingly in Python because it reads so beautifully.
Therefore, it's hard for me to imagine why the world would ever need such a thing as Perl 6 - and particularly why the world was supposed to wait 15 years for the privilege. Oh, I forgot...you get to use braces...
Perhaps it was momentary insanity, but I expected the syntax of Perl 6 to be more readable and less obstuse. Looking through the Perl 6 advent calendar, I noticed that, somehow, the people working on Perl 6 seem to have made it even worse.
Perl will always be the ugliest language in the world.
Perl isn't meant to be simple, it's meant to be expressive.
A simple language is wordy, requires a lot of typing and keywording to express a thought. Cobol has things like "move a to b", which is simple and readable, but requires a lot of typing. Basic has things like "for index = 1 to 10 step 2" which is very readable, but requires you to type out "step" and "to".
Perl is meant to be terse and expressive, which in practice means that things you typically want to do in programming can be called out in short sequences. Larry took a look at all the things that programmers want to do and encapsulated them in the syntax as a sort of short hand notation. Sort of like how emacs macros do complex things tersely, which could also be done with a bunch of keystrokes.
Perl is also a non Von Neumann language, meaning that it does not reflect the underlying Von Neumann architecture. It focuses on functionality instead of the machine, and as a result things like file operations are part of the syntax and not a library call.
For example, variables do not represent memory areas like they do in C. This allows Perl to do things like automatic allocation and garbage collection, and be unicode compliant. (Characters are not specifically 8-bit entities in Perl.)
This means that a lot of what you do in Perl is completely portable across architectures. File I/O and filename searching are part of the language, and thus not architecture specific.
Sometimes these are important. Being able to run on multiple architectures, or getting a prototype up and running quickly, or not having to debug allocation errors makes the act of programming more efficient.
...but at the cost of requiring the programmer to know a more complex syntax.
I found that I had to a comment on nearly every line of my own code to be able to read it later
Yep...I go back and look at old perl stuff I wrote 4 or 5 years ago, and I swear to god it looks like line noise. I couldn't debug one of my own programs now to save my life.
Just cruising through this digital world at 33 1/3 rpm...
After observing above that Perl and Python have converse philosophies on the point of "There's more than one way to do it," I realized that a Zen of Perl could be formulated by creating the Zen of Python's evil twin:
Ugly is better than beautiful.
Implicit is better than explicit.
Complex is better than simple.
Complicated is better than complex.
Nested is better than flat.
Dense is better than sparse.
Obscurity counts.
Special cases aren't ordinary enough to follow the rules.
Although obtuseness beats clarity.
Errors should sometimes pass silently.
Unless you tell them to die.
In the face of ambiguity, refuse the temptation to delineate.
There's more than one way to do it.
Although those ways may not be obvious at first unless you've consulted the manual.
Fifteen years is better than three.
Although never is often better than *fifteen* years.
If the implementation is hard to explain, it's a good idea.
If the implementation is easy to explain, it may be a bad idea.
Namespaces are one honking good idea -- let's use as many as possible!
Presumably, this applies to Perl 6 as much - if not more - than to Perl 5. Otherwise, exactly what sort of "improvement" is Perl 6?
(with apologies to Tim Peters for applying a little Artistic License to his fine work.)
It's funny how everyone here says "No one is going to try that". Actually, Perl 6, if it releases by Christmas, will probably be the hottest language around in the next year or two. And I'm not necessarily saying that because of it's merits (which I have not definitively assessed one way or the other). I'm saying that because developers are pretty much all about "Hey new shiny thing over here!".
It seems like pretty much every time a new language drops there's a stampede to it by developers just because its new. Hey, Ruby on Rails! Hey, there's C# over there! Hey, F#! Hey, Erlang! Hey, Javascript framework of January! Hey, Javascript framework of February! Hey, Javascript Framework of the second half of February! Whoa look, it's Coffeescript! ......... Hey, it's Perl 6!
Some of these of course are decent languages and frameworks and have staying power... others, perhaps not as much. We'll know after five years or so where Perl 6 is going to end up. But don't underestimate the ability of developers to stampede at something for no other reason than that it is new. I expect considerable chatter at some point just because it's the new kid on the block.
Beware of bugs in the above code; I have only proved it correct, not tried it.