Un programa informático puede ejecutarse directamente sobre la máquina en cuyo caso serán un conjunto de ordenes directas sobre esta.
En este caso el programa será especifico de cada maquina y funcionara si es interpretable por esta.
Un programa , también puede ejecutarse sobre otro programa (bien sea maquina virtual , programa especifico , etc... ) y en este caso este segundo programa hará de traductor intermedio de manera que podrá ejecutarse en toda máquina que este esté corriendo, esto hace que los programas no sean dependientes de la maquina (también hay restricciones) pero por su contra pierde eficiencia.