Soyut makineler ve bilgisayar mimarileri arasındaki boşluğu kapatmak mı? [kapalı]


11

Soyut makineler (Turing makineleri gibi) ve bilgisayar mimarileri (sanal makinelerin mimarileri, Von Neumann'ın mimarisi dahil) arasında daima bağlantısız hissediyorum. Peki onların nasıl ilişkili olduğunu bilmek ister miyim? Biri diğerini nasıl etkiler? Referanslar da takdir edilmektedir. Teşekkürler.


7
Turing makineleri hesaplanabilirlik için akıl yürüten teorik bir bilgisayar bilimi modelidir . Benzer şekilde, lambda hesabı hesaplamalar için bir bilgisayar bilimi modelidir, ancak dil tasarımını programlamada pratik uygulamalar bulmuştur. Lambda hesabı, turing makineleri ve gerçek bilgisayarlar onlar şeylere göre birbirine denk iken edebilirsiniz hesaplamak, onlar nasıl çalıştıklarını tamamen farklıdır. Özellikle, bu teorik hesaplama modelleri gerçek donanımın verimli bir şekilde neler yapabileceğini tanımlamaz.
amon

2
@amon Görünüşe göre bir cevabın çoğunu zaten yazdınız, neden bir yorumda "boşa gidelim"?

Diğerlerinin de işaret ettiği gibi, "bilgisayarlar" için birkaç matematiksel model vardır: bazıları dillere daha yakın (kısmi özyinelemeli işlevler, lambda hesabı), bazıları donanıma daha yakın. İsterseniz, RAM makinelerine bakmalısınız ( Wikipedia bağlantısı ): gerçek donanıma Turing makinelerinden daha yakındırlar.
Lorenzo Dematté

Yanıtlar:


23

Turing makineleri ve benzeri "makineler" hesaplama modelleri, aşağıdaki gibi sorunları araştırmayı amaçlamaktadır:

  • Ne hesaplanabilir
  • Problemlerin karmaşıklık sınıfı
  • Karmaşıklık sınıfları arasındaki ilişkiler
  • Bir şeyi hesaplamanın çeşitli yollarının denkliği

Bu amaçla, makinenin kendisi mümkün olduğunca basit olmalıdır. Programcı uygunluğu veya sinir bozucu uygulama endişeleri önemli değildir, çünkü bunlar matematiksel nesnelerdir ve bunlar için doğrudan çok az sayıda program yazılmıştır.

Tersine, sanal makine mimarisi ve gerçek silikon bazlı makine mimarisi belirli bir programı yürütmeye odaklanmıştır . Makine, yukarıdaki endişeler için kesinlikle gerekenden daha karmaşık hale getirildi ve ilginç şeyler yapmak için daha az (ve daha açık) talimatlar gerekiyor. Hala anlaşılabilir (ve etkili bir şekilde uygulanabilir) olmaları gerektiğinden çok karmaşık değil , daha karmaşıktır.

Yani iki yaklaşım temelde çelişkilidir. Her ikisi de bilgisayar bilimi alanında olmanın yanı sıra, birbirleriyle çok fazla ilgileri yoktur.


1
Teşekkürler. Ama ben " Turing makineleri ve sanal makinelere benzeyen evrensel Turing makineleri " buldum , bu onların ilişkilerini önerebilir, ancak detay yok.
Tim

4
@Tim sanırım bu kurs Turing makinelerini soyut bir makine kavramını tanıtmak için bir başlangıç ​​noktası olarak alıyor, daha sonra hızla daha kullanışlı soyut makinelere geçiyor.

4

Ana ilişki, fiziksel olandaki teorik yapıyı simüle edebilmenizdir.

Fiziksel olanın teorik olan her şeyi yapabilmesi, teorik makinenin teorik test ve analizinin gerçek dünyada uygulanabilir olarak tanınabilmesini sağlar.

Durma problemi, bir turing makinesinde çözülemez olduğu gösterilen bir şeyin mükemmel bir örneğidir ve turing makinesinin kanıtıyla, turing makinesinin yasalarına uyan gerçek bir makinede çözülemez olduğu bilinmektedir.

Sayma yoluyla bir şeyleri toplamak ve bunu kağıda yazarak yapmak arasındaki farktır, sayma gerçekliğinin bir kağıda toplamı yapmakla aynı kuralları yerine getirdiği kanıtlanmıştır. Böylece, şeylerin fiziksel sayımını simüle ettiğinizde, sonuçlarınız gerçek dünyaya uygulanabilir olarak tanınır - böylece, sonuca ulaşmak için fiziksel parayı saymaya gerek kalmadan sayımı zihinsel olarak simüle ederek iki şeker çubuğunun ne kadar tutacağını bilirsiniz.

İnsanlar şu anda "Kuantum Turing Makinesi" olarak bilinen teorik bir modelin kuantum hesaplama makineleri ile hangi tesislerin mevcut olacağını görmek için analiz ve testler üzerinde çalışıyorlar. Modellerinin fiziksel versiyonunun aşırı pahalı, nadir ve mevcut uygulamalar hala çok eksik olduğunda, insanların bu modellerle çalışacakları mantıklıdır. Teorik modeller, fiziksel uygulamalarımız düzeldiğinde neler yapabileceğimizi göstermek için kullanılır.


1

Uzay mekiğinin nefesinizle şişirdiğiniz ve daha sonra bırakıp uçup gitmeyi izlediğiniz bir balonla ilişkili olduğu gibi yaklaşık olarak ilişkilidirler.

Bir şeyi zıt yönde itmek için bir yönde bir şeyi dışarı atmanın temel prensibi vardır.

Benzerlikler burada sona eriyor.


1

Teorik makineleri, gerçek dünya hesaplaması ve matematik arasındaki boşluğu doldurmak olarak görüyorum. Bir Turing makinesi, herhangi bir gerçek dünya mimarisini veya programlama dilini simüle edecek kadar güçlü, kolayca simüle edilecek kadar basit ve en önemlisi, makul derecede basit matematiksel akıl yürütme ve kanıtlara konu olacak kadar basittir.


1

Hesaplamanın tanımının "bilgisayarların yaptığı şeyler" olmadığını bilmek önemlidir . Hesaplama bilgisayarlardan önce gelir. Onlar, hesaplamanın görevi yardımcı olmak için yaratılmıştır çünkü Bilgisayarlar isimlerini verildi değil onlar bunu tanımlamak için.

Yani Turing Machine bilgisayarların nasıl çalıştığıyla ilgili değil. Bir problemin hesaplanıp hesaplanamayacağı , yani resmi bir mantıksal / matematiksel süreçle çözülebileceği ile ilgilidir. Bu sürecin nasıl uygulanabileceği hakkında hiçbir şey söylemiyor. Eğer hesaplanabilir ise, insanlar tarafından kalem ve kağıtla, yeterli zaman verildiğinde veya bilgisayarlarla veya (bu önemli bir şeydir) Turing tamamlandığı gösterilebilecek herhangi bir sistemle çözülebilir .

Yani Turing Makinesi iki çok önemli şey yapar:

  1. Herhangi bir problemin / görevin hesaplanabilirliği için bir test sağlar.
  2. Herhangi bir sistemin hesaplanabilir herhangi bir görevi hesaplayıp hesaplayamayacağını göstermek için bir test sağlar.

İlk nokta, sorunları gerçek dünya uygulamalarından rahatsız olmadan düşünmemizi sağlar. Bu iyi bir şey çünkü gerçek donanım genellikle insanları ilgisiz ayrıntıya dikkat dağıtıyor (Turing Makineleri sınırsız kaynağa sahip olduğundan, "bellek veya depolama alanımız tükenirse ne olur?" Gibi). Turing Makinesi için kanıtlanabilir bir teorik çözüm geliştirilebilir ve daha sonra birisinin yapması gereken tek şey onu belirli bir mimari üzerinde çalışacak bir şeye dönüştürmektir.

İkinci nokta, üzerinde birçok farklı test yürütmek zorunda kalmadan herhangi bir uygulamanın kapasitesini doğrulamamıza izin verir. Turing Makinesini simüle edebiliyorsa Turing Makinesinin yapabileceği her şeyi yapabilir. Turing Makineleri hesaplanabilir her şeyi hesaplayabildiğinden, hesaplayabilir.

Bu, Turing Machine ile herhangi bir gerçekten pratik bilgisayar mimarisi (hatta sanal olanlar) arasındaki ilişkinin sadece bir şey olduğu anlamına gelir: hesaplayabilirler.

Von Neumann'ın mimarisi, etkili genel amaçlı elektronik dijital bilgisayarlar için bir tasarım şablonu oluşturma girişimiydi . Turing'in çalışması geçerliliğinin kanıtıydı


-1

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.


1
Belirttiğiniz muhakeme örnekleriniz teknik olarak doğru değildir - bir turing makinesinin bir kayıt makinesinin veya x86 mahine'nin yapabileceği her şeyi yapabileceğini belirtirseniz, bir x86 makinesinin bir kayıt makinesinin veya bir turing makinesinin yapabileceği her şeyi yapabileceği anlamına gelmez. Yapabilmek. Karşı bir örnek olarak, herhangi bir sonlu otomat da bir Turing makinesine indirgenebilir, ancak açıkça lambda hesabı veya LISP'ye eşdeğer değildir. Yönlülük önemlidir - "x86 kutumun fantezi LISP tabanlı makinenizin yapabileceği her şeyi yapabileceğini" belirtmek isterseniz, x86'dan Turing'e değil Turing'den x86'ya bir azalma gerektirir.
Peteris
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.