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.