[kw-pm] Hrm.

Arguile arguile at lucentstudios.com
Thu Jan 23 13:35:09 CST 2003


On Thu, 2003-01-23 at 13:59, Daniel R. Allen wrote:
> The only thing I'd add to Arguile's good summary- Parrot was written to
> execute bytecode for Perl 6.  It is expected to become the core of the
> perl 6 interpreter.  As quickly as the Perl 6 language definitions get
> hashed out, the parrot crew goes in and implements it in parrot.
> Maniacs.  :-) Though, Parrot is not perl6; it is a standalone virtual
> machine that can execute bytecode-compiled languages like perl6 will be,
> and like Python is currently.  No, that distinction isn't 100% clear to me
> either.
> 
> -Daniel

The distinction can be seen easily when you look at say, compiling Perl
down to bytecode to run on the Java JVM. Or think of different CPU
instruction sets.

First let's look at processors Let's take a PPC chip and, say, an nVidia
GPU. Both are processors but they have very different tasks. You can do
basic math on the GPU, it has such low level instruction on it. But the
main part of it's intruction set is high level graphic operations that
pertain to things like bump mapping, anisthropic filtering, refraction,
etc. In the same way you can do graphics on the RISC (Reduced
Instruction Set Computer) but I don't think anyone would argue that it's
a lot harder and slower when you have to build the entire system out of
simple math operations.

Second we'll get closer to our distinction by looking at compiling Perl
to run on Java's JVM instead of Parrot. Java has a specific way of doing
things, so when they wrote the VM to the instructions it provides and
the base data structures it uses are consistent with the style and type
of programs you write in that language. If we try to map Perl's
operations to it we'd have to create all sorts of complex little
objects, structs, etc. to do stuff as we went through even basic
operations. All though high level instructions that Java would use,
aren't the type of thing Perl would use (like running a program on a
GPU). And some of the basic things we do in Perl aren't done in Java, so
the basic intructions aren't there; while it's possible to build them
out of what _is_ there it's certainly not easy.

So now we look at Perl and Parrot. It should be pretty obvious by now,
Parrot is an VM for our class of language. It supports the type of
things we commonly do in Perl and Python in it's intruction set. You
could say it's optimised for it in the same way the GPU is optimised for
graphics. So Parrot isn't Perl6, but the intruction set in the VM
resembles the language class for quick/easy operation.


Did I miss anything?



caveat: Some high level analogies were used that don't fully mesh, but
hopefully it gets the distinction across




More information about the kw-pm mailing list