Dictionary 字典的更好名称

Dictionary 字典的更好名称,dictionary,naming,Dictionary,Naming,我正在设计一种编程语言,所以我一直在考虑基类型的命名方式 “字典”似乎不是字典的好名字。它们不是有定义的单词列表;它们不处理单词,不处理定义,也不是列表。他们与单词“dictionary”唯一模糊的联系是,一个人执行“查找”就像一本纸质词典一样(这是一个称之为“电话簿”的好理由) “HashTable”描述了一个可能发生变化的实现 “关联数组”(来自JavaScript)获得分数是因为“关联”是一个很好的形容词,但失去分数是因为“数组”还描述了一个实现,更糟糕的是,描述不准确 “键/值对集”似乎

我正在设计一种编程语言,所以我一直在考虑基类型的命名方式

“字典”似乎不是字典的好名字。它们不是有定义的单词列表;它们不处理单词,不处理定义,也不是列表。他们与单词“dictionary”唯一模糊的联系是,一个人执行“查找”就像一本纸质词典一样(这是一个称之为“电话簿”的好理由)

“HashTable”描述了一个可能发生变化的实现

“关联数组”(来自JavaScript)获得分数是因为“关联”是一个很好的形容词,但失去分数是因为“数组”还描述了一个实现,更糟糕的是,描述不准确

“键/值对集”似乎最为精确,但太长而没有用处(您真的想每次都键入“KeyValuePairSet”吗?)

如果我们将“键/值对”称为“关联”,则得到“AssociationSet”。这对我来说是最好的,但还没有跳出来给我作为正确的答案;它仍然很长,“设置”仍然感觉有点错误。“AssociationList”更糟糕(“list”意味着排序,而这并不存在)。我只简单地考虑了“关联”,但这听起来更像是一个实例而不是类的名称。“RelationSet”和“PairSet”较短,但描述性较差(两者都没有抓住这样一个事实,即它是键对值的单向关系;值对键在字典上下文中没有意义)

你知道什么是更好的词典名称吗?

“地图”


您正在将一个值映射到另一个值。

本质上,它们是带有键索引器的列表。您可以调用KeyValuePairCollection

您提到您不想使用“hashtable”,因为它与给定的实现相关联。但这一定是件坏事吗?开发代码的人会关心类似字典的语言结构是否具有类似哈希表的性能特征,简单地将其称为哈希表是最清晰的沟通方式


然而,如果你真的要有一个通用的接口,然后是具体的实现(比如Java如何有
Map
接口,然后是
HashMap
TreeMap
等实现),那么我同意一个付费的书呆子的看法,“Map”可能是最好的选择。

Map
是一个好的精确的名字,正如我的建议


我也喜欢Lua使用的名字。

字典是标准的计算机科学术语。抱怨现实世界的字典与抽象数据类型不同,就像抱怨一个“”并不是一堆杂乱无章的东西,或者一个“”并没有让人们排队买票。许多/大多数计算机科学术语都是类比

也就是说,另外两个合理的术语是“map”(因为它是从键到值的映射)和“table”(因此是“hash table”,一个用哈希实现的表)

Java实际上使用了术语“”(以及“”——Map是在后来意识到dictionary应该是一个接口时添加的,但是由于已经使用了这个名称,所以他们不得不使用一个新名称。)

“表”的缺点是容易与之混淆。

列表是否意味着排序?不是在现实世界中-购物,列表,待办事项列表,洗衣单。。。。这些东西都不是订购的,它们只是写在纸上的东西


不可避免地,您选择的任何单词都会与日常用法和/或与专业IT用法的关联发生冲突。所以,如果你真的想要一个更好的词,你需要一个新的隐喻,而不是试图重新利用其他语言的名称。那么,机架怎么样?或
索引数据库
KeyPairStash

也许这是我的Perl背景,但我更喜欢哈希看,这个符号看起来像散列。如果你有一个散列。就我的2美分

[编辑]

想象一个盘子杂烩。好东西,不是罐装的。加上大块的土豆、洋葱、辣椒,也许还有一些腌牛肉。乍一看,它看起来像一大堆美味的随机食物。但你可以在检查后说出零件的名称。这是一种类型,你是在上面涂上可怜的番茄酱还是在上面下蛋。现在想想玛莎·斯图尔特的一盘蔬菜。每样东西都是一份很好的蔬菜单。你可以把它浸在牧场或腐殖质里,或者堆在盘子里。见鬼,你可以拿些西红柿放进土豆泥里

这些都是类型。IMHO说,这是一种组织数据的方法,建议如何处理数据,但它与数据是分开的

在我看来,地图与其说是一种类型,不如说是一种行为。以下是如何吃食物,或者更好的是食物如何进入你的口腔


最后,它只是一个名字。

我觉得我应该选择“索引”或“键索引”,“键索引”

编辑:
哈哈,迪因迪克斯!或者也许我完全理解了dict的错误?

在Python中,字典是映射的唯一正式例子

不难看出,人们可能会争论什么叫做“映射”,例如,在数学中,函数始终是映射。我可以想象,我们可以用
\uu getitem\uu()
映射调用任何东西,该映射还将包括序列类型,例如
list

但是,请注意,有一个重点(矿山):

映射:容器对象(例如
dict
) 支持任意键 使用特殊方法进行查找
\uuu获取项目\uuuu()


所以,为了回答你的问题,我建议使用映射或映射。

据我所知,厄运是……自然界中存在着某种关联性,它具有键值关系。我们正在寻找一个具有相同含义的词……因此,如果要用这个词,我会称之为AssociateKVMap……但不是
Assoc
Array
Dict
Hash
Index
KeyValue
Map
Table
NSMutableDictionary
hash_map