Wilson Bilkovich
9/28/2007 3:48:00 PM
On 9/27/07, Dave Rose <bitdoger2@yahoo.com> wrote:
> ...just curious...how does Rubinius 'boot' itself up and how does
> translate ruby into bytecode.... i know a little about parsing and
> compilers ... but what makes rubinius different? i hear it is actually
> written in ruby... but that's circular? like MC Ecsher the hand drawing
> a hand?....tia dave
Basically what you do is you write a first implementation using
language A. Then you use that implementation to create an 'artifact'
that is capable of running language B. If you do this carefully, you
can then discard everything you wrote in language A.
For example, Pascal was first implemented in FORTRAN. Once that
worked, they rewrote the compiler in Pascal, and away they go.. etc.
Instead of an Ecsher drawing, it is more like using scaffolding to
build a house. When you are done, the house is made entirely out of
"house". Heh.
In answer to your second question.. Rubinius isn't really 'different'.
It uses only time-honored implementation techniques. They just happen
to be techniques that have not often been used to implement dynamic
languages.