2011-01-20 13 views
0

ジェネリックスがJavaで実装される方法が複雑すぎ、非常に醜い(構文)ように見えます。最も醜いジェネリック実装(または代替)の言語

ジェネリックのコンセプトは大丈夫だと思いますが、実装はちゃんとしています。

どのような言語が、最も簡単でシンプルでクリーンなジェネリックの実装であるか疑問に思っていました。 ....またはおそらくジェネリック医薬品の代わりに同じ目的で言う。

+1

ジェネリックスがその言語でどれくらいいいのかに基づいて言語を選択しましたか?ジェネリックスは、ライブラリを書く必要がある場合にのみ醜いです。使用する場合は、それらのライブラリを使用する必要があります。 –

+1

これは決して主観的でも議論的でもありません。これは単に異なるプログラミングスタイルを比較し、対照しているだけです。人々が好きなプログラミング言語の欠陥を指摘しただけなので、話題を禁止する人は非常に哀れです。 Javaがこれまでに開発されたプログラミング言語の中で最も優れていると思っているからといって、他の誰もがあなたに同意しなければならないというわけではありません。あなたが人生を得て、好きではない視点を中止してください。 – Jay

+0

私はJava言語ではないのですが、私は1998年からJavaプログラマとして雇われています(Java 1.1).....私は、どの言語がジェネリックコンセプトのより良い実装を持つのだろうかと思っています(例)ここにいくつかの良い答えがあります...だから私はなぜこれが禁止されているのか分かりません。私が前に投稿したように、ジェネリックの実装は、まだそれらを持っていない言語のために考慮されているので、質問しました。 –

答えて

2

タイプシステムを簡略化する2つのオプションがあります。

Type InferenceおよびDynamic Typing


型推論

は、型推論の背後にある考え方は、あなたのコードは、型情報を省略して簡略化することができますので、あなたのために、オブジェクトの種類を把握するために、コンパイラを持つことです。それには他の利点もあります。

型推論といくつかの一般的な言語:


動的型付け

ダイナミックな型指定の言語では、ダイナミックな型指定で無料で入手できるため、ジェネリックスは必要ありません。これがどのように型システムを簡素化するかについてもっと理解したい場合は、duck typingを調べてください。合理的な鴨のタイピングの背後にHere's a short intro.

動的型付けを持ついくつかの一般的な言語は以下のとおりです。


You'r Javaのジェネリックスは非常にうまく実装されていませんでした。これは設計によるものです。なぜ、駄目なジェネリックの実装ですか?彼らがJavaジェネリックの設計をしていたとき、古いコードとの互換性の問題があり、実装するために既存のVMに大幅な変更が必要でした。最終的に彼らはあきらめ、Javaに不十分な実装を与えました。

http://code.stephenmorley.org/articles/java-generics-type-erasure/
http://www.ibm.com/developerworks/java/library/j-jtp01255.html
Why do some claim that Java's implementation of generics is bad?

C++C#はるかに優れたジェネリックの実装を持っています。 Javaのような言語や同様のジェネリックの実装が必要な場合は、それらをチェックしてください。

+1

あなたがダウンしているならあなたが同意しない点とその理由を、少なくとも啓発することができます。 – Jay

1

私は、エッフェル内のジェネリックが最もクリーンかもしれないと思います。持って

2

あなたはより簡潔かつエレガントな何かを探しているなら、私は(あなたは、Javaのと同様のAPIをしたい場合は、多分のF#)前方OCamlのまたはHaskellののような関数型言語を見て、あなたをお勧めしますいわゆるタイプの再構築これは実際のジェネリックスを実装する方法です。多少厳密ですが、表現力を失うことはありません。構文を取得するだけです。

どのような場合でも、あなたの質問は非常にばかげています。あなたは単に「ジェネリックス」に従って言語を選択することはありません。開発しようとしているものを含む長い複雑な物語です。すべてのプログラムは、そのストーリーとニーズを持っています。

+1

実際にジェネリックスはまだそれがない言語(Fantom)のために考えられている...だから、私は "ベスト"アプローチを見たいと思ったのです。 –

+0

優雅さが問題なら、ハスケルのようなものはありません:) – nawfal

0

Java Genericsの作成者は、Scalaという言語を作成しました。 Scalaの "Generics"(Type Parameters)は、Javaに比べるとはるかに洗練されています。

+3

IMHO、Scalaは、上に設計された複雑で汚れた言葉です。私はその設計目標が間違っていると思う。なぜ誰かがScalaが良いアイデアだと思うのか分かりません。 – Jay

+0

私はあなたのコメントが良いアイデアだと思ったのはなぜ分かりませんか? – adrianboimvaser

+0

(謙虚でしかも意見を表明している)意見は常に良いアイデアです。 – Jack

関連する問題