Sunday, May 18, 2008

Interoperability Happens - Clearly Thinking... whether in Language, or otherwise

Interoperability Happens - Clearly Thinking... whether in Language, or otherwise: "it's not a VM, it's an interpreter"

This comment is about Erlang. Yet, lately my thinking has been an interpreter is a VM.

1 comment:

Barry Kelly said...

I agree, up to a point. I've written up my own definition of virtual machine recently on my own blog, in part in response to this kind of argument. A VM is a software implementation of an abstract machine with certain idealized properties.

However, an interpreter can make a stronger claim to be a VM if it can be independently targeted by multiple languages, or the VM can be implemented on different target architectures, such that the VM definition (note definition, not implementation) itself is the pinch-point for portability of language or target architecture, rather than modifying the language's compiler etc.

Where the compiler starts and the VM begins can be blurred in dynamic languages, of course.