読者です 読者をやめる 読者になる 読者になる

Hashへの生成順は保障されないのか?

という件が、まぁMLで話題になっているというのは
話題になっているのかもしれないですが、
ちょっと興味を持ってMLを少し追ってみていたりしました。


個人的には格納した順番で取り出したい、ということは今までになくて、
任意の順番で取り出したいなら、keyをその順番にソートしておけばよく、
Hashで実装されている以上は、
(効率のために)順番を期待するべきでない、という(他言語による)知識があるので、
何もしない状態でHashから「格納順にとりだしたい!」ということがそもそも思いつかなかった。


JavaでもHashMapとLinkedHashMapがあるけど、
LinkedHashMapを使った憶えがない。


ただ、
Rubyは「大クラス主義」
(細かいクラスをたくさんつくるのではなく、便利な少数のクラスをつくる)らしいので、
時間効率、空間効率が許容可能だからこれでいくよっ!
みたいな感じで決めてしまうのが良いのかもなぁ、とか部外者なのに考えた。
Rubyにとっての英断を下す人が誰か、
とか最終的な意志決定権が誰にあるのか知らないけど。

ハッシュエントリひとつあたり2ワードの増加が問題にな
るような局面ではRubyの使用そのものが不適切な可能性が高いと思
います。

まさに、Hashのこれらの効率性が「そこまで」問題になるようなら、
それはRubyの場ではないのだ、と言えてしまうんだなぁ、とかも考えて、
好きにすればいいんじゃないの?(超無責任)

  • 今のままでも誰も困らない
  • 順序が保証されるようになっても誰も困らない*1

個人的にはどっちに傾いても良いんだけど、
議論が面白いので満足。

*1:ある日突然知らない間に変わらないなら