Investor's wiki

Turing completo

Turing completo

Turing Complete se refiere a una máquina que, con suficiente tiempo y memoria junto con las instrucciones necesarias, puede resolver cualquier problema computacional, sin importar cuán complejo sea. El término se usa normalmente para describir los lenguajes de programación modernos, ya que la mayoría de ellos son Turing Complete (C++, Python, JavaScript, etc.).

¿Qué es una máquina de Turing?

Antes de las computadoras modernas, Alan Turing planteó la hipótesis de que algún día habría una máquina que podría resolver cualquier problema. Esta máquina se conoció como la Máquina de Turing.

Alan imaginó su máquina como una cinta larga con información escrita en forma de código binario (1 y 0). La máquina también tendría un cabezal de lectura/escritura que se mueve a lo largo de la cinta leyendo cada cuadro, uno por uno. El código le preguntaría a la máquina un problema computacional, y la cinta sería tan larga como fuera necesaria para lograr una solución.

A medida que la cabeza se mueve a lo largo de la cinta, la máquina sigue instrucciones simples que rigen cómo reacciona. Lee la cinta, sigue las instrucciones y realiza una determinada acción para escribir un nuevo código a medida que avanza. Este nuevo patrón de código es la respuesta al problema. La máquina hipotética de Turing podría responder a cualquier problema computacional que pudiera expresarse en código (y que tuviera una respuesta calculable).

Un dispositivo o lenguaje de programación se considera Turing Completo cuando puede replicar una Máquina de Turing ejecutando cualquier programa o resolviendo cualquier problema que la Máquina de Turing pueda ejecutar o resolver. Por otro lado, si un dispositivo o lenguaje de programación no es capaz de hacerlo, entonces se dice que es Turing Incompleto.

Una calculadora simple es un ejemplo de un sistema que es Turing Incompleto ya que solo puede hacer algunos tipos de cálculos. Por el contrario, una calculadora científica programable (capaz de realizar todo tipo de cálculos) puede considerarse como una máquina de Turing.

Blockchain y la integridad de Turing

Mientras que algunas aplicaciones de la tecnología blockchain son Turing Complete, otras son Turing Incomplete. Esto varía según la tecnología de secuencias de comandos implementada. Por ejemplo, el lenguaje de secuencias de comandos utilizado en Bitcoin está diseñado intencionalmente como Turing Incompleto porque cumple su propósito y una mayor complejidad podría presentar problemas. Manteniéndolo simple, los desarrolladores pueden predecir con gran precisión cómo va a reaccionar en el número finito de situaciones en las que se usa.

Ethereum, por otro lado, está construido como una cadena de bloques completa de Turing. Esto es importante porque necesita comprender los acuerdos que componen los contratos inteligentes. Al ser Turing Complete, Ethereum tiene la capacidad de comprender e implementar cualquier acuerdo futuro, incluso aquellos en los que aún no se ha pensado. En otras palabras, Turing Completeness de Ethereum significa que puede usar su base de código para realizar prácticamente cualquier tarea, siempre que tenga las instrucciones correctas, el tiempo suficiente y la potencia de procesamiento.