Why should I use VM, like Parrot, for a dynamic language I use (Python, Perl, ...) if I already have an interpreter?
First, if you're starting a project, then you may not already have an interpreter.
However, assuming you have an interpreter and are considering whether to add functionality to it or rewrite it to use Parrot, the tradeoffs that come to mind are:
- In general, Parrot is probably better tested than the interpreter in question (better optimizer, better garbage collector, etc.)
- In general, Parrot's developers know more about cross-platform issues than run-of-the-mill programmers
- In general, Parrot has solved most problems you're likely to run into
- Parrot was designed with complete generality in mind, and that added a ton of complexity; you may not need the extra generality
Personally, Parrot's optimizer (and register-based design, largely to make optimizations easier) and well tested cross platform codebase would be enough to convince me.