Ci sono molti modi per implementare qualcosa in cui è possibile implementare una macchina di turing.
Mentre stai guardando i processori, quello più applicabile è probabilmente il modello di macchina di registro . Il più semplice di questi (in termini di simboli) è il simbolo del mulit-tape two ( mark
e blank
). Se vai per qualcosa di non esattamente esoterico, inc(r)
, dec(r)
e jz(r,z)
(salta se il registro r
è zero all'istruzione z
) o il clr(r)
(cancella r
), inc
, je(i,j,z)
(salta se i registri i e j sono uguali all'istruzione z).
Ho visto menzionare una macchina di registro che è:
- inc (i, m) - incrementa il registro i e passa alla riga m
- jzdec (i, m1, m2) - se registro i è 0 vai a linea m, altrimenti decremento i, e vai a linea m2
che è anche completo - è un macchina di registro Minsky sebbene abbia altri vincoli sui dati nel nastro (deve essere un numero di Gödel che memorizza lo stato piuttosto che i singoli registri)
Ecco. Niente di più.
Quindi, perché questi processori ultra risc non vengono utilizzati al loro posto? È un vero dolore scrivere un compilatore per loro e si rinuncia a molte altre cose che il processore può fare. È davvero bello avere un% bit per bit% co_de e un and
piuttosto che provare a fare tutto con i registri incrementali e il ciclo. Questa è la base di un linguaggio di programmazione preferito intitolato Brainfuck che ha 8 istruzioni.
-
add
incrementa il puntatore dati
-
>
decrementa il puntatore dati
-
<
incrementa i dati sul puntatore dati
-
+
decrementa i dati sul puntatore dati
-
-
restituisce i dati sul puntatore dati
-
.
read input, memorizzando i dati sul puntatore dati
-
,
se i dati sul puntatore sono zero, invece di spostare il puntatore di istruzioni in avanti di uno, salta avanti al comando dopo il comando [
corrispondente
-
]
se i dati sul puntatore sono diversi da zero, invece di spostare il puntatore dell'istruzione in avanti, salta indietro al comando dopo il comando ]
corrispondente
Si possono trovare i compilatori a Brainfuck, anche se non è divertente nemmeno fare cose semplici. A meno che non ti piaccia la frustrazione, che è lo scopo della lingua.
Lettura correlata: