Özetle :
Ne Turing makineleri kadar yakın ve PC'ler gibi olağan bilgisayarlara zorunlu programlama dilleri, (kendilerini daha yakın ziyade Turing makinesine daha rasgele erişim makineleri (RAM)) karakterize eden bir kavramıdır açık bellek deposuna değiştirilebilir (ara sonuçlar ). Hesaplamanın ilerledikçe değişebilen bir durum kavramı (hem sonlu durum kontrolü hem de hafıza içeriği içeren) içeren, otomatiğin otomat görüntüsüdür.
Diğer çoğu model daha soyut. Hesaplamayı, orijinal bir yapının dönüşüm adımlarının art arda geldiğini ifade etmelerine rağmen, bu dönüşüm bir tür intemporal matematiksel anlam evreninde uygulanır. Bu, matematiksel analizi daha basit hale getirebilecek referans şeffaflığı gibi özellikleri koruyabilir. Ancak, hafızanın düzenine dayanan doğal fiziksel modellerden daha uzaktadır.
Bu nedenle, yazılım gerçekten donanımdan ayrı olmadığından, aşağıda açıklandığı gibi daha büyük bir anlam dışında, doğal fonksiyonel makineler yoktur.
Hesaplanabilirliğin ölçütü olarak Turing'e atıfta bulunmak, muhtemelen modelinin Turing makinesinin bu fiziksel gerçekleştirilebilirlik kısıtına en yakın olması ve onu daha sezgisel bir hesaplama modeli yapmasından kaynaklanıyor.
Diğer hususlar :
Bir hesaplama kavramını mümkün olan en genel şekilde yakalamak için tasarlanmış birçok hesaplama modeli vardır. Turing makineleri, aslında birçok farklı tada sahipler, lamda matematiği (tadalar), yarı-Thue yeniden yazma sistemleri, kısmi özyinelemeli işlev, birleştirme mantığı.
Hepsi matematikçilerin hesaplamaları ifade etmek veya yürütmek için kullandıkları çeşitli tekniklerin bazı yönlerini yakalarlar. Ve çoğu, bir dereceye kadar bazı programlama dili tasarımının (örneğin , yeniden yazma sistemleri için Snobol , birleştiriciler için APL , lambda hesabı için Lisp / Scheme ) temel olarak kullanılmıştır ve modern programlama dillerinde çeşitli şekillerde birleştirilebilir.
Bunun önemli bir sonucu, tüm bu hesaplama modellerinin eşdeğer olduğu kanıtlanmıştır; bu, fiziksel olarak gerçekleştirilebilecek bir hesaplama modelinin, bu modellerin hiçbirinden daha fazlasını yapamayacağı olan Kilise-Turing tezine yol açmıştır. Bir hesaplama modelinin, bu modellerden birine eşdeğer olduğu kanıtlanırsa tamamlandığı söylenir , bu nedenle hepsine eşdeğerdir.
İsim farklı olabilirdi. Turing makinesinin (TM) referans olarak seçilmesi muhtemelen bu modellerin en basit olması, bir insanın hesaplama şeklini (basitçe olsa da) sınırlı bir şekilde taklit etmenin (sınırlı bir sonlu formda) oldukça kolay olmasından kaynaklanmaktadır. ) fiziksel bir cihaz olarak, Turing makinelerinin Lego setleri ile yapıldığı ölçüde . Temel fikir matematiksel karmaşıklık gerektirmez. Muhtemelen bu referans pozisyonunu veren modelin sadeliği ve gerçekleştirilebilirliğidir.
Alan Turing, bilgisayar cihazını yarattığı sırada, matematiğin temelleri için çok önemli bir mesele olan hesaplanabilirliğin resmi tanımı olarak hizmet etmek için diğer teklifler masadaydı (bkz.
Entscheidungsproblem ). Turing önerisi, zaman uzmanları tarafından, hesaplanabilirliğin ne olduğu konusunda bilinen çalışmaları en ikna edici bir şekilde içeren kişi olarak kabul edildi (bakınız Hesaplanabilirlik ve Özyinleme, RI Soare, 1996, bkz. Bölüm 3.2). Çeşitli tekliflerin eşdeğer olduğu kanıtlandı, ancak Turing'in daha inandırıcı olduğu ortaya çıktı. [Yuval Filmus'un yorumlarından]
Donanım açısından bakıldığında, bilgisayarlarımızın Turing makineleri değil, aynı zamanda Turing olarak da adlandırılan Rasgele Erişim Makineleri (RAM) olarak adlandırıldığı belirtilmelidir.
Tamamen zorunlu olan dil (bu ne demekse), muhtemelen Turing makineleri veya bilgisayarların derleme kodunu atlayarak) gibi en temel modeller için kullanılan formalizmlerdir. Her ikisi de ünlü bir şekilde okunamıyor ve önemli programlar yazmak çok zor. Aslında, montaj dili bile, makinenin talimatlarının doğrudan kullanılmasına kıyasla, programlamayı biraz kolaylaştırmak için bazı üst düzey özelliklere sahiptir. Temel zorunluluk modelleri fiziksel dünyalara kapalı, ancak çok kullanışlı değil.
Bu, alt program ve işlev çağrıları, bellek konumunun isimlendirilmesi, adların kapsamı, nicelik belirleme ve kukla değişkenler gibi çeşitli hesaplama tekniklerini karıştırmaya başlayan daha yüksek seviyeli hesaplama modellerinin geliştirilmesine hızla yol açtı. matematikte ve mantıkta ve hatta yansıma gibi çok soyut kavramlar ( Lisp 1958).
Programlama dillerinin zorunlu, işlevsel, mantık, nesne yönelimli gibi programlama paradigmasına göre sınıflandırılması, bu tekniklerin bazılarının dilin tasarımındaki önceliklerinin ve programların bazı özelliklerini zorlayan bazı hesaplama özelliklerinin varlığının veya yokluğunun temeline dayanır. veya dilde yazılmış program parçaları.
Bazı modeller fiziksel makineler için uygundur. Bazıları, algoritmaların yüksek seviyeli açıklaması için daha uygundur, bu tanımlanacak algoritma türüne bağlı olabilir. Bazı teorisyenler bile algoritmaların deterministik olmayan özelliklerini kullanır ve hatta daha geleneksel programlama terimleriyle çevrilebilir. Ancak uyumsuzluk problemi yoktur, çünkü her bir modeli ihtiyaç duyulan bir diğerine dönüştürebilen karmaşık bir derleyici / tercüman teknolojisi geliştirdik (aynı zamanda Kilise-Turing tezinin de temeli).
Şimdi, bilgisayarınıza asla ham donanım olarak bakmamalısınız. Çok temel işlem yapan boolean devre içerir. Ancak bunların çoğu, asla tanımadığınız bilgisayarın içindeki mikro programlar tarafından yönlendirilir. Ardından, makinenizi donanımın yaptığından bile farklı kılan işletim sistemine sahip olursunuz. Bunun üzerine, bayt kodu yürüten sanal bir makineye, sonra da Pyva ve Jathon veya Haskell gibi üst düzey bir dile sahip olabilirsiniz. veya OCaml, bayt koduyla derlenebilir.
Her seviyede farklı bir hesaplama modelini görüyorsunuz. Donanım seviyesini yazılım seviyesinden ayırmak çok zor, bu yüzden bir makineye belirli bir hesaplama modeli atamak çok zor. Hepsi birbiriyle çevrilebilir olduklarından, nihai bir donanım hesaplama modeli fikri hemen hemen bir yanılsamadır.
Lambda matematiği makinesi var: lambda matematiği ifadelerini azaltabilen bir bilgisayar. Kolayca yapılan reklam.
Özel makine mimarileri hakkında
Aslında, Peter Taylor'ın cevabını tamamlayan ve donanım / yazılım iç içe geçmişliğini takip eden özel makineler belirli bir paradigmaya daha iyi adapte olacak şekilde üretildi ve temel yazılımlarını bu paradigmaya dayalı bir programlama dilinde yazdı.
Bunlar arasında
Temel olarak, bunlar aynı zamanda zorunlu donanım yapılarıdır, ancak amaçlanan paradigmaya daha iyi uyum sağlamak için özel donanım özellikleri veya mikro programlanmış tercümanlar ile hafifletilir.
Aslında, belirli paradigmalar için uzmanlaşmış donanım uzun vadede hiç başarılı görünmüyor. Bunun nedeni, vanilya donanımında herhangi bir paradigmayı uygulamak için derleme teknolojisinin gittikçe daha etkili hale gelmesiydi, böylece özel donanıma çok ihtiyaç duyulmadı. Ek olarak, harware performansı hızlı bir şekilde iyileşiyordu, ancak iyileştirme maliyeti (temel yazılımın evrimi dahil) vanilya donanımında uzmanlaşmış donanımdan daha kolay bir şekilde itfa edildi. Özel donanım uzun vadede rekabet edemedi.
Yine de, bu konuda kesin bir veriye sahip olmasam da, bu girişimlerin makinelerin, hatıraların ve komut dizileri mimarisinin gelişimini etkileyen bazı fikirler bıraktığından şüpheleniyorum.
(a -> a) -> a
.