Esta idea fue original con Roberto Ierusalimschy y el resto del equipo de Lua.Escuché a Roberto dar una conferencia al respecto en el taller de Lenguas Ligeras del MIT en 2003, y en esta charla discutió el trabajo previo y argumentó convincentemente que la idea era nueva. No sé si otros idiomas lo han copiado desde entonces.
El Awk original tiene un modelo de lenguaje algo más restringido que Lua; ya sea un número o una cadena se puede utilizar como una clave en una matriz, pero las matrices en sí no son valores de primera clase: una matriz debe tener un nombre, y una matriz no se puede utilizar como una clave en la matriz.
En cuanto a la implementación, he comprobado las fuentes para el Awk original mantenido por Brian Kernighan, y la implementación de Awk utiliza una tabla hash, no la estructura de tabla/matriz híbrida de Lua. La distinción es importante porque en Lua, cuando se usa una tabla con claves enteras consecutivas, la sobrecarga del espacio es la misma que para una matriz en C. Esto es no verdadero para Awk original.
No me he molestado en investigar todas las implementaciones posteriores de awk, por ejemplo, Gnu Awk, mawk, etc.
Fortress y Clojure también tratan los mapas como funciones de sus claves y matrices como funciones de sus índices. Que, después de todo, ellos * son *. –
La pregunta es acerca de la implementación, no del modelo de lenguaje. El awk original, mantenido por Brian Kernighan, usa una tabla hash. –
Tienes razón, ¡me perdí por completo la marca! No puedo rechazar mi voto, así que +1 a tu respuesta. –