11月 28
C++ などに代表される言語機能のテンプレート。
.NET や Java などに代表される言語機能のジェネリクス。
これらの違いをあまり気にしていなかったが、いろいろネットで漁ってみると、言語によっても更に細かく違うようです。
大きな違いだと思うのは次の1点。
テンプレート:コンパイル時に型が決定されたバイナリを静的に作る
ジェネリクス:VM などが実行時に動的にインスタンス化する
速度かバイナリサイズか、みたいな気もしますが、ジェネリック・プログラミングなどに適しているのはジェネリクス機能なんでしょうね。
現在は、動的に外部リンクされる前提のプログラムが主流になったわけですし。
テンプレートだと、使われるかわからない型の分までバイナリ化するのは無駄ですし、言語仕様が拡張されて型が増えたりしたら、対応できませんね。



Recent Comments