12

XまたはY プログラミング言語である(またはそうでない)ことを示すために必要な基準または基本的な機能は何ですか?

私はいくつかの読書を行いました ( HTML はプログラミング言語と見なされますか?チューリング完全、およびその他)、言語または構文がプログラミング言語と見なされるにはチューリング完全である必要があるという結論に達しました。これは正しいです?それは十分ですか?

また、何かがチューリング完全かどうかを判断するにはどうすればよいですか? 具体的な基準はありますか?

フロー制御構造 (条件ステートメントとループ) を持つことは、チューリングが完全であると見なすのに十分ですか?

4

4 に答える 4

7

チューリング完全ではないプログラミング言語が存在します。非チューリング完全言語のいくつかの例については、以下を参照してください。実用的な非チューリング完全言語?

チューリング完全ではない言語を使用することの利点は、たとえば、必要なタスクを実行するだけで十分であると同時に、他の方法では証明できないプログラムのプロパティを証明できるほど単純である可能性があることです。これは、たとえば、プログラムがエラーなしで実行されることを知ることが重要な場合に役立ちます。

プログラミング言語を正確に構成するものは少し曖昧ですが、それはあなたが計算を表現できる言語であると言うことができます。HTMLを見ると、何かを計算するドキュメントを作成することはできません。それは単にページがどのように見えるかをブラウザに伝えるだけです。注意すべき重要な部分は、新しいものは何も計算しないということです。

マルセロが言うように、それはかなり曖昧です。

言語がチューリング完全であるかどうかを判断することに関して、私はあなたにこの質問を参照します:言語の「チューリング完全性」を評価するための実際的なガイドラインは何ですか?

于 2011-01-31T11:03:15.943 に答える
2

XまたはYがプログラミング言語である(またはそうでない)ことを伝えるために必要な基準または基本的な機能は何ですか?

Marcelo Cantosがすでに言ったように、特にチューリング完全ではないがプログラミング言語と見なされることが多いドメイン固有言語(DSL; http://en.wikipedia.org/wiki/Domain-specific_language )があるため、多少あいまいです。

そして、チューリング完全であるかどうかをどのように判断しますか?特定の基準はありますか?

プログラミング言語がチューリング完全であるかどうかを判断する1つの方法は、その中にチューリングマシン(またはラムダ計算の実装)を作成することです。

もう1つの方法は、すべてのmu-recursive関数 http://en.wikipedia.org/wiki/%CE%9C-recursive_function がプログラミング言語で計算できることを証明することです。

命令型プログラミング言語がチューリング完全であることを証明できるので、変数の代入、番号0を表す方法、後続関数、先行関数、およびwhileループを表す可能性がある場合、これは別の方法です。

プログラミング言語がチューリング完全ではないことを証明するために時々使用される方法(明らかな理由で常に機能するとは限りません)は、すべてのプログラムが終了するかどうかを確認することです。はいの場合、それはできません。

于 2011-01-31T11:08:09.420 に答える
1

それでは、これらの具体的な定義の結果について考えてみましょう。

チューリング完全言語はプログラミング言語です。CSS はプログラミング言語になります

プログラミング言語はチューリング完全でなければなりません: おそらくそうかもしれませんが、そうでなければプログラムを書くことができます.

はるかに適切な定義:プログラミング言語とは、プログラムを作成するために使用できる言語です

于 2012-06-26T02:45:49.020 に答える
0

「プログラミング言語」という用語はややあいまいです。正規表現はプログラミング言語を構成しますか? 正規表現が完全にチューリングされていなくても、ほとんどのプログラマーはイエスと言うでしょう。

チューリング完全性に関しては、私は専門家ではありませんが、条件付き分岐と無限スタックがあれば十分だと思います (したがって、実機はチューリング完全性を概算するだけです)。

編集:少し調査した結果、これでは不十分であることがわかりました。少なくとも 2 つのスタックと、最小限の数の状態 (および状態遷移テーブル) が必要です。

おそらく、より現実的な尺度は、任意の量の状態を記憶してループを実行できる場合、おそらくチューリングが完了していることです。

于 2011-01-31T10:59:18.287 に答える