Bir kişinin bir turing makinesini uygulayabileceği birçok şey vardır.
İşlemcilere bakarken, en uygun olanı muhtemelen kayıt makinesi modelidir . Bunların en basiti (semboller açısından), çok bantlı iki simgedir ( mark
ve blank
). Ezoterik olmayan bir şey için giderseniz inc(r)
, dec(r)
ve jz(r,z)
(eğer kayıt r
sıfır ise komut için atla z
) veya clr(r)
(temizle r
) inc
,, je(i,j,z)
(eğer i ve j kaydı z komutuna eşitse atla).
Ben bir kayıt makinesi söz gördüm:
- inc (i, m) - kayıt i'yi artırın ve m satırına gidin
- jzdec (i, m1, m2) - eğer i kaydı 0 ise m satırına gidin, i değerini azaltın ve m2 satırına gidin
bu da tamamlandı - bir Minsky kayıt makinesi , banttaki veriler üzerinde başka kısıtlamalar olsa da (bireysel kayıtlar yerine devleti saklayan bir Gödel numarası olmalı)
Bu kadar. Başka bir şey yok.
Peki, neden bu ultra risc işlemciler kullanılmıyor? Onlar için bir derleyici yazmak için gerçek bir acı ve işlemcinin yapabileceği başka birçok şeyden vazgeçersiniz. Onun bitwise and
ve güzel bir add
artan kayıtları ve döngü ile her şeyi yapmaya çalışıyorum , gerçekten güzel . Bu , 8 talimatı olan Brainfuck adlı favori bir programlama dilinin temelidir .
>
veri işaretçisini artırmak
<
veri işaretçisini azalt
+
veri işaretçisinde verileri artırmak
-
veri işaretçisindeki verileri azaltma
.
veri işaretçisinde veri çıkışı
,
veri girişinde veriyi saklamak, girişi okumak
[
işaretçideki veriler sıfırsa, yönerge işaretçisini bir ileri taşımak yerine, eşleşen ]
komuttan sonra komuta ileri atlayın
]
işaretçideki veriler sıfır değilse, yönerge işaretçisini ileri taşımak yerine, eşleşen ]
komuttan sonra komuta geri atlayın
Bir derleyiciler bulabilirsiniz için onun gerçekten eğlenceli o bile basit şeyler yapmak olsa brainfuck. Dilin amacı olan hüsrandan hoşlanmadıkça.
İlgili okumalar: