今日利用可能な主流の汎用非チューリング完全言語はありますか?


11

非チューリング完全言語は、より分析可能であり、したがってより広い最適化の可能性を提供するため、チューリング完全言語よりも優れた利点を提供します。しかし、それらはほとんど使用されておらず、チューリング完全性は実際に優れた機能として販売されています。

汎用プログラミング用に作成された、今日利用可能な主流の非チューリング完全言語はありますか?


8
あなたが探している2つのことは、相互に互換性がないと思います。チューリングが完了していない場合は、任意の用途に使用することはできません
ボブソン2013年

@Dokkat質問を再度開き、メタディスカッションをコメントから削除しました。サイトのガイドラインの1つに同意できない場合は、メタディスカッションを投稿するのが適切な方法です。無視するだけではありません。さらに、主観的な質問の場合、成功の鍵は事前の調査と厳密な定義です。研究すればするほど、質問はより具体的になり(そして答えられるようになります)、悪名高い「建設的でない」空間から遠ざかります。
yannis 2013年

また、「より広範な最適化の可能性」を「大きな利点」とみなす理由は何ですか。これは、最適化に価値がないと言っているわけではありませんが、言語の固有の最適化可能性を、現代のコンピューターの能力を考えると「大きな利点」とは言いません。
ボブソン2013年

2
Coqは、そのドメインではかなり「主流」であると見なすことができ、競合他社(HOL、Agda、ACLなど)はあまり目立ちません。
SK-logic

多分私は実際にチューリング完全性が何であるかを理解していませんが、言語はどのようにして汎用非チューリング完全なのでしょうか?非チューリング完全であることの意味は、計算タスクを実行することができず、特定の目的に向けられていることだと思いました。
Aviv Cohn、2014年

回答:


24

今日、主流の多目的非チューリング完全言語はありません。ただし、いくつかの非チューリング完全ドメイン固有言語があります。ANSI SQL、正規表現、データ言語(HTML、CSS、JSONなど)、s式は注目すべき例です。

多目的非チューリング完全言語には、実際にはメリットはありません。私がライスの定理に同意していると想定している「はるかに分析可能な」側面は当てはまりますが、いくつかの異なるアプリケーションドメインを対象とする言語にはあまり意味がなく、他の要件が優先されます。チューリング完全性の柔軟性は、その複雑さよりもはるかに重要です。他のすべてのソフトウェアと同様に、プログラミング言語もすべてトレードオフです。

一方、ドメイン固有の言語の場合は、それが逆になる可能性があります。「すべてを統括する1つの言語」を構築しない場合は、言語の特定の目的に適した機能のみを実装できます。そして多くの場合、チューリングの完全性はそれらの1つではありません。


CSS3 チューリング完全です。
SK-logic

5
@ SK-logic CSSはHTMLがなくても意味があり、あらゆる種類のXMLに適用でき、ほぼ互換性のある形状(名前付きノードを持つツリー、兄弟順など)を持つ他の形式に実装することを妨げるものはありません。SVGファイル用のCSSルールを個人的に作成しました。HTMLは他の形式よりもはるかに一般的であるため、HTMLの方がはるかに一般的です。

2
@マイク、それは壊れたアナロジーです。CSS3のセマンティクスは、プレゼンテーション言語のセマンティクスと密接に関連しています。
SK-logic

2
ウィンドウ処理とCTEを使用したSQL(SQL:2003)もチューリング完全であることに注意してください。
イェルクWミッターク

1
「今日、主流の多目的非チューリング完全言語はありません。」–外部ストレージなしのCはチューリング完全ではありませんが、非常に汎用的で主流です。(まあ、私は個人的にはそれがUnixカーネルを書くためのドメイン固有言語であり、それでも特に上手ではないと主張しますが、世界は同意しません。)
JörgW Mittag '31

-3

チューリングの不完全な言語が主流ではない理由は、必要なときにいつでも必要なときに独自の言語を実装するのが簡単だからです。興味深い例はbitcoin-scriptです:https : //github.com/bitcoin/bitcoin/blob/master/src/script.cpp


5
本当に?自分でCoqを最初から実装することを考えていますか?
SKロジック

これはあなたの意見だけですか、それとも何らかの形でバックアップできますか?
gnat 2014年

例は、再帰、無制限の反復、または他のチューリングターピットを必要としないすべてのドメイン固有の言語です。また、私たちのほとんどは、基本的な演算を処理するある種の単純な計算機を実装していると思います。
MauganRa 2016年

1
ただし、チューリング言語を不完全なままにしておくのは簡単なことではありません。明らかなTuringターピットがなくても、基盤となるプラットフォームの1つを使用できるようにするコンパイラのバグが常に含まれている可能性があります。
MauganRa 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.