2

この記事で、筆者は次のように主張しています。

...プログラムは、テンプレートのインスタンス化メカニズムが、コンパイル時に重要な計算を実行できるプリミティブな再帰言語であることを示しました。

原始再帰関数の理論を掘り下げる計算理論のクラスを教えるのを手伝っているので、これはかなり興味深いと思いました。しかし、テンプレート メタプログラミングはチューリング完全であるという印象を受けました。これは、原始的な再帰的であると言うよりも厳密に強いステートメントです...そして結局のところ、停止に失敗するテンプレート メタプログラムを作成することはそれほど難しくありません。 .

何か不足していますか?Template Metaprogramming は厳密にプリミティブな再帰言語ですか、それともより広い範囲のプログラムをカバーすると信じているのは正しいですか?

4

2 に答える 2

3

テキストを読みすぎているだけだと思います。「プリミティブ」は「プリミティブ再帰」を意味するのではなく、「再帰言語」です(奇妙に聞こえますが、関数型言語として説明すると思いますが、しかし、気にしないでください)、これは原始的です。

TMP を関数型言語として見ると、それほど洗練された言語ではありません。したがって、それは原始的なものです。

しかし、あなたの言う通り、TMP は確かにチューリング完全です。

多くの人が原始再帰言語について聞いたことがあるとは思えないので、これは残念な言葉の選択です。

于 2011-12-22T07:15:06.233 に答える
1

Unruh のプログラムは、原始的な再帰、つまりループを示しただけでした (これが起こったとき、私は実際にその場にいました!)。ただし、完全な再帰がサポートされていることがすぐに認識されました (実際、実装では末尾の再帰最適化が行われなかったため)。

于 2011-12-29T09:03:47.917 に答える