Over interpreter - compiler:
In principe zijn heel veel componenten van een interpreter gelijk aan die van een compiler. Een interpreter heeft een parser nodig, een interpreter zal vaak wat aan type-checking doen, een interpreter zal waarschijnlijk desugaren en misschien heeft de interpreter zelfs wel een soort intermediate representation waarna een geinterpreteerd programma kan worden omgezet. Dit zijn (vaak) ook allemaal componenten van een compiler. Waar een interpreter stopt, waar de compiler door gaat verschilt per interpreter. Soms zullen ze wellicht zelfs doorgaan tot de allerlaatste stap van een compiler

.
Een interpreter kan ook best nog verder gaan door gewoon voor native compiler te gaan spelen. Als je de JVM een interpreter zou willen noemen, zou een JIT compiler dat bijvoorbeeld doen.
Zelfs hier is de grens dus onduidelijk

.