2008-08-25

http://anond.hatelabo.jp/20080825233641

教科書的には、その回答で合ってると思う。Java屋じゃないんで詳しいことはしらないが。

教科書レベルではなく、現場レベルでは、違うと思うので、ようはポインタしかとらえていない。

そもそもなぜVector,List,Map などの複数のデータ保存形式があるか?

といえば、データの種別や、それの検索方法、取り扱い方法により、保存方法を変えた方が効率的だ。

という側面から来ている。

そういった、異なるデータには、異なる方式のデータ構造という構造を取っておきながら、

アルゴリズムは共通です。というのにどれだけ意義があろうか?という事。

たとえば、Vectorであれば、コピーならばmemcpyなどの専用命令でDMA転送を期待するが

Listやmapであれば、一つ一つforを回してコピーする必要性がある。

たとえば、1KB単位ブロックVectorソートする場合、スワップの手間がバカにならないので、スワップをなるべくさせないアルゴリズムソートする。

逆にListであれば、個別の要素が、以下に大きくても、スワップの手間は高々ポインタ1つ分なので、スワップを気にせず最適なアルゴリズムソートする。

データ構造が違うと言う段階で、同じアルゴリズムを使うことは少ない。だから、そもそもイテレータアルゴリズムの吸収を期待しない。

つーこと。

もっとも、一般的には、簡単なプログラムであればアルゴリズムを使った方が簡単にできるので、使った方がよいが・・・。

それこそ、DB使った方が早くない?とか、Perlでよくね?とかいろいろな議論が出てくるのだが

今回はあくまでもプロレベルでどうのこうのという話しだったので

普段からチューニングを念頭にプロとして話すとそうなるんじゃね?という話し。

記事への反応 -
  • はてな界隈では、Javaって、あんま人気無いみたいだけど、ちょっと書かせてよ。 SIerでお仕事してると、派遣とか常駐とか言う形で、色んな会社に行って、違う会社の人とお仕事するん...

    • とりあえず、ベテランよりも俺の方が優秀という事が言いたいのだろうが・・・。 いや。うん、2年目って感じで初々しいね。 >Interfaceって何のためにあるんですか? それはね、Java...

      • 教科書的には、その回答で合ってると思う。Java屋じゃないんで詳しいことはしらないが。 教科書レベルではなく、現場レベルでは、違うと思うので、ようはポインタとしかとらえてい...

      • 増田は、この答えを聞いて、 「この人、技術レベルは高そうだけど、コミュニケーションレベルは低そうだなー」 と思いました。

      • 俺javaとかさっぱわかんないペーペーですけど >ListやMapをループで回して値を取る時Iterator使うのは何故? それはね、Javaにはポインタがないからなんだよ。 ポインタのあるC++でもSTL...

      • そんなにポインタが好きなら結婚しろ(藁

      • こういうタイプの人が「ポインタとは整数である」とかのたもーて初心者をつぶすことがある。 講師にいませんでした?w

    • 疑問だが、それって指摘しても直さないから使えないのか(これは確かに致命的) そもそもそれぐらい知ってないと使えないと判断するのかどっちだろう? 本当に致命的にできない人材...

    • スケジュールはカツカツだし、出来ない人間を教育してる暇はないし、できる人間だけでチャッチャと済ましちゃうと、いつまでたっても技術が覚えられない、という図式。 「経験年数n...

    • もうちょっと大人になれよ。

    • # Interfaceって何のためにあるんですか? # ListやMapをループで回して値を取る時Iterator使うのは何故? # staticなメソッドを作るときはどんな時? この辺ハードル高くね? なんか哲学の...

    • 俺はこうきいてる。 C++とJavaそれぞれの設計で気をつけていることはなんですか。 またそれはなぜですか?

    • これって増田は当然C++やRubyも知ってていってるんだよね?

    • 特に、Java 5以降の機能 拡張for構文 Enum 可変長引数 辺りを全く知らなかったり。 Java触ったことないけど、可変長引数なんて追加実装してるんだ。 可変長引数なんて諸悪の根源...

      • javaなんておさわりでしか触ったことが無いけど、どれもわからん。面接とおらんわw Enum と 可変長引数 はなんとなく察せられるが、拡張for構文 はなんのこっちゃ? http://journal.mycom.co.jp...

    • イテレータって概念はすごい判り易いから、じゃ駄目なの? イテレータはすごく使いやすいから、C++開発とかでもわざわざイテレータ実装する事あるよ。 インデックスループとか終了条...

      • なにやらもっと単に論理学的な解答があるらしいよ? 俺にはわからんが。 分かりやすさで言えばインデックスループの方が分かりやすいんじゃないかと思う。 イテレータはもうちょっ...

    • C++とJavaそれぞれの設計で気をつけていることはなんですか。 またそれはなぜですか? この質問って何を意図して聞いているんだろう。 模範解答的なものがある?それとも、回答す...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん