It's now about 4 years of development that I'm using, hearing, talking about, and implementing hash tables and hash functions. But I really never understand why it's called hash?

I remember the first days I started programming, this term was kind'of cumbersome terminology to me. I never figured out what is it, based on its name. I just experimentally understood what it does and why and when should we use it.

However, I still sometimes try to figure out why it's called hash. I have no problem with table or function and to be honest, they are pretty deductive, rational terms. However, I think better words could be used instead of hash, like key, or uniqueness. Don't key table or uniqueness table.

According to my dictionary, hash means:


Fried dish of potato and meats (highly irrelevant)
# symbol (AKA number sign, pound sign, etc.) (still irrelevant, maybe just a mis-nomenclature) 
Apply algorithm to character string (still has nothing to do with uniqueness, which is the most important feature of a hash table)
Cut food
Another term for hashish


Does anyone know why it's called hash?

According to wikipedia, it refers to the hash function.  If you want to go a step further, the wiki page for hash function says that the use of the word "hash" in hash function originated like so:


  The term "hash" comes by way of analogy with its non-technical
  meaning, to "chop and mix". Indeed, typical hash functions, like the
  mod  operation, "chop" the input domain into many sub-domains that get
  "mixed" into the output range to improve the uniformity of the key
  distribution.

