¿Por qué las máquinas de Turing son un equivalente teórico tan prolífico de lo que puede hacer una computadora real?

En realidad no lo son.

Se pueden usar para probar ciertas cosas sobre algoritmos e idiomas, pero también hay cosas que se pueden hacer en computadoras modernas que no se pueden hacer en máquinas de Turing.

Tome esta simple declaración de JavaScript:

setTimeout (() => console.log (“hi2”), 4000)
console.log (“hi1”)

Este código imprimirá “hi1” en un registro, espere cuatro segundos y luego imprima “hi2”. Esto implica una secuencia de salida y un reloj.

Puede definir una sección de la cinta para que sea una secuencia de salida, pero a menos que haga trampa y agregue un proceso externo que modifique una ubicación de cinta en tiempo real (o haga trampa y defina instrucciones y la cinta busca tomar cantidades conocidas de tiempo real) No puedes conseguir un reloj.

También en JavaScript, podría haber puesto en cola una docena de consultas web asincrónicas y hacer que devolvieran los resultados de forma asincrónica. Nuevamente, si la memoria asigna el hardware de la red a la “memoria” de la cinta, puede engañarlo. Muchas computadoras reales usan mapeo de memoria para lograr esto, por lo que solo rompe un poco la abstracción.

Pero aquí es donde las cosas realmente se rompen: código de interrupción. Una máquina de Turing no tiene una forma de interrumpir la ejecución de una tarea para manejar asincrónicamente otra. Sin embargo, todas las CPU modernas lo hacen. Esto también permite que las CPU modernas utilicen subprocesos múltiples preventivos, algo que una máquina Turing simplemente no puede hacer.

El ejercicio mental de una máquina de Turing se trata de equivalencia algorítmica. Se han demostrado muchas cosas sobre las máquinas de Turing, y cuando se demuestra que un lenguaje es Turing completo, eso prueba que el lenguaje puede lograr todo lo que una máquina de Turing puede lograr.

Pero los lenguajes modernos (y procesadores) pueden hacer más .

Creo que porque son más genéricos y cubren la arquitectura de computadora de von Neumann más utilizada, por lo que nos muestran los límites teóricos finales de la informática moderna.

More Interesting

Cómo crear un cuestionario de matemáticas en Python

¿Alguien puede explicar paso a paso cómo se puede resolver el siguiente problema?

Si tengo una variable, X, en un modelo de regresión que se calcula usando otras tres variables (X = 0.3X1 + 0.5X2 + 0.2X3), ¿está bien que regrese 0.3X1, 0.5X2 y 0.2X3 por separado?

¿Por qué el tiempo de ejecución para la parte de fusión de merge sort [math] \ theta (n) [/ math]?

¿Cuáles son algunos métodos que se pueden usar para probar límites inferiores para los tiempos de ejecución de los algoritmos?

He reprobado mucho un título de CS, pero la gran emoción de diseñar un algoritmo innovador todavía está en mí, ¿qué debo hacer?

¿Es la máquina de Turing la abstracción más influyente de este siglo y el pasado?

¿Cuáles son algunos problemas abiertos importantes o interesantes en la teoría de la codificación?

En la teoría de grafos, ¿existe un método para calcular la cantidad mínima de dimensiones que debe tener el espacio de diseño para que nunca se crucen dos bordes, suponiendo que todos los bordes sean segmentos no dirigidos y que el espacio de diseño sea euclidiano?

¿Qué es una variable?

Dados N puntos en el plano, ¿qué es un algoritmo eficiente para encontrar todos los conjuntos de 3 o más puntos colineales?

¿Quiénes son los equipos más notables que trabajan para resolver el problema P vs NP?

¿Existen los números irracionales que no son construibles en la recta numérica real?

¿Cuál es la relación entre un código Huffman y la serie Fibonacci?

¿Qué es una mónada?