Investor's wiki

Turing Completo

Turing Completo

Turing Complete refere-se a uma máquina que, com tempo e memória suficientes, juntamente com as instruções necessárias, pode resolver qualquer problema computacional, por mais complexo que seja. O termo é normalmente usado para descrever linguagens de programação modernas, pois a maioria delas são Turing Complete (C++, Python, JavaScript, etc.).

O que é uma Máquina de Turing?

Antes dos computadores modernos, Alan Turing levantou a hipótese de que um dia haveria uma máquina que poderia resolver qualquer problema. Essa máquina ficou conhecida como Máquina de Turing.

Alan imaginou sua máquina como um longo pedaço de fita com informações escritas na forma de código binário (1s e 0s). A máquina também teria um cabeçote de leitura/gravação que se moveria ao longo da fita lendo cada quadrado, um por um. O código perguntaria à máquina um problema computacional, e a fita seria tão longa quanto fosse necessária para alcançar uma solução.

À medida que a cabeça se move ao longo da fita, a máquina segue instruções simples que determinam como ela reage. Ele lê a fita, segue as instruções e executa uma determinada ação para escrever um novo código à medida que avança. Esse novo padrão de código é a resposta para o problema. A máquina hipotética de Turing poderia responder a qualquer problema computacional que pudesse ser expresso em código (e que tivesse uma resposta calculável).

Um dispositivo ou linguagem de programação é considerado Turing Complete quando ele pode replicar uma Máquina de Turing executando qualquer programa ou resolvendo qualquer problema que a Máquina de Turing possa executar ou resolver. Por outro lado, se um dispositivo ou linguagem de programação não for capaz de fazê-lo, então é chamado de Turing Incompleto.

Uma calculadora simples é um exemplo de sistema que é Turing Incompleto, pois só pode fazer alguns tipos de cálculos. Em contraste, uma calculadora científica programável (capaz de realizar todos os tipos de cálculos) pode ser considerada uma Máquina de Turing.

Completo Blockchain e Turing

Enquanto algumas aplicações da tecnologia blockchain são Turing Complete, outras são Turing Incomplete. Isso varia de acordo com a tecnologia de script implementada. Por exemplo, a linguagem de script usada no Bitcoin é intencionalmente projetada como Turing Incomplete porque serve ao seu propósito e o aumento da complexidade potencialmente introduziria problemas. Mantendo-o simples, os desenvolvedores podem prever com alta precisão como ele vai reagir no número finito de situações em que é usado.

O Ethereum, por outro lado, é construído como um blockchain Turing Complete. Isso é importante porque precisa entender os acordos que compõem os contratos inteligentes. Por ser Turing Complete, o Ethereum tem a capacidade de entender e implementar qualquer acordo futuro, mesmo aqueles que ainda não foram pensados. Em outras palavras, Turing Completeness do Ethereum significa que ele é capaz de usar sua base de código para realizar praticamente qualquer tarefa, desde que tenha as instruções corretas, tempo suficiente e poder de processamento.