引子:小朋友的提问
程序员们对哈希(Hash)应该都相当熟悉了。但是现在设想一个情境,如果有个8岁的小朋友,用萌萌的眼神看着你,问你什么是哈希呀?你要怎么解释呢?
百度百科的回答
我们先来看看百度百科怎么说:
这个答案很正式,但是很可惜,这东西圈外的大朋友看都不一定能在几分钟内搞懂,直接给小朋友看他肯定懵圈了。
英文环境下的Hash
怎么办? 我们来看看英文里这个词是什么意思。在bing的国际版本搜索Hash,联想出来的前几条就不是程序名词了,而是这些:
我们看看前两个词条~
诶诶? 怎么出来的都是菜谱了?
而Hash Browns是什么呢?
看起来有点晕是不是? 这里是翻译:把土豆切成小块,通常再加入洋葱,之后炸至棕色,这样做成的菜。
也就是,薯饼。(当然,麦当劳的可能没加洋葱
家庭制作的Hash Browns就只需要切成小块,然后开炸,直到两面棕黄即可~
侵删 图片来源:https://www.allrecipes.com/recipe/57783/emilys-famous-hash-browns/
Hash意思的总结
介绍了这么多,我想Hash的意思就很明显了,直接用中文就是 —— 切碎(或者你喜欢当成剁碎也行)。这也表达了哈希函数最直接的作用,把一大堆对象(组成了土豆)切碎了。之后很多的工具类,就能够根据切碎后的一个个对象(土豆丝)的哈希值(可以理解为表示切下来后落在哪个位置),来进行其他操作。比如HashMap根据Hash值把对象分成不同部分来管理。
所以一开始的问题也有了答案,那么只需要告诉小朋友土豆和薯饼的故事就好~
可以看到,相比中文母语者有额外去学习理解一遍的负担,英语母语者看名字就能大致理解下用途,这也是他们学习编程的一个优势吧。