アカウント名:
パスワード:
JVM上で動くのだから過去のライブラリにかんしちゃ問題ないんでないの?
C++から複雑さを取り除いたことが売りの一つだったはずのJava言語が、今やジェネリックスだのアノテーションだのforeachだのを追加して複雑になっていくことへの批判だろ。
ジェネリックス→List等と書けるようになっただけでも十分進化。関係ない変なデータを入れるミスが減る&IDEの推測が洗練されるので、むしろ楽になってる。(toArray()がObject[]を返すのだけはどうにかしろって感じですが)アノテーション→メタデータをつけられるのは便利。ちゃちゃっとオーバーライド元の関数を調べたり、「過去のモジュール用に仕方なく残してあるんだから新規開発で使うなって言っただろ!」みたいなメソッドにマークをつけられたり。foreach→ループ変数の書き間違い(2重ループのなかでjにしなきゃいけないのにi使ってたとか)が減るって便利じゃないですか? いちいちint i=0; isize; i++って書くのもめんどくさいですし。
挙げられた例は当時「ようやく入ったか、何で今まで入れてなかったんだ」って不満に思っていたところなので、そこを複雑さって言われてしまうとちょっと納得しにくいです。
シンプル=最強ならBrainf*ck最強伝説ですよ。
> →List等と書けるようになっただけでも<>を消されちゃったんですねわかりますん。> toArray()がObject[]を返すのだけはどうにかしろtoArray(T [])じゃダメなの?
<>を消されちゃったんですねわかりますん。
ご推察の通りですorz 正しくはList<Integer>。そのもう少し下にある「isize」も「i<size」の誤り。プレビューで確認する癖をつけないといけませんね。
toArray(T [])じゃダメなの?
実際にはそちらを使ってます。ですけど、「IntegerのListだ」って予め教えてあるんですから、何も言わなくてもIntegerの配列を返してくれるのが自然な話じゃないですか。多分何か事情があってこうなったんでしょうけど…。
Map<K,V>::get(Object key)が結構きついputはちゃんとput(K key, V value)なので気付かずにやってしまいがちジェネリクス以前との互換性のためなのだろうか?
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー
重要なのはライブラリ (スコア:2, すばらしい洞察)
世に受け入れられているのはライブラリが豊富だからです。
業務では仕様が安定している事も重要ですが、まずは趣味で使ってもらう事を考えると二の次。
DやらなにやらC/C++の汚さに業を煮やしてオレオレC言語を作ろうとする流れはよくありますが、
最初からよっぽど豊富なライブラリを備えていない限りは
既存のライブラリとリンクが出来ないと使う気が起きないわけですね。
となると最低限既存ライブラリとマングルを合わせる事が必要ですが、それでもまだ使う気が起きないので
既存ライブラリのヘッダファイルの読み込みもサポートして欲しいわけです。
そしたら結局既存言語のパーサーを備えなきゃいけないので、
じゃあ既存言語使えば良いじゃん、というジレンマ。
と、ここまで書きましたが、過去の不満点を改良した言語には期待しています。
Re: (スコア:0)
JVM上で動くのだから過去のライブラリにかんしちゃ問題ないんでないの?
Re: (スコア:0)
C++から複雑さを取り除いたことが売りの一つだったはずのJava言語が、
今やジェネリックスだのアノテーションだのforeachだのを追加して複雑になっていくことへの批判だろ。
Re: (スコア:2, 参考になる)
ジェネリックス
→List等と書けるようになっただけでも十分進化。関係ない変なデータを入れるミスが減る&IDEの推測が洗練されるので、むしろ楽になってる。(toArray()がObject[]を返すのだけはどうにかしろって感じですが)
アノテーション
→メタデータをつけられるのは便利。ちゃちゃっとオーバーライド元の関数を調べたり、「過去のモジュール用に仕方なく残してあるんだから新規開発で使うなって言っただろ!」みたいなメソッドにマークをつけられたり。
foreach
→ループ変数の書き間違い(2重ループのなかでjにしなきゃいけないのにi使ってたとか)が減るって便利じゃないですか? いちいちint i=0; isize; i++って書くのもめんどくさいですし。
挙げられた例は当時「ようやく入ったか、何で今まで入れてなかったんだ」って不満に思っていたところなので、そこを複雑さって言われてしまうとちょっと納得しにくいです。
シンプル=最強ならBrainf*ck最強伝説ですよ。
Re: (スコア:0)
> →List等と書けるようになっただけでも
<>を消されちゃったんですねわかりますん。
> toArray()がObject[]を返すのだけはどうにかしろ
toArray(T [])じゃダメなの?
Re: (スコア:1)
ご推察の通りですorz 正しくはList<Integer>。そのもう少し下にある「isize」も「i<size」の誤り。
プレビューで確認する癖をつけないといけませんね。
実際にはそちらを使ってます。ですけど、「IntegerのListだ」って予め教えてあるんですから、何も言わなくてもIntegerの配列を返してくれるのが自然な話じゃないですか。
多分何か事情があってこうなったんでしょうけど…。
Re:重要なのはライブラリ (スコア:0)
Map<K,V>::get(Object key)
が結構きつい
putはちゃんと
put(K key, V value)
なので気付かずにやってしまいがち
ジェネリクス以前との互換性のためなのだろうか?
Re: (スコア:0)