Una máquina abstracta se define como un procedimiento para ejecutar instrucciones en algún lenguaje formal sin necesidad de una implementación física. Las máquinas de Turing son ejemplos de máquinas abstractas que no pueden implementarse en hardware real. Una máquina virtual es una máquina abstracta para la cual existe un intérprete.