Scala のマクロと C++ テンプレートはどちらも、コンパイル時のメタプログラミングへのアクセスを提供します。類似点と相違点について詳しく教えてください。表現力は同じですか?
2 に答える
10
それらの重要な違いの 1 つは、Scala マクロが Scala で記述されているのに対し、C++ テンプレートは独自のプログラミング言語であり、C++ とはまったく異なることです。C++ は命令型のオブジェクト指向の厳密で不純な言語であり、C++ テンプレートは宣言型のハイブリッド ロジック/関数型の非厳密な純粋言語であり、本格的なプログラミング言語として使用されることを意図したものではなく、したがって必要な機能の多くが欠けています。大規模なプログラミング。
于 2012-10-09T11:44:33.520 に答える
4
どちらもコンパイル時のメタプログラミングを提供し、チューリングも完了していますが、共通点はそれだけです。私は C++ の専門家ではありませんが、私の知る限り、C++ テンプレートが完全にチューリングされているという事実はめったに利用されず、実際のプログラミングにそれらを使用することは困難です。多くの場合、テンプレートはパラメトリック ポリモーフィズム (別名ジェネリック) を提供するためにのみ使用されますが、Scala マクロは Scala で記述され、コンパイル時に言語の全機能を使用できます。
于 2012-10-09T11:34:18.627 に答える