A lot of posts have been cropping up recently about Perl 6 and the common thread seems to be "It's taking soooooooo long!" I'd like to explain, as a sometime contributor, why I think the process is taking so bloody long. In no particular order ...
- There's two projects - the Perl 6 language and the Parrot VM. The more ambitious project, in terms of implementation, has always been Parrot. It's been almost 6 years since Dan started it and it will probably be another 2-3 years before I would build something on top of it.
It's taking so long because you only get two of "Fast, Good, Cheap". Since anything associated with Perl has to be Good, it's a Fast-Cheap scale. There's about 10 developers, nearly all of which are volunteer, with another 20-30 testers. To me, that's high on the Cheap factor, which means that things are going to be very slow. You're more than welcome to help fix that. I'm sure that Parrot would be avaible in 6 months if all the developers were able to work on Parrot as their fulltime job. All you need to do is pay them. IMHO, all the developers are worth at least US$100/hr.
- But, that doesn't explain what's taking an average of 250 development hours/week for 9 years. (For the math-impaired, that's 7500 development hours/year, or 67_500 development hours total.) Well, here's a partial high-level list of the requirements on Parrot (in no particular order):
- Fast
- Reliable
- Runs on every OS known to man
- As parsimonious with RAM as possible
- Unicode aware
- Handles continutations and coroutines and treats functions as first-class data
- Is threaded
- Is garbage-collected
I don't know about you, but that's a very tall order. In comparison, the Java VM (which started 15 years ago and had 13 fulltime development staff for several years) only achieved half of those requirements after 10 years of development and use.
- Perl 6 isn't about fixing Perl 5's problems. Well, it is, but not within the Perl 5 framework.
The issue is that Perl 5 is too successful. P5 is over 10 years old, but Perl itself is not even 20. That should say something about how good Perl5 is. For something to replace that, it has to be seriously better. Like, radically better. Some of the features in Perl 6 I'm excited about (in no particular order):
- Lexical grammar changes
- Everything is an object, but only if I want to think of them that way
- This means code is an object that I can manipulate
- tie and overload both go away
- I can change both the syntax and semantics of the language within a lexical scope
- I have access to a real OO metamodel
That's some serious power! Don't worry if you don't understand the words ... just bask in the knowledge that CP6AN is going to seriously rock.
- Yet, with all that power, P6 will still provide all the scripty-doo and one-liner power that you've come to expect from P5. In fact, you will still be able to write pure P5 code within P6. Name another language that's completely and 100% backwards compatible after a major version upgrade.
- Perl6 is exploring some uncharted territory in terms of programming theory. The P6l mailing list happens to be very near the forefront of OO metamodels, roles/traits/mixins, parsing theory ... the list goes on. It's not like all the theory has been laid out and P6l just has to cherrypick the features it wants to add. P6l is creating some of the theory as it goes along! If that doesn't give you the warm fuzzies, I don't know what will.
In short, Perl 6 is taking so long because it has to. If it didn't, then it wouldn't be a worthy successor to Perl 5. You do want a worthy successor, don't you?