6
C実装の最大計算能力
この本(または、必要に応じて言語仕様のその他のバージョン)を調べてみると、C実装の計算能力はどれくらいですか? 「C実装」には技術的な意味があることに注意してください。実装定義の動作が文書化されているCプログラミング言語仕様の特定のインスタンス化です。AC実装は、実際のコンピューターで実行できる必要はありません。ビット文字列表現を持つすべてのオブジェクトと、実装定義のサイズを持つ型を含む、言語全体を実装する必要があります。 この質問のために、外部ストレージはありません。実行できる唯一の入出力は、getchar(プログラム入力を読み取るため)およびputchar(プログラム出力を書き込むため)です。また、未定義の動作を呼び出すプログラムは無効です。有効なプログラムの動作は、C仕様に加えて、付録J(C99の場合)にリストされている実装定義動作の実装の説明で定義されている必要があります。標準で言及されていないライブラリ関数の呼び出しは未定義の動作であることに注意してください。 私の最初の反応は、Cの実装はアドレス指定可能なメモリの量に制限があるため、有限オートマトンに過ぎないということでした(sizeof(char*) * CHAR_BIT格納する際に個別のメモリアドレスは個別のビットパターンを持たなければならないため、ストレージのビット以上をアドレス指定することはできません)バイトポインター)。 しかし、実装ではこれ以上のことができると思います。私が知る限り、標準は再帰の深さに制限を課していません。したがって、必要なだけ再帰関数呼び出しを行うことができregisterます。アドレス指定不可能な()引数を使用する必要があるのは、有限数の呼び出しを除いてすべてです。したがって、任意の再帰を許可し、registerオブジェクトの数に制限のないC実装は、決定性プッシュダウンオートマトンをエンコードできます。 これは正しいです?より強力なC実装を見つけることができますか?チューリング完全なC実装は存在しますか?