¿Cuál es la relación entre los compiladores y las máquinas de Turing universal?

Un compilador es específico, una máquina universal de Turing no lo es.

Un compilador es esencialmente un algoritmo de traducción. Pones un archivo de código en un idioma específico y escupe un archivo de código en un idioma diferente (generalmente de nivel inferior). La gente a veces se refería a toda la canalización de implementación como un compilador, pero eso es un nombre inapropiado. Un compilador solo hace una cosa. Traduce, y no interpreta, el código.

Una máquina de Turing universal es esencialmente una máquina que puede simular cualquier otra máquina de Turing. Y una máquina Turing específica ya es capaz de realizar una gama de tareas mucho más amplia que un compilador.

Una máquina universal de Turing podría ejecutar un compilador; de hecho, podría manejar un número infinito de compiladores diferentes. Un compilador es esencialmente un programa específico, mientras que una máquina universal de Turing es una máquina que puede ejecutar programas arbitrarios.