Algunos lenguajes de scripts, como Python y Javascript, tienen matrices (también conocidas como listas) como un tipo de datos separado de las tablas hash (también conocidos como diccionarios, mapas, objetos). En otros lenguajes de scripts, como PHP y Lua, una matriz es simplemente una tabla hash cuyas claves son enteros. (La implementación puede optimizarse para ese caso especial, como se hace en la versión actual de Lua, pero eso es transparente para la semántica del lenguaje.)Matrices como tipo separado
¿Cuál es el mejor enfoque?
El enfoque unificado es más elegante en el sentido de tener una cosa en lugar de dos, aunque la ganancia no es tan grande como podría parecer a primera vista, ya que todavía tiene que tener la noción de iterando sobre las teclas numéricas específicamente.
El enfoque unificado es posiblemente más flexible. Puede comenzar con matrices anidadas, encontrar que necesita anotarlas con otras cosas, y simplemente agregar las anotaciones, sin tener que volver a trabajar las estructuras de datos para intercalar las matrices con tablas hash.
En términos de eficiencia, parece ser más o menos un lavado (siempre que la implementación se optimice para el caso especial, como lo hace Lua).
¿Qué me falta? ¿El enfoque separado tiene alguna ventaja?
La simplicidad conceptual es un punto válido; al pensarlo un poco más, las tablas en realidad tienen dos requisitos adicionales, una tabla principal (para la programación basada en objetos) y un parámetro de función hash (para que pueda hacer tablas hash según sus propios criterios). Si también intentas arrojar semántica de secuencia en la misma mezcla, no estoy tan seguro de que el resultado sea aún tratable conceptualmente. – rwallace