Máquina abstrata
# Máquina abstrata

Uma máquina abstrata (ou computador abstrato) é um modelo teórico de um sistema computacional de hardware ou software usado para detalhar o funcionamento do sistema, usado na teoria dos autômatos. A abstração de processos computacionais é usada tanto na ciência da computação quanto na engenharia de software, e geralmente assume um tempo discreto, dividido em amostras.
Na teoria da computação, as máquinas abstratas são geralmente usadas em experimentos mentais relacionados à computabilidade ou para analisar a complexidade de algoritmos. Uma máquina abstrata típica consiste em uma entrada, uma saída, e um conjunto de operações que transformar uma em outra. Um exemplo clássico é a máquina de Turing, mas também podem ser citados as gramáticas livres de contexto e os autômatos finitos.
Definições mais complexas criam máquinas abstratas com um conjunto completo de instruções, registradores e modelos de memória. Também podem se referir a um microprocessador que ainda não foi implementado em hardware. Uma máquina abstrata implementada como uma simulação de software, ou interpretada de alguma forma, é chamada de máquina virtual.
Através das máquinas abstratas é possível estipular a quantidade de recursos (como em tempo e espaço de armazenamento) necessária para realizar uma tarefa sem construir o sistema de fato.