質問

質問:はコンパイラで、一種のGödelNumbering Program?

ウィキペディアは、コンパイラが次のとおりです。 "コンピューティングでは、コンパイラは、1つのプログラミング言語(ソース言語)で書かれたコンピュータコード(ソース言語)を別の言語(ターゲット言語)に変換するコンピュータプログラムです。 https://en.wikipedia.org/wiki/compiler

またウィキペディアは私達に告げます。 "Gödelの番号付けは、各シンボルと整形式の形式のいくつかの正式な言語の形式の形式で、そのギョデル番号と呼ばれる独自の自然数を割り当てる関数です。 https://ja.wikipedia.org/wiki/g%C3%B6DEL_NUMBERINGED / A. >

仕事を成し遂げた:私の直感は、はいと言っています。私の思考の行です:プログラミング言語は正式な言語です。すべてのプログラムは整形式の式であり、コンパイラはこの式の各シンボルをコンピュータが読み取ることができる数の2進表現に割り当てます。 (詳細:コンピュータはユニバーサルチューリングマシンであるので、算術演算を実行できます)

しかし、私はコンパイラがどのように機能するかの詳細はわかりませんので、私の推論が正しいかどうか尋ねるためにここに来ました。

役に立ちましたか?

解決

いいえ。次の2つのC関数を考慮してください。

int f(int a) {
    return a * 2;
}

int g(int a) {
    return a + a;
}
.

ここで少しリベラルである場合、両方とも「正式な言語の整形式」です。最適化がオンになっているのですが、これら2つの関数をまったく同じコードにコンパイルします。これは、Gödelの番号付けの一意性に違反します。

ライセンス: CC-BY-SA帰属
所属していません cs.stackexchange
scroll top