1. dico_leque

    Posted

    dico_leque
Changes in title
+いろいろな言語での Map, Dictionary 的なものの名前
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,40 @@
+いろいろな言語で、キーと値とを対応づけるデータ構造、いわゆる連想配列、辞書、……たちがどのように呼ばれているか、気になったので調べてみた。
+
+おおよそ、対応表(map)、辞書(dictionary)、実装の名前をそのまま(hash-table)、 Perl風(hash)に分けられると思う。
+
+<dl>
+<dt>CommonLisp:</dt>
+<dd>hash-table</dd>
+<dt>Scheme:</dt>
+<dd>hash-table (SRFI-69, 125), hashtable (R6RS Scheme, SRFI-126)</dd>
+<dt>Haskell:</dt>
+<dd>Map</dd>
+<dt>OCaml:</dt>
+<dd>Hashtbl, Map</dd>
+<dt>SML:</dt>
+<dd>hash_table (sml-nj-lib)</dd>
+<dt>C++:</dt>
+<dd>map, multimap, unordered_map, unordered_multimap</dd>
+<dt>Java:</dt>
+<dd>Map, HashMap, Hashtable, LinkedHashMap, TreeMap, WeakHashMap, ...</dd>
+<dt>Scala:</dt>
+<dd>Map, HashMap, ListMap, SortedMap, TreeMap, LinkedHashMap, MultiMap, OpenHashMap, WeakHashMap, ...</dd>
+<dt>ECMAScript:</dt>
+<dd>Object</dd>
+<dt>Perl:</dt>
+<dd>hash</dd>
+<dt>Ruby:</dt>
+<dd>Hash</dd>
+<dt>Smalltalk:</dt>
+<dd>Dictionary</dd>
+<dt>Python:</dt>
+<dd>dict</dd>
+<dt>PHP:</dt>
+<dd><a href="http://www.php.net/manual/en/language.types.array.php>">array</a></dd>
+</dl>
+
+その他の言語での呼び名や、構造を操作する関数/メソッドの名前、リテラル表記、等々の比較については、 [syntax across languages per category / dictionary](http://rigaux.org/language-study/syntax-across-languages/VrsDatTps.html#VrsDatTpsDctnr) も参照。
+
+ちなみに、『プログラミング Perl 改訂版』(Larry Wall, Tom Christiansen, Randal L. Schwartz 共著、近藤嘉雪訳、オライリー・ジャパン、 1997) p.8 ではhashという名前の由来について以下のように解説している:
+
+> そのためハッシュは「連想配列」(associative array)と呼ばれることもある。しかし、これは怠惰なタイピストにとったタイプするのが面倒だし、頻繁に使われるので、私たちはもっと短かくて、ぴりっとした(snappy)呼び名を付けることにしたのだ。「ハッシュ」という名前を選んだ別の理由は、中身が順番付けされていないことを強調するためである(ハッシュは、内部的にはハッシュ表を使って実装されている。ハッシュに値をどんなにたくさん格納しても、動作が速いのは、ハッシュ表のおかげである)。