Hans Peter Luhn and the Birth of the Hashing Algorithm
spectrum.ieee.org
spectrum.ieee.org
The oracle works with bit strings all of the same length. Each bit position represents a single cocktail.
Each ingredient card is a bit string. Each bit is 1 (opaque) if the ingredient is needed for the cocktail at that bit position.
You take all the ingredients you have and discard their bitstrings ("turn down their cards"). Then you or together the remaining bitstrings of all of the ingredients you don't have (look through their overlapping cards). In other words, not having an ingredient forbids certain cocktails. Any bit positions that remain zero (transparent all the way through to the key card on the back showing the names of the cocktails at each position) are cocktails that you have enough ingredients to make.
Using opacity to represent bitwise "or" is pretty clever. Turning down the ingredient cards you don't have is really clever. I kind of want to make one of these now.
I said bitwise arithmetic, not binary numbers. :)
> Everything you just described is just a physical representation of sets and operations on sets.
Sure, and how is the set represented and its operations implemented? In the Oracle, each set is represented by a bitmask with a bit position for each element in the set. Set operations are implemented as bitwise operations on those bitmasks.
Back in 1953, IBM was investigating disk storage for record retrieval in large volumes of data. Seek/read time on these machines was on the order of a second, so a 10 level binary search could take around 10 seconds of total time. Unfortunately for IBM, this wasn't an improvement over the best human-driven manual lookup processes... which is an issue if you're trying to sell/lease expensive computer hardware.
With this as motivation, Luhn then essentially invented what we now would know as a hash table, which was key to the 1956 RAMAC release.
I am curious what human-driven manual lookup processes existed that could be in a single second?
https://en.wikipedia.org/wiki/Tub_file
(Note that the overall search takes 10 seconds, not the one second of an individual seek... so the human had a bit more time to be competitive with the disk than a single second. :-) )
I'm not saying it's necessarily fair, just that there's value in that 'last mile' between a long line of development and the end user of an idea or product.
If you look around you at various safety systems, they were almost all paid for in souls.
The New London School and oderised natural gas is one example I've learnt of in the past year or so. But that's only one of very, very many.
Perfectly obvious in hindsight but I never made the connection.
Ctrl+F the article for "hash". What Luhn invented was a checksum, one that is apparently still used today in IMEIs (among other things), but the article says nothing about him furthering checksums into hash functions (and there is quite a distinction). Sure, a hash function can hardly be invented without going through the checksum stage, but it's like saying the person who discovered there's oil in the ground invented cars just because he laid the foundation.
Agreed there is a distinction, but he invented hashing too.
Citations:
> Within this nascent computer world, Luhn cut an unusual figure. An elegant dresser throughout his life, Luhn knew more about the textiles industry than computer science when he arrived at IBM in 1941.
So it might be more the exception than the rule there as well.