Sempre me sinto desconectado entre máquinas abstratas (como máquinas de Turing) e arquiteturas de computadores (incluindo arquiteturas de máquinas virtuais, a arquitetura de Von Neumann). Então, eu gostaria de saber como eles estão relacionados? Como um influencia o outro? Referências também são apreciadas. Obrigado.
architecture
Tim
fonte
fonte
Respostas:
Máquinas de Turing e "máquinas" semelhantes são modelos de computação , com o objetivo de investigar problemas como:
Para esse efeito, a própria máquina deve ser o mais simples possível. A conveniência do programador ou as preocupantes preocupações de implementação não importam, pois esses são objetos matemáticos e apenas muito poucos programas são escritos diretamente para eles.
Por outro lado, a arquitetura da máquina virtual e a arquitetura real da máquina baseada em silício estão centradas na execução de um determinado programa . A máquina é mais complicada do que o estritamente necessário para as preocupações acima e, por sua vez, são necessárias menos instruções (e mais óbvias) para fazer coisas interessantes. Não é muito complicado, pois ainda precisa ser compreensível (e eficientemente implementável), mas mais complicado.
Portanto, as duas abordagens estão fundamentalmente em desacordo. Além de ambos estarem no campo da ciência da computação, eles não têm muito a ver um com o outro.
fonte
A principal relação é que você pode simular o construto teórico no físico.
O fato de o físico ser capaz de tudo o que é teórico dá origem à capacidade de o teste e a análise teóricos da máquina teórica serem reconhecidos como implementáveis no mundo real.
O problema da parada é um exemplo perfeito de algo que foi mostrado em uma máquina de turing como insolúvel, e, como prova na máquina de turing, pode-se, portanto, saber que é insolúvel em uma máquina real que cumpra as leis da máquina de turing.
É a diferença entre somar as coisas contando e fazendo isso escrevendo no papel; ficou provado que a realidade da contagem cumpre as mesmas regras que a soma em um pedaço de papel. Portanto, quando você simula a contagem física das coisas, seus resultados são reconhecidos como aplicáveis ao mundo real - assim, você sabe quanto custará duas barras de chocolate, simulando mentalmente a contagem sem precisar contar o dinheiro físico para obter o resultado.
Atualmente, as pessoas estão analisando e testando um modelo teórico conhecido como "Máquina Quântica de Turing" para ver quais instalações estarão disponíveis com as máquinas de computação quântica. Faz sentido que as pessoas trabalhem com esses modelos quando a versão física do modelo é excessivamente cara, rara e as implementações atuais ainda são muito escassas. Os modelos teóricos são usados para mostrar o que podemos fazer quando nossas implementações físicas melhorarem.
fonte
Eles estão relacionados aproximadamente da mesma maneira que o ônibus espacial está relacionado a um balão que você infla com a respiração e, em seguida, solta e observa voar.
O princípio fundamental de expulsar algo em uma direção para impulsionar algo na direção oposta está lá.
É aí que as semelhanças terminam.
fonte
Vejo as máquinas teóricas como uma ponte entre a computação do mundo real e a matemática. Uma máquina de Turing é poderosa o suficiente para simular qualquer arquitetura do mundo real ou linguagem de programação, simples o suficiente para ser simulada facilmente e, o mais importante, simples o suficiente para ser objeto de raciocínio e provas matemáticas razoavelmente diretas.
fonte
É importante saber que a definição de computação não é "o que os computadores fazem". A computação é anterior aos computadores. Os computadores receberam seu nome porque foram criados para auxiliar a tarefa de computação, não porque eles a definem.
Portanto, a máquina de Turing não trata de como os computadores funcionam. É sobre se um problema é ou não computável - ou seja, solucionável por um processo lógico / matemático formal. Não diz nada sobre como esse processo pode ser implementado. Se for computável, pode ser resolvido pelos seres humanos com lápis e papel, com tempo suficiente, ou com computadores ou (isso é importante) com qualquer sistema que se mostre completo como Turing .
Portanto, a máquina de Turing faz duas coisas muito importantes:
O primeiro ponto nos permite pensar em problemas sem nos distrairmos com as implementações do mundo real. Isso é bom porque o hardware real geralmente distrai as pessoas com detalhes irrelevantes (como "o que acontece se ficarmos sem memória ou espaço de armazenamento?", Pois a Turing Machines possui recursos infinitos). Uma solução teórica comprovável pode ser desenvolvida para uma máquina de Turing e, em seguida, tudo o que alguém precisa fazer é convertê-la em algo que funcione em uma determinada arquitetura.
O segundo ponto nos permite verificar a capacidade de qualquer implementação sem precisar executar muitos testes diferentes. Se ele pode simular uma máquina de Turing, pode fazer qualquer coisa que a máquina de Turing possa fazer. Como a Turing Machines pode calcular qualquer coisa computável, ele também pode.
O que significa que o relacionamento entre a Máquina de Turing e qualquer arquitetura de computador genuinamente prática (mesmo virtual) é apenas uma coisa: eles podem calcular.
A arquitetura de Von Neumann foi uma tentativa de criar um modelo de design para computadores digitais eletrônicos de uso geral eficazes . O trabalho de Turing forneceu a prova de sua validade
fonte
Se você pensar bem, arquiteturas são máquinas abstratas. Eles descrevem como um pedaço de silício feito com cuidado "deve" se comportar. A diferença entre as arquiteturas e as máquinas de Turing é mais uma questão de escala do que uma mudança fundamental na abordagem.
A vantagem das máquinas de Turing é que há um conjunto de provas úteis que são muito fáceis de fazer usando uma máquina de Turing. É simples provar que qualquer máquina poderosa o suficiente para simular uma máquina de Turing pode resolver qualquer problema que uma máquina de Turing possa (duh). No entanto, fica mais interessante quando você define uma função computável . Acontece que existem muitas definições compatíveis de uma função computável. Se você pode definir todo o seu comportamento como funções computáveis, pode ser simulado em uma máquina de Turing.
Então, digamos que você tenha uma arquitetura que suporte diretamente programas no estilo LISP e outra como o x86, que é mais processual. Seu amigo afirma "O LISP é mais expressivo; portanto, você pode escrever programas nesta máquina que nunca poderia escrever no seu x86". Isso é brutal de combater (especialmente porque você provavelmente não conhece o suficiente LISP). No entanto, você pode abusar de várias máquinas abstratas, como a máquina de Turing:
Obviamente, existem muitos outros exemplos. O Jogo da Vida de Conway provou ser Turing completo, o que significa que teoricamente ele poderia fazer qualquer coisa que seu computador pudesse fazer. A maneira mais fácil de fazer isso era construir uma máquina de Turing na Life . Trago isso à tona porque esse seria um caso do que você chamou de máquina abstrata sendo tratada como uma arquitetura literal! Você pode imaginar o quão difícil seria a afirmação de computabilidade na Life sem a ajuda de modelos abstratos (com certeza não estou modelando um x64, completo com uma espiada no cache, apenas para provar que a vida é computável!)
No final, a grande diferença entre arquiteturas e máquinas abstratas é que as arquiteturas geralmente se preocupam com o desempenho. As arquiteturas querem saber com que rapidez você pode fazer alguma coisa. Máquinas abstratas tendem a se contentar em apenas saber se você pode. Considere o Construtor Universal desenvolvido para máquinas de estado von Neuman. Foi o suficiente para provar que a UC poderia funcionar, não importa que os autores nunca tivessem poder de computação suficiente para realmente consegui-la.
As arquiteturas de preços pagam para demonstrar a rapidez com que podem trabalhar é que muitas vezes é terrivelmente difícil provar que elas podem calcular tudo . Para isso, as arquiteturas voltam e começam a usar máquinas abstratas.
fonte