0
$\begingroup$

To describe the implementation of a dynamic programming language, I have seen the terms "Runtime" (e.g. Security transparency in the Python runtime), "Virtual Machine" (Python Virtual Machine (PVM), YARV (Yet another Ruby VM)) and "Interpreter" (Matz's Ruby Interpreter) used. JavaScript also uses the word "Engine".

IMO the word "Interpreter" strictly describes only part of a language implementation: that which steps through and executes bytecode. "Interpreter" excludes other parts of the implementation, such as a garbage collector.

Are the other terms, "Runtime", "Virtual Machine" and "Engine" synonymous with the language implementation as a whole? Are these terms interchangeable?

$\endgroup$
2
  • $\begingroup$ I'm quite sure this is offtopic here, but not sure whether to send it to Stack Overflow or Software Engineering. Tending towards the latter. Opinions? $\endgroup$
    – Raphael
    Commented Dec 11, 2017 at 16:59
  • $\begingroup$ I'm sure PL implememtation is part of PL, which is on topic. I'm not sure if this is a question mainly about the theory of PL implememtation, though. Anyway the answer is NO: C, Go and Rust have runtimes but no VMs. $\endgroup$
    – xuq01
    Commented Dec 11, 2017 at 20:48

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.