I'm actually somewhat surprised at how little Parrot is tied to Perl.
Most of the active developers seem to be working on parrot for its
merits as a VM. Perl6, for me at least, mostly provides evidence that
this isn't just an exercise in intellectual masturbation, as Simon
would say -- there will be at least one real language that targets it.

But even if it's tied to Perl less than one might expect, I don't
disagree that it still smells strongly of Perl. Which isn't
surprising, given its origins. The reason why it came into existence
was Perl6; the early developers thus came from the Perl community, or
at least the Perl-using community, and so implemented the supporting
build system etc. with Perl; and the design of many things,
particularly the more incidental things such as specific PMCs, was
done from a Perl-centric perspective. Dan's designs tend to be more
language-independent than others', probably because he has language
independence as a stated goal while the rest of us rabble tend to only
worry about getting specific concrete examples to work, and those
examples are most often based on Perl.

But let's remember again what the point of Parrot is, other than
providing a way of running Perl6 code. To me, it all comes back to
decoupling a VM from a language's compiler, which provides the
following benefits:

 - The two to be worked on independently, allowing more freedom to
improve each without worrying about backwards-compatibility or
incompatible development philosophies.

 - It's easier to find experts in just one of the two components,
rather than requiring an expert in both VMs and the target language.

 - Optimization is easier, since performance problems can be easily
isolated in either the VM or the compiler.

 - Multiple languages can target the same VM, so more people are
motivated to improve the VM (and thus hopefully improving all
languages). But that's what we're talking about.

These advantages exist equally for languages other than Perl, but all
languages but Perl6 have one thing in common: they already have a
perfectly functional runtime execution engine of some sort. Not only
that, but they have an established group of experts for that runtime
engine. And those are very good reasons not to switch. That means that
Parrot has to offer some pretty convincing practical benefits, not
just theoretical ones. And any perceived obstructions, real or
otherwise, are going to make switching much less likely.

If I imagine that I am a Python developer digging into Parrot for the
first time, this is what I'd see: first, development is done on a list
named perl6-internals. Hmm... I wonder how Perl-centric it is? That
address is going to make it a lot harder to convince myself that
Parrot isn't fundamentally bound to Perl. (The @perl.org doesn't
bother me; if I have that much of a kneejerk reaction to the word
Perl, I'm not going to touch Parrot until you drag me to it, kicking
and screaming.)

Second, the build system is written in Perl. Okay, that will be a
nuisance, but I don't expect to work on that anyway. As long as it
does its job, I'm happy, and if it doesn't then I'm not going to waste
any time trying to fix it -- my time is better spent elsewhere, far
away from Parrot.

Third, the whole thing just seems too immature to be a realistic
target yet. These PMC things sound fine, but my language requires a
somewhat different set of operations and I can't find any working
examples of arbitrary method invocation. It runs a tinderbox, but some
machines have still been failing for a long time. The currently
existing PMCs have strange gaps and tangles where a low-level one
calls a higher-level one (and that higher-level one often has Perl in
its name!). The documentation seems to be written for someone else who
already understands more of Parrot than I do. Et cetera.

In summary, I think we should try to remove the obstructions, partly
because it's the right thing to do and partly in hopes that we'll be
able to get more eyes and hands working on Parrot. But the main focus
should be continue to make Parrot as robust, fast, and flexible a
target as possible, because in the end that's the only thing that will
persuade people to switch. And I'm guessing that the best way to that
goal is to use Perl6 as the driver, at least until something else
shows up, because that's the only way to derive realistic requirements
for what needs to be accomplished.

Reply via email to