アカウント名:
パスワード:
これってC++で言うところのTemplateと同じものと考えてOK? それとも違う?
違います。 C++のテンプレートってのは「型紙」で、パラメータを与えることでコンパイル時にコードを展開(インスタンス化)する。別の型をパラメータに与えて使う場合はその型用のコードがインスタンス化される。基本的には文字列操作(マクロ展開)のようなイメージ。 Javaのgeneric typeは、パラメータ型ごとにインスタンス化されるわけではない。生成されるコードは1つだけ。 生成されるバイトコードで実行時に型チェックをするコードが含められたりするわけではないの
もともとC++のテンプレートはgeneric typeに相当するものを速度を犠牲にすることなく実装しようとして考え出されたものでしょう?generic typeとかtype polymorphismとかの話は関数型言語の世界では古くからあって、C++もそれを取り込みたかったわけ。でも速度は犠牲にしたくなかったから、テンプレートでマクロ展開っていう方向性になって、使い勝手は悪くなった。一方、JavaはSMLなどの関数型言語も十分考慮されて設計されたけれど、取りこぼしもあって、それを今やろうとしているだけだと思う。
だから言
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
計算機科学者とは、壊れていないものを修理する人々のことである
generic type (スコア:0)
これってC++で言うところのTemplateと同じものと考えてOK?
それとも違う?教えて、エライ人。
Re:generic type (スコア:1, 参考になる)
違います。
C++のテンプレートってのは「型紙」で、パラメータを与えることでコンパイル時にコードを展開(インスタンス化)する。別の型をパラメータに与えて使う場合はその型用のコードがインスタンス化される。基本的には文字列操作(マクロ展開)のようなイメージ。
Javaのgeneric typeは、パラメータ型ごとにインスタンス化されるわけではない。生成されるコードは1つだけ。 生成されるバイトコードで実行時に型チェックをするコードが含められたりするわけではないの
Re:generic type (スコア:0)
もともとC++のテンプレートはgeneric typeに相当するものを速度を犠牲にすることなく実装しようとして考え出されたものでしょう?generic typeとかtype polymorphismとかの話は関数型言語の世界では古くからあって、C++もそれを取り込みたかったわけ。でも速度は犠牲にしたくなかったから、テンプレートでマクロ展開っていう方向性になって、使い勝手は悪くなった。一方、JavaはSMLなどの関数型言語も十分考慮されて設計されたけれど、取りこぼしもあって、それを今やろうとしているだけだと思う。
だから言
Re:generic type (スコア:0)
Tigerはいままで「総称性」が「制約付き総称性」になった という話です。
generic typeという名は不適切でSunが悪いんです。 「リフレクション」もそうだし。