Ahora estoy usando, escuchando, hablando e implementando tablas hash y funciones hash sobre 4 años de desarrollo. Pero realmente nunca entiendo por qué se llama hash?
Recuerdo los primeros días que comencé a programar, este término era para mí una terminología engorrosa . Nunca descubrí qué es, basándome en su nombre . Acabo de entender experimentalmente lo que hace y por qué y cuándo deberíamos usarlo .
Sin embargo, todavía a veces trato de entender por qué se llama hash . No tengo ningún problema con la tabla o la función y, para ser sincero, son términos bastante deductivos y racionales. Sin embargo, creo que se podrían usar mejores palabras en lugar de hash, como key o uniqueness . No escriba la tabla o la tabla de unicidad .
Según mi diccionario, hash significa:
- Plato frito de patatas y carnes (muy irrelevante)
- símbolo # (signo de número AKA, signo de libra, etc.) (aún irrelevante, tal vez solo una nomenclatura incorrecta)
- Aplicar algoritmo a la cadena de caracteres (todavía no tiene nada que ver con la unicidad , que es la característica más importante de una tabla hash)
- Cortar la comida
- Otro término para hachís
¿Alguien sabe por qué se llama hash?
Respuestas:
Según Wikipedia, se refiere a la función hash . Si desea ir un paso más allá, la página wiki para la función hash dice que el uso de la palabra "hash" en la función hash se originó así:
fuente
En francés, una tabla hash se llama "table de hachage", el verbo relacionado "hacher" significa picar / picar (comida principalmente). El verbo
to hash
tiene el mismo significado en inglés.Entonces, como otros han señalado, se llama hash, porque corta su entrada que pone en pedazos en diferentes lugares (las entradas de su tabla).
fuente
El número 3 tiene todo que ver con eso. De Wikipedia :
Por lo tanto, una tabla hash realmente no almacena valores basados en una clave; almacena valores basados en una versión hash de esa clave.
fuente
las tablas hash se llaman así por usar código hash y está relacionado con "cortar comida".
Piénselo de esta manera: toma su bonito objeto bonito, como una fruta, luego lo pica para que comience a verse como cualquier otra cosa, solo un número, ya no tiene más estructura. Esa pieza de "comida cortada" se usa en la tabla hash para descubrir tu bonito objeto bonito.
El código hash encuentra un cubo en la tabla donde su objeto bonito se encuentra en una pequeña compañía de otros con el mismo código hash. Dentro de esta pequeña empresa, el objeto se busca utilizando la verificación de igualdad, que se espera que sea mucho más lenta que la búsqueda de hash, pero no es un gran problema ya que solo hay unos pocos (la mayoría de los otros objetos ya se ignoran gracias al hash rápido) .
fuente
El hachís (como cortar en trozos pequeños, triturar, etc.) toma una entrada (comida o, a veces, supervillanos) y la transforma en una salida relativamente homogénea. Es decir, no importa lo que tenías al principio, al final solo tienes hash. Y una cucharada de hash es tan útil como todo el hash para determinar cuál fue la entrada (suponiendo que su hash machine funcione correctamente).
Por lo tanto, el hash puede reducir cualquier objeto comestible o malvado en una cucharada de hash, donde dos objetos diferentes producen hashes diferentes, mientras que dos objetos iguales producen hashes iguales. Lo que significa que si dos supervillanos cayeron en su máquina de hash, es suficiente comparar sus hashes para determinar si uno era un clon del otro.
En cierto modo, las funciones de hash en informática son un poco similares. Toman una entrada completa de diferentes tamaños y semánticas, y, en pocas palabras, simplemente la cortan en pedazos y los mezclan y cortan la secuencia resultante en pedazos y los mezclan y así sucesivamente. Al final tienes una cucharada (n bytes) de la entrada que has hash.
fuente