Chad Perrin wrote:
> This brings me to a thought I've been having a lot, lately: that the
> future of compiled code will probably start looking in some ways more
> and more like interpreted code.  I don't see why we can't, relatively
> soon, have a compiler that produces a compiled executable of a dynamic
> language such as Ruby that does not require a VM or interpreter to be
> run (outside of the very loose definition of "interpreter" or "VM" that
> might include your whole OS in that definition).  The dynamic aspects of
> the language would be handled by the executable binary itself, rather
> than by an interpreter external to the program.
> 
> I'm not entirely sure how to explain what I'm thinking at this time so
> I'm sure I get my point across.  Hopefully someone who reads this will
> get where I'm aiming, and may even be able to help me clarify it.
Perhaps you're thinking along the lines of Lisp or Forth, where an
application is layered on top of the entire compiler/interpreter/runtime
package and then saved as an executable. As far as I can tell, there's
absolutely no reason this couldn't be done for Ruby. IIRC that's also
the way the Squeak Smalltalk environment works and the way Self worked.

Incidentally, Forth contains two interpreters and a compiler. A typical
Common Lisp contains one compiler and one interpreter. Right now, Ruby
is simple enough that what you're describing seems feasible -- a couple
more years of co-evolution with its users and it might not be. :)