私がこのミームを初めて見たとき:
そうだね思ったけど今はもう分からないつまり、C++のテンプレートメタプログラミングは、ミームが主張しているのか、それとも意図的だったのか、偶然に発見されました?
Bjarne&coは実際に可能性を認識せずにそれを作りましたか?
含意の単純なリストを与えることと、一般性を目的としたC++ Stroustrupを使用すること以外にも、発明には多くのものがあります。
想像できることしかできない言語に興味がない
これは からです。あなたが本当に何をしていたのか理解できませんでしたか? :
これはとても人気があるようです。むしろ、C++の成功が何らかの事故であるように、私には手がかりがなかったと断言するのが一般的であるようです。はい、そのような発言は私を苛立たせます。何十年にもわたって私の仕事と私の友人の多くのハードワークを却下するからです。
最初に完全に明確にしておきましょう。いいえ、C++の暴走の成功を予想していなかったし、いいえ、C++で使用されるすべての手法やC++のすべてのアプリケーションを予測していませんでした。もちろん違います!
ただし、次のような文は非常に誤解を招くものです。
- BjarneはC++を理解していません!
- BjarneはRAIIと確定的破壊を予期していませんでした!
- Bjarneはテンプレートメタプログラミングを予期していませんでした。
C++の設計と実装の基準を概説しました。 「私が想像できることしかできない言語には興味がありません」、そして効率のために「施設は単に有用であるだけでなく、手頃な価格でなければならない」という明確な目的を明確に目指しました。
[切る]
後で
std::conditional
になった場合、Jeremy Siekが最初にコンパイル時間を表示したときはとても驚きましたが、私は一般性を目指していました(そして、チューリング完全性モジュロ変換制限を取得しました)。 Erwin UnruhがISO標準委員会の進化ワーキンググループに最初のテンプレートメタプログラムであると広く信じられているものを提示したとき、私はすぐにC++への制限に反対しました。テンプレートメタプログラミングを殺すために私がしなければならなかったことは、何も言わないことでした。代わりに、私のコメントは「うわー、それはすごいです。私たちはそれを妥協してはいけません。それは役に立つかもしれません。」という言葉に沿ったものでした。すべての強力なアイデアと同様に、テンプレートメタプログラミングは誤用および乱用される可能性がありますが、これはコンパイル時の計算の基本的な考え方が悪いことを意味するものではありません。そして、すべての強力なアイデアと同様に、その含意と手法は、多くの個人からの貢献により、時間の経過とともに現れました。
次の抜粋が適用されます: https://creativecommons.org/licenses/by-sa/3.0/
TMPの歴史
歴史的にTMPは偶然の産物です。 C++言語の標準化の過程で、そのテンプレートシステムがたまたまチューリング完全である、つまり、原則として計算可能なあらゆるものを計算できることが発見されました。これの最初の具体的なデモンストレーションは、Erwin Unruhによって作成されたプログラムで、実際にはコンパイルが完了していませんが素数を計算しました。素数のリストは、コードをコンパイルしようとするとコンパイラーによって生成されたエラーメッセージの一部でした。
ソース: https://en.wikibooks.org/wiki/C%2B%2B_Programming/Templates/Template_Meta-Programming#History_of_TMP