Gmane
Favicon
From: Allison Randal <allison <at> perl.org>
Subject: Re: Is Parrot 1.0 too late?
Newsgroups: gmane.comp.lang.perl.perl6.internals
Date: 2007-04-25 06:00:31 GMT (2 years, 10 weeks, 1 day, 22 hours and 52 minutes ago)
Nikolay Ananiev wrote:
> 
> So, is one of parrot's biggest strengths gone? Are we too late?
> Why would the developers use Parrot instead of JVM/CLR/Mono? 

We're certainly pleased that we kicked off a revolution in virtual 
machines, and that others are beginning to catch on to the fact that 
they'll have to support dynamic languages to compete. But, it would be a 
little silly to throw in the towel just when others are beginning to 
follow your lead. (And I do mean beginning. They're making great 
strides, but I still hear strange comments like "We support all features 
of dynamic languages. Of course some features, like multiple 
inheritance, may be slow, but we don't encourage the use of those 
features." from the JVM team.)

The plan to run Perl, Python, PHP, Ruby, etc. is not the only innovative 
feature of Parrot. To list a few:

- PGE provides parsing tools that are light years ahead of what's in 
common use today (what's commonly used today hasn't seen much in the way 
of technological advances in the past 20 years).

- TGE is a powerful tool for manipulating trees of data, like the output 
of a parse, or an abstract syntax tree (think of it as XSLT on steroids).

- Those parsing and transformation tools are valuable both for writing 
compilers and for data processing tasks (handling database output, 
screen scraping, combination and modification of Atom streams in an 
AJAXian way, etc.), giving a big boost in ease of use for both areas.

- Parrot is a register-based virtual machine instead of stack-based like 
.NET, Mono, JVM. Register-based machines require fewer instructions to 
complete the same operations (no need to push and pop the stack), 
eliminating some unnecessary overhead. JIT-ed code is also 
register-based (since the actual machine under the virtual machine is 
register-based), so the register-based bytecode makes that 
transformation simpler.

- Parrot moves beyond the fragile stack-based control flow common to 
virtual machines today, to a continuation-based control flow. (I can 
recommend a few good books and articles if you're curious.)

While the other VMs are catching up to supporting the features of 
dynamic languages from 10-40 years ago, we plan to open the way for a 
whole new breed of dynamic languages. Will others follow our example? I 
  won't complain if they do. "Imitation is the sincerest form of flattery."

Allison