アカウント名:
パスワード:
これってC++で言うところのTemplateと同じものと考えてOK? それとも違う?
違います。 C++のテンプレートってのは「型紙」で、パラメータを与えることでコンパイル時にコードを展開(インスタンス化)する。別の型をパラメータに与えて使う場合はその型用のコードがインスタンス化される。基本的には文字列操作(マクロ展開)のようなイメージ。 Javaのgeneric typeは、パラメータ型ごとにインスタンス化されるわけではない。生成されるコードは1つだけ。 生成されるバイトコードで実行時に型チェックをするコードが含められたりするわけではないの
もともとC++のテンプレートはgeneric typeに相当するものを速度を犠牲にすることなく実装しようとして考え出されたものでしょう?generic typeとかtype polymorphismとかの話は関数型言語の世界では古くからあって、C++もそれを取り込みたかったわけ。でも速度は犠牲にしたくなかったから、テンプレートでマクロ展開っていう方向性になって、使い勝手は悪くなった。一方、JavaはSMLなどの関数型言語も十分考慮されて設計されたけれど、取りこぼしもあって、それを今やろうとしているだけだと思う。
だから言
「実行時エラー検査がコンパイル時に移っただけ」という表現が元コメントにあるけれど、それにこそ強い型付け存在意義があるわけで、「だけ」というのはかなり語弊があると思う。
「痛くない注射針を作れる金型技術を持ってるのは世界で岡野工業株式会社だけ」
チェックがコンパイル時に前倒しにできるようになった、というただそれだけの話。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
私はプログラマです。1040 formに私の職業としてそう書いています -- Ken Thompson
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)
Re:generic type (スコア:0)
Re:generic type (スコア:1)
「だけ」という限定は、限定しているだけで、価値判断をふくんでません。ここで例題です。
この文章から、岡野工業株式会社を軽く見ていたり、価値がないとか、作れても作れなくても大差ないとか、そんなことが読み取れますでしょうか。
あと、SmallTalkじゃなくて、Smalltalkね。ありがちなミスだけどね。
Re:generic type (スコア:1)
私が(ってACだったのだが) という言い方をしたのは、もと記事の投稿者も、あと他の人も 「C++のテンプレートがJavaに入るの?うげー覚えるの大変、言語が汚くなるー困るー拡大はんたいーはんたいー」というような雰囲気だったから、そうじゃないのだぞと。型制約に基づくコンパイルチェックという(Javaでは)普通のことが普通にできるようになった、ただそれだけのことなんだよ、むしろ今までがおかしかったんだ、とまあそういうことを言いたかったのです。それがうまく伝わらなかったのはぼくにも責任の一端があるってことではありますが。
「型制約があろうがなかろうが、大差ない。そんなのは重要な差ではない」なんていう主張をするつもりは毛頭ありません。私も型制約のある言語の方が好きです(特に業務で使う場合には・特に他人に書かせる場合には、と血の涙を流しながらnot AC)。