¿En qué se diferencia un intérprete de un compilador?