The Perl 6 Advent Calendar
An anonymous reader writes "Larry Wall wasn't joking when he said that Perl 6 would be ready by Christmas. Perhaps not this Christmas, but that hasn't stopped a group of people (including head Rakudo developers Patrick Michaud and Jonathan Worthington) from putting together an Advent Calendar, featuring one cool Perl 6 feature every day until Christmas. Topics currently covered include how to get and build Rakudo (the most actively developed and progressed implementation of Perl 6) and the new Metaoperators. For those wondering when Perl 6 will be finished: Rakudo will be having its official 'production release' (dubbed Rakudo Star) April 2010."
... is Duke Nukem Forever is being rewritten in Perl 6.
Computer Science is all about trying to find the right wrench to bang in the right screw. -T.Cumbo?
from an outsider's view (I have NO perl experience, and i intend to die like that if at all possible) it seems like perl has slowly moved from an ubiquitous scripting language to a fringe research project over the last few years. it reminds me somewhat of the pascal/modula-2/oberon phenomenon. do perl afficionados think that this new version will enjoy the success that its predecessors have had?
I'd worry more about the continuing relevance of Perl in a niche which has come to be dominated more and more by PHP (eww!) and Ruby in recent years. It's not going away, certainly, but its relevance to the future of computing may be somewhat limited despite its technical merit.
The World Wide Web is dying. Soon, we shall have only the Internet.
If you compare the Perl6 timeline to the Haskell timeline, you'll see that things aren't really going all that slowly. Building a good implementation of a complex programming language takes time.
-- The act of censorship is always worse than whatever is being censored. Always.
More than that--- Perl 6 was announced 9 1/2 years ago! Even O'Reilly's Perl 6 Essentials is now 6 1/2 years old, and some Perl 6 books are into 2nd editions.
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
Perl 6 is a new language, not just an upgrade. Perl 5 has not been neglected, and continues to receive updates and new features (some of them originally developed for Perl 6). The plan is to continue Perl 5 support and development indefinitely, irrespective of the status of Perl 6. And of course Perl 5 has its own advent calendar, which this year focuses on interesting stuff you can do with various CPAN modules:
http://www.perladvent.org/2009/
I do most of my coding in perl 5. Perl 5's implementation is rock-solid, and CPAN has an absolutely fantastic selection of useful modules for perl 5.
If I was going to change to something other than perl 5, I would need some motivation. The clearest motivation I can see is that OOP in perl 5 is ugly and bolted on.
With that motivation, I have dabbled in ruby enough to write one nontrivial app. The thing is, perl 5 still beats the heck out of ruby in terms of implementation and libraries. As an example of this, in my ruby app I wanted to use some regex features that were not available in ruby 1.8, so I ended up using ruby 1.9. But ruby 1.9, and its regex engine, are relatively raw and buggy, and I ended up having serious problems that I had to work around. (Yes, I submitted a bug report. No, it hasn't been fixed yet.)
AFAICT, the main advantage of perl 6 over perl 5 is the same as ruby's main advantage over perl 5: OOP is implemented in a nicer way. The thing is, the disadvantages are even more magnified, because it's so raw and incomplete.
My current reaction to the situation is to plan on continuing to code in perl 5 until, say, 2015, and then check back to see how much ruby and perl 6 have improved by then.
Find free books.
yes, but you still haven't explained why perl 6 is taking so long
Well, the first line of the first Google hit for 'Perl 6':
http://dev.perl.org/perl6/
says:
"Perl 6 is a new language. Perl 5 and Perl 6 are two languages in the Perl family, but of different lineages. There is no current release schedule for Perl 6."
Some people, of course, may still find this confusing. These people should use Python :-)
A longer answer (together with several chapters of new Perl 6 book written by some of the developers) is here:
http://cloud.github.com/downloads/perl6/book/book-2009-11.pdf
"Some might ask, 'Why call it Perl if it's a different language?' Perl is more than just the vagaries of syntax. Perl is philosophy (there's more than one way to do it; easy things easy, hard things possible); Perl is custom (unit testing); Perl is architectual edifice (Comprehensive Perl Archive Network); Perl is community (perl5porters, perl6-language). These are things that both Perl 5 and Perl 6 will share to varying degrees. Also, due to Perl's habit of stealing good ideas, Perl 5 and Perl 6 will converge in some areas as Perl 5 borrows ideas from Perl 6 and vice versa."
'The other question is that there are no implementations of the standard yet...'
The Rakudo guys have now committed themselves to a useful/usable release (if not a complete implementation of everything in the standard) in Spring 2010 (the target is April):
http://use.perl.org/~pmichaud/journal/39411
They intend this to be a release which 'application writers will feel comfortable enough to start using in their projects'.
This probably helped:
http://news.perlfoundation.org/2008/05/tpf_receives_large_donation_in.html
Here's where they are now:
http://rakudo.org/status
http://github.com/rakudo/rakudo/blob/master/docs/ROADMAP
We've released a new version of Rakudo Perl 6 every month since December 2007. That's 24 months in a row.
how to invest, a novice's guide
Perl is one of those languages that most people meet in passing because someone else has hacked up a script to get something out of some file. Which is sad, because understanding what makes Perl different from other languages and why it is often a better choice for wrangling data isn't going to be obvious in one lousy foreach search-and-replace hack. And most people exposed to perl scripts in this manner fall over on the difference between scalar and list context and never discover why perl expressions like $lookup{$term}++ will save them years of work, while making their analysis scripts go faster.
I write Perl modules day in, day out to cope with processing DB2 internals in an attempt to model and improve them. Object-oriented Perl makes this easy, fast and effective. Closures (which I'm sure aren't understood by 90% of the Slashdot community) back this up being able to create anonymous subroutines with data attached which can be processed later. Perl is also effective for parallel task analysis - I have modules for jobserving many tasks across multiple machines and Perl threads make it easy to fire a task off while something else is done.
Perl is an essential part of data analysis for any serious volume of unstructured data. However, I'm not unhappy that it is little understood. Perl makes in the impossible merely hard. If everyone knew how to leverage Perl, I wouldn't have so much fun.
Cheers,
Toby Haynes
Anything I post is strictly my own thoughts and doesn't necessarily have anything to do with the opinions of IBM.