I am confused with the wide array of ways to implement existing data types in hardware as it all seems a bit illusory.
There's no such thing as a software stack or a hardware stack; a "hardware stack" is merely an implementation of a first in, last out specification of bits, but there's no real "stack" anywhere.
Arrays are pointers to a group of bits; there's no real indices sitting in memory.
Hash tables are just pointers as well.
Vectors are the same as arrays; they just enable the ability to change the values.
They're all illusory, and mask the bits that are there.
Why waste time with all of this when you can just manipulate the bits, the real data, and not some implementation of illusory data from some data type specification?