Hay muchas formas de implementar algo en lo que uno puede implementar una máquina de turing.
Mientras observa los procesadores, el que sea más aplicable probablemente sea el modelo de máquina de registro . El más simple de estos (en términos de símbolos) es el símbolo de mulit-tape two ( mark
y blank
). Si usted va para algo no tan esotérica, la inc(r)
, dec(r)
y jz(r,z)
(salto si el registro r
es cero a la instrucción z
) o la clr(r)
(clara r
), inc
, je(i,j,z)
(salto si se registra iyj son igual a z de instrucciones).
He visto mención de una máquina de registro que es:
- inc (i, m): incremente el registro i y vaya a la línea m
- jzdec (i, m1, m2): si el registro i es 0, vaya a la línea m, de lo contrario disminuya i, y vaya a la línea m2
que también está completo: es una máquina de registro Minsky, aunque tiene otras restricciones en los datos de la cinta (tiene que ser un número de Gödel que almacena el estado en lugar de registros individuales)
Eso es. Nada mas.
Entonces, ¿por qué no se utilizan estos procesadores ultra risc? Es un verdadero dolor escribir un compilador para ellos y renunciar a muchas otras cosas que el procesador puede hacer. Es realmente agradable tener un bit a bit and
, y en add
lugar de tratar de hacer todo con registros incrementales y bucles. Esa es la base de un lenguaje de programación favorito titulado Brainfuck que tiene 8 instrucciones.
>
incrementar el puntero de datos
<
disminuir el puntero de datos
+
incrementar los datos en el puntero de datos
-
disminuir los datos en el puntero de datos
.
generar los datos en el puntero de datos
,
leer entrada, almacenar los datos en el puntero de datos
[
Si los datos en el puntero son cero, en lugar de mover el puntero de instrucción hacia adelante, avance hacia el comando después del ]
comando correspondiente
]
Si los datos en el puntero no son cero, en lugar de mover el puntero de instrucciones hacia adelante, vuelva al comando después del ]
comando correspondiente
Uno puede encontrar compiladores para Brainfuck, aunque realmente no es divertido hacer incluso cosas simples en él. A menos que disfrutes de la frustración, que es el propósito del lenguaje.
Lectura relacionada: