Günümüzde yaygın olarak kullanılan genel amaçlı Turing dışı tam diller var mı?


12

Turing dışı tam diller, çok daha analiz edilebilir oldukları ve böylece çok daha geniş optimizasyon olanakları sundukları için Turing-complete dillerine göre büyük bir avantaj sağlar. Ancak zar zor kullanılırlar ve Turing tamlığı aslında iyi bir özellik olarak satılır.

Bugün genel amaçlı programlama için hazırlanmış ana akım Turing-complete dilleri var mı?


8
Bence aradığınız iki şey karşılıklı olarak uyumsuz. Dışı turing tam olursa, o zaman olamaz rasgele kullanımına açık olması.
Bobson

@ Dokkat Soruyu yeniden açtım ve Meta tartışmasını yorumlardan kaldırdım. Sitenin yönergelerinden birine katılmamanız durumunda, bununla başa çıkmanın doğru yolunun bir Meta tartışması yayınlamak olduğunu lütfen unutmayın; sadece görmezden gelmekle kalmaz. Ayrıca, öznel sorular için başarının anahtarı önceki araştırma ve titiz tanımdır. Ne kadar çok araştırma yaparsanız, sorunuz o kadar belirgin (ve cevaplanabilir) olur ve kötü şöhretli "yapıcı olmayan" alandan o kadar uzaklaşırsınız.
yannis

Ayrıca, neden "daha geniş optimizasyon olasılıklarını" "büyük avantaj" olarak görüyorsunuz? Bu, optimizasyonun faydalı olmadığı anlamına gelmez, ancak kesinlikle modern bilgisayarların gücü göz önüne alındığında, bir dilin doğal optimizasyonunu "büyük bir avantaj" olarak adlandırmayacağım.
Bobson

2
Coq, alanında oldukça "ana akım" olarak görülebilir ve rakipler (HOL, Agda, ACL ve benzeri) çok daha az görünürdür.
SK-logic

Belki de turing-bütünlüğünün ne olduğunu gerçekten anlamıyorum, ama bir dil nasıl genel bir amaç ve Turing olmayan bir şekilde tamamlanabilir? Turing olmamanın anlamının, herhangi bir hesaplama görevi yerine getirememesinin, dolayısıyla belirli bir amaca yönelik olmasının anlamını düşündüm ..?
Aviv Cohn

Yanıtlar:


24

Günümüzde anaakım çok amaçlı olmayan Turing tam dilleri yoktur. Bununla birlikte, Turing dışı tam etki alanına özgü birkaç dil vardır. ANSI SQL, düzenli ifadeler, veri dilleri (HTML, CSS, JSON, vb.) Ve s ifadeleri bazı önemli örneklerdir.

Çok amaçlı Turing olmayan tam diller için gerçekten bir fayda yoktur. Rice'ın teoreminin başını salladığını düşündüğüm "çok daha analiz edilebilir" boyut geçerli, ancak birkaç farklı uygulama alanını hedefleyen diller için fazla bir anlam ifade etmiyor, diğer gereksinimler öncelikli. Turing tamlığının esnekliği, karmaşıklığından çok daha önemlidir. Programlama dilleri, diğer tüm yazılımlar gibi, tamamen değişimlerle ilgilidir.

Etki alanına özgü diller için ise bu tam tersi olabilir. "Hepsine hükmedecek bir dil" oluşturmuyorsanız, yalnızca dilinizin çok özel amacı için anlamlı olan özellikleri uygulamakta özgürsünüz. Ve çoğu zaman, Turing bütünlüğü bunlardan biri değildir.


CSS3 olan Turing-tam.
SK-logic

5
@ SK-logic CSS HTML olmadan mantıklıdır, herhangi bir XML türüne uygulanabilir ve hiçbir şey kabaca uyumlu şekle (adlandırılmış düğümleri, kardeş sırası vb.) Sahip başka bir format için uygulamanızı engellemez. Kişisel olarak bir SVG dosyası için CSS kuralları yazdım. HTML için çok daha yaygındır, çünkü HTML diğer formatlardan çok daha yaygındır.

2
@Mike, bu kırık bir benzetme. CSS3 anlambilimi, sunum dili anlambilimiyle yakından bağlantılıdır.
SK-logic

2
Pencereli ve CTE'lere sahip SQL'in (örn. SQL: 2003) de Turing-complete olduğunu unutmayın.
Jörg W Mittag

1
"Bugün Turing tam olmayan anaakım çok amaçlı dil yok." - Harici depolama olmadan C Turing tamamlanmamıştır, ancak çok genel amaçlı ve ana akımdır. (Ben şahsen bunun Unix çekirdeği yazmak için Etki Alanına Özgü Bir Dil olduğunu ve bu konuda özellikle iyi olmadığını, ancak dünyanın buna katılmadığını iddia ediyorum.)
Jörg W Mittag

-3

Eksik dilleri çevirmenin ana akım olmamasının nedeni, ihtiyacınız olduğunda ve ihtiyacınız olduğunda kendi dilinizi uygulamanın kolay olmasıdır. İlginç bir örnek bitcoin-betiğidir: https://github.com/bitcoin/bitcoin/blob/master/src/script.cpp


5
Gerçekten mi? Coq'u bu kadar kolaysa sıfırdan kendi başınıza uygulamak ister misiniz?
SK-logic

Bu sadece senin fikrin mi yoksa bir şekilde yedekleyebilir misin?
tatarcık

Örnekler, özyineleme, sınırsız yineleme veya diğer Turing brandaları gerektirmeyen, alana özel dillerdir. Ayrıca, çoğumuzun temel aritmetiği işleyen basit hesap makinelerini uyguladığımızdan eminim.
MauganRa

1
Yine de, Turing'in eksik kalmasının önemsiz olmadığını kabul ediyorum. Belirgin Turing brandaları olmasa bile, her zaman alttaki platformlardan birini kullanmayı mümkün kılan bir derleyici hatası içerebilir.
MauganRa
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.