Cette idée était originale avec Roberto Ierusalimschy et le reste de l'équipe Lua.J'ai entendu Roberto en parler à l'atelier MIT Lightweight Languages en 2003, et dans cet exposé, il a discuté des travaux antérieurs et a argumenté de manière convaincante que l'idée était nouvelle. Je ne sais pas si d'autres langues l'ont copié depuis.
L'Awk original a un modèle de langage un peu plus restreint que Lua; un nombre ou une chaîne peut être utilisé comme clé dans un tableau, mais les tableaux eux-mêmes ne sont pas des valeurs de première classe: un tableau doit avoir un nom et un tableau ne peut pas être utilisé comme clé dans le tableau. En ce qui concerne l'implémentation, j'ai vérifié les sources pour l'Awk original tel que maintenu par Brian Kernighan, et l'implémentation d'Awk utilise une table de hachage, pas la structure hybride tableau/table de Lua. La distinction est importante car dans Lua, lorsqu'une table est utilisée avec des clés entières consécutives, la surcharge de l'espace est la même que pour un tableau C. C'est pas vrai pour l'original Awk.
Je n'ai pas pris la peine d'étudier toutes les implémentations ultérieures de awk, par exemple, Gnu Awk, mawk, et ainsi de suite.
Fortress et Clojure traitent également les cartes en fonction de leurs clés et tableaux en fonction de leurs indices. Ce qui, après tout, ils * sont *. –
La question concerne l'implémentation, pas le modèle de langage. L'awk original, toujours entretenu par Brian Kernighan, utilise une table de hachage. –
Vous avez raison, j'ai complètement raté la marque! Je ne peux pas me rétrograder, donc +1 à votre réponse. –