Bunu düşünürseniz, mimariler soyut makinelerdir. Dikkatle yapılmış silikon yumrularının nasıl davranması gerektiğini açıklarlar. Mimariler ve Turing makineleri arasındaki fark, yaklaşımdaki temel bir değişimden çok bir ölçek meselesidir.
Turing makinelerinin avantajı, Turing makinesi kullanarak yapılması çok kolay olan bir dizi yararlı kanıtın olmasıdır. Bir Turing makinesini simüle edecek kadar güçlü herhangi bir makinenin bir Turing makinesinin (duh) herhangi bir problemini çözebileceğini kanıtlamak kolaydır. Ancak, Hesaplanabilir bir işlev tanımladığınızda daha ilginç hale gelir . Hesaplanabilir bir fonksiyonun birçok uyumlu tanımı olduğu ortaya çıkıyor. Tüm davranışlarınızı hesaplanabilir fonksiyonlar olarak tanımlayabiliyorsanız, bir Turing makinesinde simüle edilebilir.
Diyelim ki, doğrudan LISP tarzı programları destekleyen bir mimariniz var ve bir tanesi de daha prosedürel olan x86 gibi. Arkadaşınız "LISP daha etkileyici, bu nedenle bu makineye x86 cihazınıza asla yazamayacağınız programlar yazabilirsiniz." Bu, karşı koymak için acımasızdır (özellikle muhtemelen yeterince LISP bilmediğinizden). Ancak, Turing makinesi gibi birkaç soyut makineyi kötüye kullanabilirsiniz:
- LISP makineniz süslü olabilir, ancak yapabileceği her şey lambda hesabı için azaltılabilir. Arkadaşın hevesle başını sallıyor. Lambda hesabı fonksiyonel programcılar için kült bir şeydir.
- X86'm fantezi olabilir, ancak yapabileceği her şey bir kayıt makinesine indirgenebilir. Bir kez daha, arkadaşınızdan soru yok. Kayıtlar modern bilgisayar teorisinde SO tabandır!
- Herhangi bir kayıt makinesi, bu kayıt makinesini simüle eden bir Turing makinesi olarak modellenebilir. Şimdi arkadaşınız neden yumruk bandı çağına geri döndüğünüzü merak ediyor.
- Ve lambda matematik makineniz de Turing makinesine indirgenebilir. * Arkadaşın itiraz ediyor, ama onları Church-Turing tezine yönlendiriyorsun ve başlarını utanç içinde asıyorlar.
- Böylece x86 kutum, süslü LISP tabanlı makinenizin yapabileceği her şeyi yapabilir!
Elbette başka örnekler de var. Conway'in Hayat Oyunu'nun Turing tamamlandığı kanıtlandı, yani teorik olarak bilgisayarınızın yapabileceği her şeyi yapabilir. Bunu yapmanın en kolay yolu Hayatta bir Turing makinesi inşa etmekti . Bunu gündeme getiriyorum, çünkü bu, soyut bir makine olarak gerçek bir mimari olarak adlandırılan şeyin bir örneği olurdu! Hayatta hesaplanabilirlik iddiasının soyut modellerin yardımı olmadan ne kadar zor olacağını hayal edebilirsiniz (eminim ki heck bir x64 modellemiyor, önbellek gözetleme ile tamamlanmış, sadece Yaşam'ın hesaplanabilir olduğunu kanıtlamak için!)
Sonuçta, mimariler ve soyut makineler arasındaki en büyük fark, mimarilerin genellikle performansla ilgili olmasıdır. Mimariler bir şeyi ne kadar hızlı yapabileceğinizi bilmek istiyor. Soyut makineler, yapabileceğinizi bilerek memnun olma eğilimindedir. Von Neuman devlet makineleri için geliştirilen Evrensel Yapıcıyı düşünün . UC kanıtlamak için yeterliydi olabilir aslında onu görmek için yazarlar yeterli hesaplama gücü yoktu Nevermind bu işe.
Fiyat mimarlarının ne kadar hızlı çalışabileceklerini göstermek için ödeme yaparlar, her şeyi hesaplayabileceklerini kanıtlamanın genellikle çok zor olmasıdır . Bunun için mimariler geri dönüp soyut makineleri kullanmaya başlarlar.